summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Michael Brummer <jan.brummer@tabos.org>2023-05-03 17:07:48 +0200
committerGitHub <noreply@github.com>2023-05-03 17:07:48 +0200
commit66a5f49826b4c9678a7c3003f7a57079df931adc (patch)
treeb529463e00c39ef52075885c1d15a7b511caa47a
parentf490cdf35765813ea23b15ae248853f76a5da172 (diff)
downloadlibproxy-git-66a5f49826b4c9678a7c3003f7a57079df931adc.tar.gz
Update architecture documentation (#206)
-rw-r--r--docs/architecture.md36
1 files changed, 35 insertions, 1 deletions
diff --git a/docs/architecture.md b/docs/architecture.md
index 35c3596..51217cc 100644
--- a/docs/architecture.md
+++ b/docs/architecture.md
@@ -1,4 +1,4 @@
-Title: Architecture - Difference between library and D-Bus service
+Title: Architecture of Libproxy
Slug: Architecture
@@ -13,3 +13,37 @@ previous versions of Libproxy. To name a few advantages:
- Automatic documentation out of code
- Gobject Introspection bindings for almost every programming language
+## Plugin types
+
+Libproxy is using internal plugins to extend it's knowledge about different
+configuration options and handling of PAC files. Most of those plugins are
+configuration plugins:
+
+- config-env
+- config-gnome
+- config-kde
+- config-osx
+- config-sysconfig
+- config-windows
+
+Then there is only one pacrunner plugin which handles parsing of JS PAC files:
+
+- pacrunner-duktape
+
+## Configuration plugin priority
+
+Configuration plugins are executed in a specific priority:
+
+- PX_CONFIG_PRIORITY_FIRST (highest)
+- PX_CONFIG_PRIORITY_DEFAULT
+- PX_CONFIG_PRIORITY_LAST (lowest)
+
+Highest priority is used in `config-env` and lowest priority in
+`config-sysconfig`. All the other plugins are running on default priority.
+
+### Configuration plugin enforcement
+
+In case you want to use a specific configuration plugin for a given application,
+you are able to overwrite the priority. Therefore set a environment variable
+`PX_FORCE_CONFIG=config-name` and libproxy will just use this configuration
+plugin.