From 66a5f49826b4c9678a7c3003f7a57079df931adc Mon Sep 17 00:00:00 2001 From: Jan-Michael Brummer Date: Wed, 3 May 2023 17:07:48 +0200 Subject: Update architecture documentation (#206) --- docs/architecture.md | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) 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. -- cgit v1.2.1