I’m doing a GSoC project this summer which in a single line is to “handle proxies in our system”. Some of us may not have encountered this headache ever . The problem starts arising from the time we start thinking of multiple connections with proxies enabled . Firefox or any browser can’t be helpful in this case ( it doesn’t know which proxy to choose for an inserted URL). Env vars like http_proxy, https_proxy ? No!. We can’t use a LAN thing with a VPN, so there’s no scope for a generic proxy ( Proxies are meant to be separate for each connection like all other network resources ) . So what we needed ?
- Obtain Proxies for multiple connections .
- Should “Just work” (behind silently).
- Proxies shouldn’t be limited to browsers, available to all clients.
“Just Work” philosophy comes from NetworkManager which i understand is “minimize user input as much as you can” . WPAD via DHCP is the most efficient and safest way to maintain/obtain proxies for/from our networks . So, this project is basically performing WPAD from core of NetworkManager and store the details to a storehouse(say), Pacrunner in this case. Clients should be asking Pacrunner “what is the proxy for this URL?” , and Pacrunner will answer using the details stored by NM. Exchanges here take place via DBus.
To be in par with “Just Work” philosophy auto mode (DHCP->WPAD) will be default until someone opts for “manual”. So, there’s the plan to provide a simple window for manually setting up proxies, if users want to override WPAD obtained value . I haven’t the UI design yet, we never worried for it . It will be simple with Entry fields (assume it to look as we have for firefox) but that would be available for each connection . We’ll simply need to $nm-connection-editor <return> , click on “edit” of whichever connection we like to edit , a tab named “Proxy” will be there .
I’m lucky to work with David Woodhouse as my mentor , a very-2 supporting person . Pacrunner part was independent and we have finished that, code is in master . NM part has been divided into two steps. We are almost done with writing the first part. I hope to see our code in NM as soon as i can do .