No edit summary |
No edit summary |
||
Line 20: | Line 20: | ||
==Timeline== | ==Timeline== | ||
*Find proxy setting propagation sources | *Find proxy setting propagation sources <span style="color:green">DONE!</span> | ||
*Get NetworkManager & build on Fedora | *Get NetworkManager & build on Fedora <span style="color:green">DONE!</span> | ||
*Understand NetworkManager codebase | *Understand NetworkManager codebase <span style="color:green">DONE!</span> | ||
*Implement NMSettingProxy | *Implement NMSettingProxy <span style="color:yellow">DOING!</span> | ||
*Implement NMProxyManager and its DBUS Interfaces | *Implement NMProxyManager and its DBUS Interfaces | ||
*Write dispatcher scripts (using gsettings, kwriteconfig, profile.d scripts) | *Write dispatcher scripts (using gsettings, kwriteconfig, profile.d scripts) | ||
Line 32: | Line 32: | ||
==Current Progress== | ==Current Progress== | ||
:This section will be changing continuously. | :This section will be changing continuously. | ||
===Proxy Setting Propagation sources=== | ===Proxy Setting Propagation sources=== | ||
====Gnome Applications=== | |||
Use key-values in org.gnome.system.proxy from gsettings: | |||
<source lang="bash"> | |||
gsettings list-recursively org.gnome.system.proxy | |||
</source> | |||
<source> | |||
org.gnome.system.proxy autoconfig-url '' | |||
org.gnome.system.proxy ignore-hosts ['localhost', '127.0.0.0/8'] | |||
org.gnome.system.proxy mode 'manual' | |||
org.gnome.system.proxy use-same-proxy false | |||
org.gnome.system.proxy.ftp host 'proxy.iiit.ac.in' | |||
org.gnome.system.proxy.ftp port 8080 | |||
org.gnome.system.proxy.http authentication-password '' | |||
org.gnome.system.proxy.http authentication-user '' | |||
org.gnome.system.proxy.http enabled false | |||
org.gnome.system.proxy.http host 'proxy.iiit.ac.in' | |||
org.gnome.system.proxy.http port 8080 | |||
org.gnome.system.proxy.http use-authentication false | |||
org.gnome.system.proxy.https host 'proxy.iiit.ac.in' | |||
org.gnome.system.proxy.https port 8080 | |||
org.gnome.system.proxy.socks host '' | |||
org.gnome.system.proxy.socks port 0 | |||
</source> | |||
===KDE Applications=== | |||
Use kioslaverc data configures using kwriteconf: | |||
===Console Applications=== | |||
$PROTOCOL_PROXY variables are sourced from /etc/profile.d/ scripts. | |||
These variables have to be set: | |||
ALL_PROXY HTTP_PROXY HTTPS_PROXY FTP_PROXY SOCKS_PROXY NO_PROXY | |||
all_proxy http_proxy https_proxy ftp_proxy socks_proxy no_proxy | |||
===Building NetworkManager on Fedora=== | ===Building NetworkManager on Fedora=== | ||
===Codebase: files to change=== | ===Codebase: files to change=== |
Revision as of 15:11, 28 April 2013
Integrate Proxy Settings with NetworkManager
Overview
Currently Proxy Settings are handled separately (by gnome-control-center in gnome) from NetworkManager. However, since proxy settings are connection dependent, they have to be updated as connections get (de-)activated. NetworkManager which handles that is the perfect place to do it.
Needs Addressed
It makes proxy setting configuration and its propagation to all desktop and console processes automated on a per-connection basis instead of the user setting them each time manually on connection changes.
Relevant Experience: I understand the D-BUS architecture and NetworkManager's code base. I have also thoroughly investigated how applications (of gnome, kde and terminal) seek proxy information as a first step. That said, I understand the concepts of networking and can effortlessly read and write programs in C\C++\bash.
Implementation
An NMProxyManager Gobject derivative class will be added to NetworkManager and initialized during start. This new module will expose the proxy settings over DBUS and call relevant executables to set the proxy settings, as connections get activated\deactivated. For settings, an NMSettingProxy subclass of NMSetting has to be implemented.
Timeline
- Find proxy setting propagation sources DONE!
- Get NetworkManager & build on Fedora DONE!
- Understand NetworkManager codebase DONE!
- Implement NMSettingProxy DOING!
- Implement NMProxyManager and its DBUS Interfaces
- Write dispatcher scripts (using gsettings, kwriteconfig, profile.d scripts)
- Make them build-configurable (update Makefiles)
- Test it on gnome, kde and console applications
- Send a pull request
Current Progress
- This section will be changing continuously.
Proxy Setting Propagation sources
=Gnome Applications
Use key-values in org.gnome.system.proxy from gsettings: <source lang="bash"> gsettings list-recursively org.gnome.system.proxy </source> <source> org.gnome.system.proxy autoconfig-url org.gnome.system.proxy ignore-hosts ['localhost', '127.0.0.0/8'] org.gnome.system.proxy mode 'manual' org.gnome.system.proxy use-same-proxy false org.gnome.system.proxy.ftp host 'proxy.iiit.ac.in' org.gnome.system.proxy.ftp port 8080 org.gnome.system.proxy.http authentication-password org.gnome.system.proxy.http authentication-user org.gnome.system.proxy.http enabled false org.gnome.system.proxy.http host 'proxy.iiit.ac.in' org.gnome.system.proxy.http port 8080 org.gnome.system.proxy.http use-authentication false org.gnome.system.proxy.https host 'proxy.iiit.ac.in' org.gnome.system.proxy.https port 8080 org.gnome.system.proxy.socks host org.gnome.system.proxy.socks port 0 </source>
KDE Applications
Use kioslaverc data configures using kwriteconf:
Console Applications
$PROTOCOL_PROXY variables are sourced from /etc/profile.d/ scripts. These variables have to be set: ALL_PROXY HTTP_PROXY HTTPS_PROXY FTP_PROXY SOCKS_PROXY NO_PROXY all_proxy http_proxy https_proxy ftp_proxy socks_proxy no_proxy
Building NetworkManager on Fedora
Codebase: files to change
Adding NMSettingProxy
Currently doing.