gnome-proxy and NM



As some of you may have seen, I announced
( http://mail.gnome.org/archives/desktop-devel-list/2007-January/msg00390.html ) a proof of concept for proxy configuration.  This is of course just a proof of concept and not an actual release.  Currently, gnome-proxy makes heavy use of gconf.  However, with NM moving away from gconf, I thought I would write to see if there is any interest in having similar functionality in NM itself.

This functionality would be limited to:
  1. Proxy autoconfiguration (PAC)
  2. PAC autodetection (WPAD)
  3. Per-network proxy settings
  4. GUI to configure per-network proxy settings (optional)

Though I'm not sure if some of this may go against the "no-profiles"
design goal of NetworkManager, it should generally JustWork.  Here are
some use cases:

John is a consultant.  Each time he arrives at a different firm, he has
to configure using their local proxy settings.  Most of these sites are
WPAD enabled.  He wishes that when he plugged in or connected via Wifi
that his computer would JustWork.

John occasionally has a client FooCorp who has a proxy but doesn't
support WPAD.  Each time he connects to the client's Wifi, he has to
manually adjust his proxy settings.  He wishes that he could specify
"use proxy.foo.com as the proxy for the FooCorp wireless network" and
that every time he connected to that network, it would setup the proxy
for him.

John has a client BarCo whose WPAD enabled wireless network has a stale
PAC that returns a bogus proxy server.  He wishes he could say "Ignore
the PAC on the BarCo wireless network."

Some outline of the current design is in order.  libwpad
http://code.google.com/p/wpad/ does all the heavy WPAD/PAC lifting.
Everything else is pretty much just a matter of per-network settings.
PAC requires that the PAC script be run for each URL requested, so a
D-Bus method to do this is probably in order (see
org.gnome.Proxy.getProxy(url) in gnome-proxy).  That method would
probably return a struct like:
{
  char *pac_url;      // The URL of the discovered PAC (if any)
  int   cacheability; // 0 = no cache, 1 = cache for this protocol, etc
  char *proxy_host;   // The host of the proxy to use (if any)
  int   proxy_port;   // The port of the proxy to use
  int   proxy_type;   // 0 = http, 1 = socks, etc
}


Anyway, I look forward to hearing your comments.

Nathaniel




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]