My last post was an overview of how this project is designed to offer proxy features through NetworkManager. NM is the server part (which configures PacRunner) and PacRunner is there inside to act as an engine for doing all stuff (Interpreting, downloading PAC File etc) Applications can call FindProxyForURL() DBus method on PacRunner DBus interface org.pacrunner.Client .
NM is using org.pacrunner.Manager interface i.e CreateProxyConfiguration() and DestroyProxyConfiguration() methods for configuring PacRunner with multiple configuration (one for each active connection!) . So our VPN has a separate proxy configuration and it won’t mess up with the LAN proxies. Clients just need to call the FindProxyForURL(url, host) in return they will be getting a copy of proxy server address to use for that URL.
The whole project sums up to give a GUI page per connection for proxies , GUI comes as a new tab in nm-connection-editor which many of us may be aware if they use GUI instead of nmcli. I’d also love to write bits for adding new proxy specific nmcli commands once i’m done with finding my code for above things inside NM.
I. None : User doesn’t want to use proxy for this connection (DIRECT internet)
I. Auto : Entries for Pac Url and Pac Script. If none of these is filled the one obtained from DHCP Server is given to PacRunner. If user want to override DHCP obtained WPAD value they just need to fill Pac Url and/or Pac Script entries.
III. Manual : Manual mode let users specify different proxy servers for different protocols and an entry for hosts for which they don’t want a proxy to reach i.e Direct internet connection.