blob: b878ea3d6dca64bd47177602149d1ab56b54860c [file] [log] [blame]
Architecture overview
=====================
The PACrunner daemon is a pretty simple daemon with the main focus on PAC
file execution. It supports a few simple tasks:
1) Configuration interface for PAC URLs
2) Downloading and maintaining PAC files
3) Exectuion of PAC files via Javascript engine
4) Answering of FindProxyForURL client queries
A Connection Manager for example uses Web Proxy Autodiscovery (WPAD) or
other methods to retrieve PAC URLs and then loads them into PACrunner.
When a client application then calls FindProxyForURL the appropriate PAC
file will be executed and its result reported to the client.
+------------+ +------------+ +------------+
| Client 1 | | Client 2 | | Client 3 |
+------------+ +------------+ +------------+
| | libproxy | | libproxy |
| +------------+ +------------+
| | |
| D-Bus | D-Bus | D-Bus
V V V
+------------------------------------------------+
| |
| FindProxyForURL client interface |<-----+
| | |
+------------------------------------------------+ |
| | |
| PACrunner core | |
| | |
| - Javascript engine | |
| - PAC file maintenance | |
| | |
+------------------------------------------------+ |
| | |
| Proxy configuration interface | |
| | |
+------------------------------------------------+ |
^ |
| D-Bus | D-Bus
| |
+------------------------------------------------+ |
| | |
| Connection Manager |------+
| |
+------------------------------------------------+
The design supports multiple Connection Managers, but in most systems it is
expected to have only one.
Some Connection Managers managers will also use FindProxyForURL interface
to determine the proxy when interacting with the Internet.
The default security settings of the proxy configuration interface restricts
modifications to a system level user like root. While the client interface
is available for all applications in the system.