Ignoring a proxy with bzr on Windows

John Arbash Meinel john at arbash-meinel.com
Wed Feb 18 14:24:36 GMT 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Adrian Wilkins wrote:
> I also find this rather irksome.
> 
> The issue is that the common Python libraries will read the proxy config
> of IE, but does not run PAC scripts (which are typically JScript).
> 
> If IE is configured statically, I believe that works properly.
> 
> Python will also respect the HTTP_PROXY environment variable, which
> takes precedence over the IE config, but I've not found a way to make it
> say "NO proxy" (using either urllib2 or pycurl).
> 
> Maybe this :
> http://code.google.com/p/pacparser/wiki/PacFilesInPythonWebclients
> 
> Would be some help... I'd really like to see something like this in the
> main Python library (batteries included, remember?) since this is such a
> common scenario. I can't believe that all Python developers are lone
> wolves operating outside of a corporate firewall.
> 
> So I don't think this is ultimately a Bazaar issue ; but Bazaar will
> have to cope with it until it improves.
> 
> 

There is the environment variable "NO_PROXY" that we do support. I'm not
entirely sure how it gets set up. But certainly:

def proxy_bypass(self, host):
    """Check if host should be proxied or not"""
    no_proxy = self.get_proxy_env_var('no', default_to=None)
    if no_proxy is None:
        return False
    hhost, hport = urllib.splitport(host)
    # Does host match any of the domains mentioned in
    # no_proxy ? The rules about what is authorized in no_proxy
    # are fuzzy (to say the least). We try to allow most
    # commonly seen values.
    for domain in no_proxy.split(','):
        dhost, dport = urllib.splitport(domain)
        if hport == dport or dport is None:
            # Protect glob chars
            dhost = dhost.replace(".", r"\.")
            dhost = dhost.replace("*", r".*")
            dhost = dhost.replace("?", r".")
            if re.match(dhost, hhost, re.IGNORECASE):
                return True
    # Nevertheless, there are platform-specific ways to
    # ignore proxies...
    return urllib.proxy_bypass(host)


It may also depend if we are using "pycurl" or "urllib". Can you try
setting "no_proxy" and then using "http+urllib://..." ?

John
=:->

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkmcGiQACgkQJdeBCYSNAAOABACcDS1X3fLMufi0nngK2Gw1IwHS
wFoAoKwzkTQjJO4imEjFkvBd3EHLiN1l
=GUOh
-----END PGP SIGNATURE-----



More information about the bazaar mailing list