diff --git a/README.md b/README.md
index 4bee18c..c98e8df 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,510 @@
-# rougail-tutorials_builder
+---
+gitea: none
+include_toc: true
+---
+# Tutorial description files
+## proxy
+
+### 00-proxy.yml
+
+```yaml
+version: 1.1
+proxy_mode:
+ description: Configure Proxy Access to the Internet
+ choices:
+ - No proxy
+ - Auto-detect proxy settings for this network
+ - Use system proxy settings
+ - Manual proxy configuration
+ - Automatic proxy configuration URL
+ default: No proxy
+```
+### 10-manual.yml
+
+```yaml
+version: 1.1
+manual:
+ description: Manual proxy configuration
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode != 'Manual proxy configuration' %}
+ the proxy mode is not manual
+ {% endif %}
+ description: if the value of "proxy.proxy_mode" is not "Manual proxy configuration"
+
+ http_proxy: # HTTP Proxy
+ address:
+ description: HTTP address
+ type: domainname
+ params:
+ allow_ip: true
+ port:
+ description: HTTP Port
+ type: port
+ default: '8080'
+
+ use_for_https: true # Also use this proxy for HTTPS
+
+ '{{ suffix }}_proxy':
+ description: '{{ suffix }} Proxy'
+ type: dynamic
+ dynamic:
+ - HTTPS
+ - SOCKS
+ hidden:
+ type: jinja
+ jinja: |
+ {% if suffix == 'HTTPS' and _.use_for_https %}
+ HTTPS is same has HTTP
+ {% endif %}
+ params:
+ suffix:
+ type: suffix
+ description: |
+ if HTTPS and HTTPS is same has HTTP
+
+ address:
+ description: Address
+ type: domainname
+ params:
+ allow_ip: true
+ default:
+ type: variable
+ variable: __.http_proxy.address
+
+ port:
+ description: Port
+ type: port
+ default:
+ type: variable
+ variable: __.http_proxy.port
+
+ version:
+ description: SOCKS host version used by proxy
+ choices:
+ - v4
+ - v5
+ default: v5
+ disabled:
+ type: jinja
+ jinja: |
+ {% if suffix == 'HTTPS' %}
+ if HTTPS
+ {% endif %}
+ params:
+ suffix:
+ type: suffix
+ description: |
+ if not SOCKS
+```
+### 20-auto.yml
+
+```yaml
+version: 1.1
+auto:
+ description: Automatic proxy configuration URL
+ type: web_address
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode != 'Automatic proxy configuration URL' %}
+ the proxy mode is not automatic
+ {% endif %}
+ description: |
+ if "proxy.proxy_mode" is not "automatic proxy configuration URL"
+```
+### 30-no_proxy.yml
+
+```yaml
+version: 1.1
+no_proxy:
+ description: Address for which proxy will be desactivated
+ type: domainname
+ params:
+ allow_ip: true
+ allow_cidr_network: true
+ allow_without_dot: true
+ allow_startswith_dot: true
+ multi: true
+ mandatory: false
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode == 'No proxy' %}
+ proxy mode is no proxy
+ {% endif %}
+ description: if "proxy.proxy_mode" is "No proxy"
+ test:
+ - .mozilla.org
+ - .net.nz
+ - 192.168.1.0/24
+ help: Connections to localhost, 127.0.0.1/8 and ::1 are never proxied
+```
+### 40-prompt_authentication.yml
+
+```yaml
+version: 1.1
+prompt_authentication:
+ description: Prompt for authentication if password is saved
+ default: true
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode == 'No proxy' %}
+ proxy mode is no proxy
+ {% endif %}
+ description: if "proxy.proxy_mode" is "No proxy"
+```
+### 50-proxy_dns_socks5.yml
+
+```yaml
+version: 1.1
+proxy_dns_socks5:
+ description: Use proxy DNS when using SOCKS v5
+ default: false
+ mode: advanced
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode != 'Manual proxy configuration' %}
+ the proxy mode is not manual
+ {% elif socks_version == 'v4' %}
+ socks version is v4
+ {% endif %}
+ params:
+ socks_version:
+ type: variable
+ variable: _.manual.socks_proxy.version
+ propertyerror: false
+ description: |
+ if "proxy.proxy_mode" is not "Manual proxy configuration" or "proxy.manual.socks_proxy.version" is "v4"
+```
+### 60-dns_over_https.yml
+
+```yaml
+version: 1.1
+dns_over_https: # DNS over HTTPS
+
+ enable_dns_over_https: false # Enable DNS over HTTPS
+
+ provider:
+ description: Use Provider
+ choices:
+ - Cloudflare
+ - NextDNS
+ - Custom
+ default: Cloudflare
+ disabled:
+ type: jinja
+ jinja: |
+ {% if not _.enable_dns_over_https %}
+ Enable DNS over HTTPS is False
+ {% endif %}
+ description: if "proxy.dns_over_https.enable_dns_over_https" is not False
+
+ custom_dns_url:
+ description: Custom DNS URL
+ type: web_address
+ disabled:
+ type: jinja
+ jinja: |
+ {% if provider is not defined or provider != 'Custom' %}
+ provider is not custom
+ {% endif %}
+ params:
+ provider:
+ type: variable
+ variable: _.provider
+ propertyerror: false
+ description: if "proxy.dns_over_https.provider" is "Custom"
+ validators:
+ - type: jinja
+ jinja: |
+ {% if _.custom_dns_url.startswith('http://') %}
+ only https is allowed
+ {% endif %}
+ description: must starts with 'https://' only
+```
+## foxyproxy
+
+### 00-foxyproxy.yml
+
+```yaml
+version: 1.1
+proxies:
+ description: Proxy configuration
+ _type: leadership
+
+ title:
+ description: Title or Description
+ multi: true
+
+ color:
+ description: Color
+
+ type:
+ description: Type
+ type: choice
+ choices:
+ - HTTP
+ - HTTPS/SSL
+ - SOCKS4
+ - SOCKS5
+ - PAC URL
+ - WPAD
+ - System (use system settings)
+ - Direct (no proxy)
+ default: Direct (no proxy)
+
+ address:
+ description: IP address, DNS name, server name
+ multi: true
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
+ proxy does not need address
+ {% endif %}
+ description: &needs_address |
+ if type not in:
+ - HTTP
+ - HTTPS/SSL
+ - SOCKS4
+ - SOCKS5
+
+ default:
+ type: jinja
+ jinja: |
+ {% if firefox_address is not undefined %}
+ {{ firefox_address }}
+ {% endif %}
+ params:
+ firefox_address:
+ type: variable
+ variable: proxy.manual.http_proxy.address
+ propertyerror: false
+ description: copy HTTP address if proxy is not "Manual"
+
+ port:
+ description: Port
+ type: port
+ default:
+ type: jinja
+ jinja: |
+ {% if firefox_port is not undefined %}
+ {{ firefox_port }}
+ {% endif %}
+ params:
+ firefox_port:
+ type: variable
+ variable: proxy.manual.http_proxy.port
+ propertyerror: false
+ description: copy HTTP port if proxy is not "Manual"
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
+ proxy does not need port
+ {% endif %}
+ description: *needs_address
+
+ username:
+ description: Username
+ type: unix_user
+ mandatory:
+ type: jinja
+ jinja: |
+ {% if _.password %}
+ username is mandatory
+ {% endif %}
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
+ proxy does not need username
+ {% endif %}
+ description: *needs_address
+
+ password:
+ description: Password
+ type: secret
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
+ proxy does not need password
+ {% endif %}
+ description: *needs_address
+
+ url:
+ description: URL
+ type: web_address
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.type not in ['PAC URL', 'WPAD'] %}
+ proxy does not need url
+ {% endif %}
+ description: |
+ if type is not in:
+ - PAC URL
+ - WPAD
+```
+### 10-redefine.yml
+
+```yaml
+version: 1.1
+proxies:
+ username:
+ redefine: true
+ mandatory: false
+
+ password:
+ redefine: true
+ hidden:
+ type: jinja
+ jinja: |
+ {% if not _.username %}
+ no username defined
+ {% endif %}
+ description: if username is not defined
+```
+# Generated documentation
+
+## Variables for "proxy"
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **proxy.proxy_mode**
[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Configure Proxy Access to the Internet.
**Choices**:
- No proxy ← (default)
- Auto-detect proxy settings for this network
- Use system proxy settings
- Manual proxy configuration
- Automatic proxy configuration URL |
+
+### Manual proxy configuration
+
+`basic` _`disabled`_
+
+**Disabled**: if the value of "proxy.proxy_mode" is not "Manual proxy configuration"
+
+#### HTTP Proxy
+
+`basic`
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **proxy.manual.http_proxy.address**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` | HTTP address.
**Validator**: the domain name can be an IP |
+| **proxy.manual.http_proxy.port**
[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | HTTP Port.
**Default**: 8080 |
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **proxy.manual.use_for_https**
[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Also use this proxy for HTTPS.
**Default**: True |
+
+#### "HTTPS Proxy" ou "SOCKS Proxy"
+
+`standard` _`hidden`_
+
+**Hidden**: if HTTPS and HTTPS is same has HTTP
+
+
+Cette famille constuit des familles dynamiquement.
+
+**Suffixes**:
- HTTPS
- SOCKS
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **proxy.manual.https_proxy.address** +
**proxy.manual.socks_proxy.address**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Address.
**Validator**: the domain name can be an IP
**Default**: the value of the variable "proxy.manual.http_proxy.address" |
+| **proxy.manual.https_proxy.port** +
**proxy.manual.socks_proxy.port**
[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Port.
**Default**: the value of the variable "proxy.manual.http_proxy.port" |
+| **proxy.manual.https_proxy.version** +
**proxy.manual.socks_proxy.version**
[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` _`disabled`_ | SOCKS host version used by proxy.
**Choices**:
- v4
- v5 ← (default)
**Disabled**: if not SOCKS
|
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **proxy.auto**
[`web_address`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` _`disabled`_ | Automatic proxy configuration URL.
**Disabled**: if "proxy.proxy_mode" is not "automatic proxy configuration URL"
|
+| **proxy.no_proxy**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` _`disabled`_ `unique` `multiple` | Address for which proxy will be desactivated.
Connections to localhost, 127.0.0.1/8 and ::1 are never proxied.
**Validators**:
- the domain name can starts by a dot
- the domain name can be only a hostname
- the domain name can be an IP
- the domain name can be network in CIDR format
**Examples**:
- .mozilla.org
- .net.nz
- 192.168.1.0/24
**Disabled**: if "proxy.proxy_mode" is "No proxy" |
+| **proxy.prompt_authentication**
[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` _`disabled`_ | Prompt for authentication if password is saved.
**Default**: True
**Disabled**: if "proxy.proxy_mode" is "No proxy" |
+
+### DNS over HTTPS
+
+`basic`
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **proxy.dns_over_https.enable_dns_over_https**
[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Enable DNS over HTTPS.
**Default**: False |
+| **proxy.dns_over_https.provider**
[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` _`disabled`_ | Use Provider.
**Choices**:
- Cloudflare ← (default)
- NextDNS
- Custom
**Disabled**: if "proxy.dns_over_https.enable_dns_over_https" is not False |
+| **proxy.dns_over_https.custom_dns_url**
[`web_address`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` _`disabled`_ | Custom DNS URL.
**Validator**: must starts with 'https://' only
**Disabled**: if "proxy.dns_over_https.provider" is "Custom" |
+
+
+## Variables for "foxyproxy"
+
+### Proxy configuration
+
+`basic`
+
+
+Cette famille contient des listes de bloc de variables.
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **foxyproxy.proxies.title**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` `unique` `multiple` | Title or Description. |
+| **foxyproxy.proxies.color**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` | Color. |
+| **foxyproxy.proxies.type**
[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Type.
**Choices**:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
- PAC URL
- WPAD
- System (use system settings)
- Direct (no proxy) ← (default) |
+| **foxyproxy.proxies.address**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` _`disabled`_ `multiple` | IP address, DNS name, server name.
**Default**: copy HTTP address if proxy is not "Manual"
**Disabled**: if type not in:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
|
+| **foxyproxy.proxies.port**
[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` _`disabled`_ | Port.
**Default**: copy HTTP port if proxy is not "Manual"
**Disabled**: if type not in:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
|
+| **foxyproxy.proxies.username**
[`unix_user`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` _`disabled`_ | Username.
**Disabled**: if type not in:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
|
+| **foxyproxy.proxies.password**
[`secret`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` _`hidden`_ _`disabled`_ | Password.
**Hidden**: if username is not defined
**Disabled**: if type not in:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
|
+| **foxyproxy.proxies.url**
[`web_address`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` _`disabled`_ | URL.
**Disabled**: if type is not in:
- PAC URL
- WPAD
|
+
+
+## Exemple avec les variables obligatoires non renseignées
+
+```yaml
+proxy:
+ manual:
+ http_proxy:
+ address: example.net
+ https_proxy:
+ address: example.net
+ socks_proxy:
+ address: example.net
+ auto: https://example.net
+ dns_over_https:
+ custom_dns_url: https://example.net
+```
+## Exemple avec tous les variables modifiables
+
+```yaml
+proxy:
+ proxy_mode: No proxy
+ manual:
+ http_proxy:
+ address: example.net
+ port: '8080'
+ use_for_https: true
+ https_proxy:
+ address: example.net
+ port: '8080'
+ version: v5
+ socks_proxy:
+ address: example.net
+ port: '8080'
+ version: v5
+ auto: https://example.net
+ no_proxy:
+ - .mozilla.org
+ - .net.nz
+ - 192.168.1.0/24
+ prompt_authentication: true
+ dns_over_https:
+ enable_dns_over_https: false
+ provider: Cloudflare
+ custom_dns_url: https://example.net
+foxyproxy:
+ proxies:
+ - title: xxx
+ color: xxx
+ type: Direct (no proxy)
+ address:
+ - None
+ port: '8080'
+ username: xxx
+ password: xxx
+ url: https://example.net
+```
diff --git a/examples/001/README.md b/examples/001/README.md
new file mode 100644
index 0000000..538b2cf
--- /dev/null
+++ b/examples/001/README.md
@@ -0,0 +1,10 @@
+A first variable
+
+In the Firefox configuration, it is possible to define several configuration modes,
+from no proxy at all ("No proxy") to a kind of automatic configuration mode from a file
+("Automatic proxy configuration URL").
+
+We’re gonna create a first variable calls "proxy_mode":
+
+- accept only a string as value
+- requires a value (that is, None is not an option)
diff --git a/examples/001/config/01/config.yaml b/examples/001/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/001/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/001/config/02/config.yaml b/examples/001/config/02/config.yaml
new file mode 100644
index 0000000..d914488
--- /dev/null
+++ b/examples/001/config/02/config.yaml
@@ -0,0 +1,2 @@
+---
+proxy_mode: No proxy
diff --git a/examples/001/config/03/config.yaml b/examples/001/config/03/config.yaml
new file mode 100644
index 0000000..74edb22
--- /dev/null
+++ b/examples/001/config/03/config.yaml
@@ -0,0 +1,2 @@
+---
+proxy_mode: Manual proxy configuration
diff --git a/examples/001/config/04/config.yaml b/examples/001/config/04/config.yaml
new file mode 100644
index 0000000..e3fa25d
--- /dev/null
+++ b/examples/001/config/04/config.yaml
@@ -0,0 +1,2 @@
+---
+proxy_mode: foo
diff --git a/examples/001/config/05/config.yaml b/examples/001/config/05/config.yaml
new file mode 100644
index 0000000..bf6f64c
--- /dev/null
+++ b/examples/001/config/05/config.yaml
@@ -0,0 +1,2 @@
+---
+proxy_mode: 1
diff --git a/examples/001/dictionaries/firefox/00-proxy.yml b/examples/001/dictionaries/firefox/00-proxy.yml
new file mode 100644
index 0000000..e468d85
--- /dev/null
+++ b/examples/001/dictionaries/firefox/00-proxy.yml
@@ -0,0 +1,2 @@
+---
+proxy_mode:
diff --git a/examples/001/firefox.png b/examples/001/firefox.png
new file mode 100644
index 0000000..45725ac
Binary files /dev/null and b/examples/001/firefox.png differ
diff --git a/examples/001/firefox.xcf b/examples/001/firefox.xcf
new file mode 100644
index 0000000..1101ae9
Binary files /dev/null and b/examples/001/firefox.xcf differ
diff --git a/examples/002/README.md b/examples/002/README.md
new file mode 100644
index 0000000..bd15787
--- /dev/null
+++ b/examples/002/README.md
@@ -0,0 +1,9 @@
+The variable description
+
+We can add a description to this first variable.
+
+This information is useful for:
+
+- documentation
+- error message
+- help user to known which value to set to this variable (for example with [the user data plugin Questionary](https://forge.cloud.silique.fr/gnunux/rougail-user-data-questionary)).
diff --git a/examples/002/config b/examples/002/config
new file mode 120000
index 0000000..6cf3df8
--- /dev/null
+++ b/examples/002/config
@@ -0,0 +1 @@
+../001/config
\ No newline at end of file
diff --git a/examples/002/dictionaries/firefox/00-proxy.yml b/examples/002/dictionaries/firefox/00-proxy.yml
new file mode 100644
index 0000000..0299903
--- /dev/null
+++ b/examples/002/dictionaries/firefox/00-proxy.yml
@@ -0,0 +1,3 @@
+---
+proxy_mode:
+ description: Configure Proxy Access to the Internet
diff --git a/examples/003/README.md b/examples/003/README.md
new file mode 100644
index 0000000..d0a2ae3
--- /dev/null
+++ b/examples/003/README.md
@@ -0,0 +1,8 @@
+A default value
+
+Now we can define the default value of this variable.
+
+If user don't touch de value of this variable, the value is "No proxy".
+
+As user intervention is no more required, so the variable change it's default mode too (from "basic" to "standard").
+
diff --git a/examples/003/config b/examples/003/config
new file mode 120000
index 0000000..6cf3df8
--- /dev/null
+++ b/examples/003/config
@@ -0,0 +1 @@
+../001/config
\ No newline at end of file
diff --git a/examples/003/dictionaries/firefox/00-proxy.yml b/examples/003/dictionaries/firefox/00-proxy.yml
new file mode 100644
index 0000000..9d7618a
--- /dev/null
+++ b/examples/003/dictionaries/firefox/00-proxy.yml
@@ -0,0 +1,4 @@
+---
+proxy_mode:
+ description: Configure Proxy Access to the Internet
+ default: No proxy
diff --git a/examples/004/README.md b/examples/004/README.md
new file mode 100644
index 0000000..529e7d6
--- /dev/null
+++ b/examples/004/README.md
@@ -0,0 +1,7 @@
+A variable with type choice
+
+"Foo" should not be an option to the "proxy_mode" variable.
+
+Now the "proxy_mode" type is "choice", that means that there is a list of available values that can be selected.
+
+We say that the "proxy_mode" variable is constrained (by choices): this variable accept, in fact, only a list of choices.
diff --git a/examples/004/config b/examples/004/config
new file mode 120000
index 0000000..6cf3df8
--- /dev/null
+++ b/examples/004/config
@@ -0,0 +1 @@
+../001/config
\ No newline at end of file
diff --git a/examples/004/dictionaries/firefox/00-proxy.yml b/examples/004/dictionaries/firefox/00-proxy.yml
new file mode 100644
index 0000000..0272c72
--- /dev/null
+++ b/examples/004/dictionaries/firefox/00-proxy.yml
@@ -0,0 +1,11 @@
+---
+proxy_mode:
+ description: Configure Proxy Access to the Internet
+ type: choice
+ choices:
+ - No proxy
+ - Auto-detect proxy settings for this network
+ - Use system proxy settings
+ - Manual proxy configuration
+ - Automatic proxy configuration URL
+ default: No proxy
diff --git a/examples/005/README.md b/examples/005/README.md
new file mode 100644
index 0000000..4f83f97
--- /dev/null
+++ b/examples/005/README.md
@@ -0,0 +1,3 @@
+Choice type is optional
+
+The type is optional in choice type (if we have choices attributes, it's a choice option).
diff --git a/examples/005/config b/examples/005/config
new file mode 120000
index 0000000..6cf3df8
--- /dev/null
+++ b/examples/005/config
@@ -0,0 +1 @@
+../001/config
\ No newline at end of file
diff --git a/examples/005/dictionaries/firefox/00-proxy.yml b/examples/005/dictionaries/firefox/00-proxy.yml
new file mode 100644
index 0000000..41f5978
--- /dev/null
+++ b/examples/005/dictionaries/firefox/00-proxy.yml
@@ -0,0 +1,10 @@
+---
+proxy_mode:
+ description: Configure Proxy Access to the Internet
+ choices:
+ - No proxy
+ - Auto-detect proxy settings for this network
+ - Use system proxy settings
+ - Manual proxy configuration
+ - Automatic proxy configuration URL
+ default: No proxy
diff --git a/examples/010/README.md b/examples/010/README.md
new file mode 100644
index 0000000..6a27bc7
--- /dev/null
+++ b/examples/010/README.md
@@ -0,0 +1,14 @@
+A family
+
+The "manual" mode structural descriptions are write in a new files to separate things. But Rougail will concatenate variables and families.
+
+We create a family, which will contain other variables.
+
+This family has:
+
+- a description
+- a type
+
+As there is no variable inside this family, the type is mandatory. Without it, Rougail will create a variable.
+
+In fact, this family will be deleted by Rougail too because it is empty.
diff --git a/examples/010/config/01/config.yaml b/examples/010/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/010/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/010/config/02/config.yaml b/examples/010/config/02/config.yaml
new file mode 100644
index 0000000..74edb22
--- /dev/null
+++ b/examples/010/config/02/config.yaml
@@ -0,0 +1,2 @@
+---
+proxy_mode: Manual proxy configuration
diff --git a/examples/010/dictionaries/firefox/10-manual.yml b/examples/010/dictionaries/firefox/10-manual.yml
new file mode 100644
index 0000000..8a704f5
--- /dev/null
+++ b/examples/010/dictionaries/firefox/10-manual.yml
@@ -0,0 +1,4 @@
+---
+manual:
+ description: Manual proxy configuration
+ type: family
diff --git a/examples/010/firefox.png b/examples/010/firefox.png
new file mode 100644
index 0000000..2dea193
Binary files /dev/null and b/examples/010/firefox.png differ
diff --git a/examples/010/firefox.xcf b/examples/010/firefox.xcf
new file mode 100644
index 0000000..d73e03e
Binary files /dev/null and b/examples/010/firefox.xcf differ
diff --git a/examples/011/README.md b/examples/011/README.md
new file mode 100644
index 0000000..8072d5b
--- /dev/null
+++ b/examples/011/README.md
@@ -0,0 +1,5 @@
+Conditional desactived family
+
+This family will be desactived if "proxy_mode" is not "manual proxy configuration".
+
+Desactived a variable or a family means that this variable will never be accessible.
diff --git a/examples/011/config b/examples/011/config
new file mode 120000
index 0000000..160a2a6
--- /dev/null
+++ b/examples/011/config
@@ -0,0 +1 @@
+../010/config
\ No newline at end of file
diff --git a/examples/011/dictionaries/firefox/10-manual.yml b/examples/011/dictionaries/firefox/10-manual.yml
new file mode 100644
index 0000000..29ea6a3
--- /dev/null
+++ b/examples/011/dictionaries/firefox/10-manual.yml
@@ -0,0 +1,8 @@
+---
+manual:
+ description: Manual proxy configuration
+ type: family
+ disabled:
+ type: variable
+ variable: proxy_mode
+ when_not: 'Manual proxy configuration'
diff --git a/examples/012/README.md b/examples/012/README.md
new file mode 100644
index 0000000..3a2fca9
--- /dev/null
+++ b/examples/012/README.md
@@ -0,0 +1,7 @@
+A sub family
+
+Inside a family, we can have variables or families.
+
+The "type" for family "manual" became unecessary because container an other family, so it's not a variable.
+
+In disabled attribute, it's better tu use relative path (we will see the reason in an other slide).
diff --git a/examples/012/config b/examples/012/config
new file mode 120000
index 0000000..160a2a6
--- /dev/null
+++ b/examples/012/config
@@ -0,0 +1 @@
+../010/config
\ No newline at end of file
diff --git a/examples/012/dictionaries/firefox/10-manual.yml b/examples/012/dictionaries/firefox/10-manual.yml
new file mode 100644
index 0000000..e875aa8
--- /dev/null
+++ b/examples/012/dictionaries/firefox/10-manual.yml
@@ -0,0 +1,11 @@
+---
+manual:
+ description: Manual proxy configuration
+ disabled:
+ type: variable
+ variable: _.proxy_mode
+ when_not: 'Manual proxy configuration'
+
+ http_proxy:
+ description: HTTP Proxy
+ type: family
diff --git a/examples/013/README.md b/examples/013/README.md
new file mode 100644
index 0000000..8aac5a2
--- /dev/null
+++ b/examples/013/README.md
@@ -0,0 +1,5 @@
+Family in "shorthand" mode
+
+The sub family is now in "shorthand" mode. In this mode we can only define "name" and "description" attributes.
+
+Inside the sub family we add two variables (with domainname and port types).
diff --git a/examples/013/config/01/config.yaml b/examples/013/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/013/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/013/config/02/config.yaml b/examples/013/config/02/config.yaml
new file mode 100644
index 0000000..74edb22
--- /dev/null
+++ b/examples/013/config/02/config.yaml
@@ -0,0 +1,2 @@
+---
+proxy_mode: Manual proxy configuration
diff --git a/examples/013/config/03/config.yaml b/examples/013/config/03/config.yaml
new file mode 100644
index 0000000..e3db924
--- /dev/null
+++ b/examples/013/config/03/config.yaml
@@ -0,0 +1,5 @@
+---
+proxy_mode: Manual proxy configuration
+manual:
+ http_proxy:
+ address: example.net
diff --git a/examples/013/config/04/config.yaml b/examples/013/config/04/config.yaml
new file mode 100644
index 0000000..c8d73af
--- /dev/null
+++ b/examples/013/config/04/config.yaml
@@ -0,0 +1,6 @@
+---
+proxy_mode: Manual proxy configuration
+manual:
+ http_proxy:
+ address: example.net
+ port: '3128'
diff --git a/examples/013/dictionaries/firefox/10-manual.yml b/examples/013/dictionaries/firefox/10-manual.yml
new file mode 100644
index 0000000..09b82d0
--- /dev/null
+++ b/examples/013/dictionaries/firefox/10-manual.yml
@@ -0,0 +1,20 @@
+---
+manual:
+ description: Manual proxy configuration
+ disabled:
+ type: variable
+ variable: _.proxy_mode
+ when_not: 'Manual proxy configuration'
+
+ http_proxy: # HTTP Proxy
+
+ address:
+ description: HTTP address
+ type: domainname
+ params:
+ allow_ip: true
+
+ port:
+ description: HTTP Port
+ type: port
+ default: '8080'
diff --git a/examples/014/README.md b/examples/014/README.md
new file mode 100644
index 0000000..02e52b2
--- /dev/null
+++ b/examples/014/README.md
@@ -0,0 +1,3 @@
+A boolean variable
+
+Let's create a boolean variable.
diff --git a/examples/014/config/01/config.yaml b/examples/014/config/01/config.yaml
new file mode 100644
index 0000000..e3db924
--- /dev/null
+++ b/examples/014/config/01/config.yaml
@@ -0,0 +1,5 @@
+---
+proxy_mode: Manual proxy configuration
+manual:
+ http_proxy:
+ address: example.net
diff --git a/examples/014/dictionaries/firefox/10-manual.yml b/examples/014/dictionaries/firefox/10-manual.yml
new file mode 100644
index 0000000..93ad535
--- /dev/null
+++ b/examples/014/dictionaries/firefox/10-manual.yml
@@ -0,0 +1,25 @@
+---
+manual:
+ description: Manual proxy configuration
+ disabled:
+ type: variable
+ variable: _.proxy_mode
+ when_not: 'Manual proxy configuration'
+
+ http_proxy: # HTTP Proxy
+
+ address:
+ description: HTTP address
+ type: domainname
+ params:
+ allow_ip: true
+
+ port:
+ description: HTTP Port
+ type: port
+ default: '8080'
+
+ use_for_https:
+ description: Also use this proxy for HTTPS
+ type: boolean
+ default: true
diff --git a/examples/015/README.md b/examples/015/README.md
new file mode 100644
index 0000000..bb1058e
--- /dev/null
+++ b/examples/015/README.md
@@ -0,0 +1,3 @@
+Bases type is optional if default value
+
+The type is deduct with the default value type. This is only true for "string", "number", "float" or "boolean" variables.
diff --git a/examples/015/config b/examples/015/config
new file mode 120000
index 0000000..6bb267f
--- /dev/null
+++ b/examples/015/config
@@ -0,0 +1 @@
+../014/config
\ No newline at end of file
diff --git a/examples/015/dictionaries/firefox/10-manual.yml b/examples/015/dictionaries/firefox/10-manual.yml
new file mode 100644
index 0000000..587510b
--- /dev/null
+++ b/examples/015/dictionaries/firefox/10-manual.yml
@@ -0,0 +1,24 @@
+---
+manual:
+ description: Manual proxy configuration
+ disabled:
+ type: variable
+ variable: _.proxy_mode
+ when_not: 'Manual proxy configuration'
+
+ http_proxy: # HTTP Proxy
+
+ address:
+ description: HTTP address
+ type: domainname
+ params:
+ allow_ip: true
+
+ port:
+ description: HTTP Port
+ type: port
+ default: '8080'
+
+ use_for_https:
+ description: Also use this proxy for HTTPS
+ default: true
diff --git a/examples/016/README.md b/examples/016/README.md
new file mode 100644
index 0000000..1ca6797
--- /dev/null
+++ b/examples/016/README.md
@@ -0,0 +1,9 @@
+A variable in "shorthand" mode
+
+Transform it in "shorthand" mode.
+
+In this notation we can only define:
+
+- name
+- default value (so deduct the type)
+- description
diff --git a/examples/016/config b/examples/016/config
new file mode 120000
index 0000000..6bb267f
--- /dev/null
+++ b/examples/016/config
@@ -0,0 +1 @@
+../014/config
\ No newline at end of file
diff --git a/examples/016/dictionaries/firefox/10-manual.yml b/examples/016/dictionaries/firefox/10-manual.yml
new file mode 100644
index 0000000..f486e14
--- /dev/null
+++ b/examples/016/dictionaries/firefox/10-manual.yml
@@ -0,0 +1,22 @@
+---
+manual:
+ description: Manual proxy configuration
+ disabled:
+ type: variable
+ variable: _.proxy_mode
+ when_not: 'Manual proxy configuration'
+
+ http_proxy: # HTTP Proxy
+
+ address:
+ description: HTTP address
+ type: domainname
+ params:
+ allow_ip: true
+
+ port:
+ description: HTTP Port
+ type: port
+ default: '8080'
+
+ use_for_https: true # Also use this proxy for HTTPS
diff --git a/examples/017/README.md b/examples/017/README.md
new file mode 100644
index 0000000..887f4cd
--- /dev/null
+++ b/examples/017/README.md
@@ -0,0 +1,9 @@
+Conditional hidden family and calculated default value
+
+Add a sub family "https_proxy" which will be hidden if "use_for_https" is True.
+
+Hidden means that we cannot change value, but we can access to it in read only mode. Inside, we add two variable with calculated default value (with variable type).
+
+So, if user set "use_for_https" to True, the default values of HTTPS configuration will be a copy of HTTP values. The use can change HTTPS values if needed.
+
+If user set "use_for_https" to False, the default values of HTTPS configuration will only be a copy of HTTP values.
diff --git a/examples/017/config b/examples/017/config
new file mode 120000
index 0000000..6bb267f
--- /dev/null
+++ b/examples/017/config
@@ -0,0 +1 @@
+../014/config
\ No newline at end of file
diff --git a/examples/017/dictionaries/firefox/10-manual.yml b/examples/017/dictionaries/firefox/10-manual.yml
new file mode 100644
index 0000000..d27e939
--- /dev/null
+++ b/examples/017/dictionaries/firefox/10-manual.yml
@@ -0,0 +1,44 @@
+---
+manual:
+ description: Manual proxy configuration
+ disabled:
+ type: variable
+ variable: _.proxy_mode
+ when_not: 'Manual proxy configuration'
+
+ http_proxy: # HTTP Proxy
+
+ address:
+ description: HTTP address
+ type: domainname
+ params:
+ allow_ip: true
+
+ port:
+ description: HTTP Port
+ type: port
+ default: '8080'
+
+ use_for_https: true # Also use this proxy for HTTPS
+
+ https_proxy:
+ description: HTTPS Proxy
+ hidden:
+ type: variable
+ variable: _.use_for_https
+
+ address:
+ description: HTTPS address
+ type: domainname
+ params:
+ allow_ip: true
+ default:
+ type: variable
+ variable: __.http_proxy.address
+
+ port:
+ description: HTTPS Port
+ type: port
+ default:
+ type: variable
+ variable: __.http_proxy.port
diff --git a/examples/018/README.md b/examples/018/README.md
new file mode 100644
index 0000000..23aec67
--- /dev/null
+++ b/examples/018/README.md
@@ -0,0 +1,3 @@
+A dynamic family
+
+Add a new sub family "socks\_proxy" in advanced mode.
diff --git a/examples/018/config/01/config.yaml b/examples/018/config/01/config.yaml
new file mode 100644
index 0000000..135d8b3
--- /dev/null
+++ b/examples/018/config/01/config.yaml
@@ -0,0 +1,5 @@
+---
+proxy_mode: Manual proxy configuration
+manual:
+ http_proxy:
+ address: http.proxy.net
diff --git a/examples/018/config/02/config.yaml b/examples/018/config/02/config.yaml
new file mode 100644
index 0000000..4a1f789
--- /dev/null
+++ b/examples/018/config/02/config.yaml
@@ -0,0 +1,9 @@
+---
+proxy_mode: Manual proxy configuration
+manual:
+ http_proxy:
+ address: http.proxy.net
+ port: '3128'
+ use_for_https: false
+ https_proxy:
+ address: https.proxy.net
diff --git a/examples/018/dictionaries/firefox/10-manual.yml b/examples/018/dictionaries/firefox/10-manual.yml
new file mode 100644
index 0000000..8d7b4a6
--- /dev/null
+++ b/examples/018/dictionaries/firefox/10-manual.yml
@@ -0,0 +1,74 @@
+---
+manual:
+ description: Manual proxy configuration
+ disabled:
+ type: variable
+ variable: _.proxy_mode
+ when_not: 'Manual proxy configuration'
+
+ http_proxy: # HTTP Proxy
+
+ address:
+ description: HTTP address
+ type: domainname
+ params:
+ allow_ip: true
+
+ port:
+ description: HTTP Port
+ type: port
+ default: '8080'
+
+ use_for_https: true # Also use this proxy for HTTPS
+
+ "{{ suffix }}_proxy":
+ description: "{{ suffix }} Proxy"
+ type: dynamic
+ dynamic:
+ - HTTPS
+ - SOCKS
+ hidden:
+ type: jinja
+ jinja: |
+ {% if suffix == 'HTTPS' and _.use_for_https %}
+ HTTPS is same has HTTP
+ {% endif %}
+ params:
+ suffix:
+ type: suffix
+ description: |
+ if HTTPS and HTTPS is same has HTTP
+
+ address:
+ description: "{{ suffix }} address"
+ type: domainname
+ params:
+ allow_ip: true
+ default:
+ type: variable
+ variable: __.http_proxy.address
+
+ port:
+ description: "{{ suffix }} port"
+ type: port
+ default:
+ type: variable
+ variable: __.http_proxy.port
+
+ version:
+ description: SOCKS host version used by proxy
+ choices:
+ - v4
+ - v5
+ default: v5
+ disabled:
+ type: jinja
+ jinja: |
+ {% if suffix == 'HTTPS' %}
+ if HTTPS
+ {% endif %}
+ params:
+ suffix:
+ type: suffix
+ description: |
+ if not SOCKS
diff --git a/examples/020/README.md b/examples/020/README.md
new file mode 100644
index 0000000..2f96325
--- /dev/null
+++ b/examples/020/README.md
@@ -0,0 +1,3 @@
+A conditional disabled variable
+
+Add a new "auto" variable.
diff --git a/examples/020/config/01/config.yaml b/examples/020/config/01/config.yaml
new file mode 100644
index 0000000..26df130
--- /dev/null
+++ b/examples/020/config/01/config.yaml
@@ -0,0 +1,2 @@
+---
+proxy_mode: Automatic proxy configuration URL
diff --git a/examples/020/config/02/config.yaml b/examples/020/config/02/config.yaml
new file mode 100644
index 0000000..307e175
--- /dev/null
+++ b/examples/020/config/02/config.yaml
@@ -0,0 +1,3 @@
+---
+proxy_mode: Automatic proxy configuration URL
+auto: https://auto.proxy.net/wpad.dat
diff --git a/examples/020/dictionaries/firefox/20-auto.yml b/examples/020/dictionaries/firefox/20-auto.yml
new file mode 100644
index 0000000..0fa4dba
--- /dev/null
+++ b/examples/020/dictionaries/firefox/20-auto.yml
@@ -0,0 +1,12 @@
+---
+auto:
+ description: Automatic proxy configuration URL
+ type: web_address
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode != 'Automatic proxy configuration URL' %}
+ the proxy mode is not automatic
+ {% endif %}
+ description: |
+ if "firefox.proxy_mode" is not "automatic proxy configuration URL"
diff --git a/examples/020/firefox.png b/examples/020/firefox.png
new file mode 100644
index 0000000..20701e2
Binary files /dev/null and b/examples/020/firefox.png differ
diff --git a/examples/020/firefox.xcf b/examples/020/firefox.xcf
new file mode 100644
index 0000000..89c7f4b
Binary files /dev/null and b/examples/020/firefox.xcf differ
diff --git a/examples/030/README.md b/examples/030/README.md
new file mode 100644
index 0000000..760e014
--- /dev/null
+++ b/examples/030/README.md
@@ -0,0 +1,4 @@
+A conditional disabled variable
+
+Add a new "no\_proxy" variable.
+
diff --git a/examples/030/config/01/config.yaml b/examples/030/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/030/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/030/config/02/config.yaml b/examples/030/config/02/config.yaml
new file mode 100644
index 0000000..54956ea
--- /dev/null
+++ b/examples/030/config/02/config.yaml
@@ -0,0 +1,4 @@
+---
+proxy_mode: Automatic proxy configuration URL
+auto: https://auto.proxy.net/wpad.dat
+no_proxy: 192.168.1.0/24
diff --git a/examples/030/dictionaries/firefox/30-no_proxy.yml b/examples/030/dictionaries/firefox/30-no_proxy.yml
new file mode 100644
index 0000000..16f160b
--- /dev/null
+++ b/examples/030/dictionaries/firefox/30-no_proxy.yml
@@ -0,0 +1,16 @@
+---
+no_proxy:
+ description: Address for which proxy will be desactivated
+ type: "domainname"
+ params:
+ allow_ip: true
+ allow_cidr_network: true
+ allow_without_dot: true
+ allow_startswith_dot: true
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode == 'No proxy' %}
+ proxy mode is no proxy
+ {% endif %}
+ description: if "firefox.proxy_mode" is "No proxy"
diff --git a/examples/031/README.md b/examples/031/README.md
new file mode 100644
index 0000000..a2074cb
--- /dev/null
+++ b/examples/031/README.md
@@ -0,0 +1,3 @@
+A variable multi
+
+This variable accept multiple value.
diff --git a/examples/031/config/01/config.yaml b/examples/031/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/031/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/031/config/02/config.yaml b/examples/031/config/02/config.yaml
new file mode 100644
index 0000000..ccba4c0
--- /dev/null
+++ b/examples/031/config/02/config.yaml
@@ -0,0 +1,6 @@
+---
+proxy_mode: Automatic proxy configuration URL
+auto: https://auto.proxy.net/wpad.dat
+no_proxy:
+ - example.net
+ - 192.168.1.0/24
diff --git a/examples/031/config/03/config.yaml b/examples/031/config/03/config.yaml
new file mode 100644
index 0000000..307e175
--- /dev/null
+++ b/examples/031/config/03/config.yaml
@@ -0,0 +1,3 @@
+---
+proxy_mode: Automatic proxy configuration URL
+auto: https://auto.proxy.net/wpad.dat
diff --git a/examples/031/dictionaries/firefox/30-no_proxy.yml b/examples/031/dictionaries/firefox/30-no_proxy.yml
new file mode 100644
index 0000000..066b55d
--- /dev/null
+++ b/examples/031/dictionaries/firefox/30-no_proxy.yml
@@ -0,0 +1,17 @@
+---
+no_proxy:
+ description: Address for which proxy will be desactivated
+ type: "domainname"
+ multi: true
+ params:
+ allow_ip: true
+ allow_cidr_network: true
+ allow_without_dot: true
+ allow_startswith_dot: true
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode == 'No proxy' %}
+ proxy mode is no proxy
+ {% endif %}
+ description: if "firefox.proxy_mode" is "No proxy"
diff --git a/examples/032/README.md b/examples/032/README.md
new file mode 100644
index 0000000..d83ef1b
--- /dev/null
+++ b/examples/032/README.md
@@ -0,0 +1 @@
+A non mandatory variable
diff --git a/examples/032/config b/examples/032/config
new file mode 120000
index 0000000..51b7987
--- /dev/null
+++ b/examples/032/config
@@ -0,0 +1 @@
+../031/config
\ No newline at end of file
diff --git a/examples/032/dictionaries/firefox/30-no_proxy.yml b/examples/032/dictionaries/firefox/30-no_proxy.yml
new file mode 100644
index 0000000..f8a68ab
--- /dev/null
+++ b/examples/032/dictionaries/firefox/30-no_proxy.yml
@@ -0,0 +1,18 @@
+---
+no_proxy:
+ description: Address for which proxy will be desactivated
+ type: "domainname"
+ params:
+ allow_ip: true
+ allow_cidr_network: true
+ allow_without_dot: true
+ allow_startswith_dot: true
+ multi: true
+ mandatory: false
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode == 'No proxy' %}
+ proxy mode is no proxy
+ {% endif %}
+ description: if "firefox.proxy_mode" is "No proxy"
diff --git a/examples/033/README.md b/examples/033/README.md
new file mode 100644
index 0000000..da36ca2
--- /dev/null
+++ b/examples/033/README.md
@@ -0,0 +1,3 @@
+Examples
+
+We can add example (only for documentation).
diff --git a/examples/033/config b/examples/033/config
new file mode 120000
index 0000000..51b7987
--- /dev/null
+++ b/examples/033/config
@@ -0,0 +1 @@
+../031/config
\ No newline at end of file
diff --git a/examples/033/dictionaries/firefox/30-no_proxy.yml b/examples/033/dictionaries/firefox/30-no_proxy.yml
new file mode 100644
index 0000000..788a1a1
--- /dev/null
+++ b/examples/033/dictionaries/firefox/30-no_proxy.yml
@@ -0,0 +1,22 @@
+---
+no_proxy:
+ description: Address for which proxy will be desactivated
+ type: "domainname"
+ params:
+ allow_ip: true
+ allow_cidr_network: true
+ allow_without_dot: true
+ allow_startswith_dot: true
+ multi: true
+ mandatory: false
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode == 'No proxy' %}
+ proxy mode is no proxy
+ {% endif %}
+ description: if "firefox.proxy_mode" is "No proxy"
+ test:
+ - .mozilla.org
+ - .net.nz
+ - 192.168.1.0/24
diff --git a/examples/034/README.md b/examples/034/README.md
new file mode 100644
index 0000000..a2a2030
--- /dev/null
+++ b/examples/034/README.md
@@ -0,0 +1,3 @@
+Help
+
+We can add help informations for documentation.
diff --git a/examples/034/config/01/config.yaml b/examples/034/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/034/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/034/config/02/config.yaml b/examples/034/config/02/config.yaml
new file mode 100644
index 0000000..307e175
--- /dev/null
+++ b/examples/034/config/02/config.yaml
@@ -0,0 +1,3 @@
+---
+proxy_mode: Automatic proxy configuration URL
+auto: https://auto.proxy.net/wpad.dat
diff --git a/examples/034/config/03/config.yaml b/examples/034/config/03/config.yaml
new file mode 100644
index 0000000..5319897
--- /dev/null
+++ b/examples/034/config/03/config.yaml
@@ -0,0 +1,6 @@
+---
+proxy_mode: Automatic proxy configuration URL
+auto: https://auto.proxy.net/wpad.dat
+no_proxy:
+ - .example.net
+ - 192.168.1.0/24
diff --git a/examples/034/dictionaries/firefox/30-no_proxy.yml b/examples/034/dictionaries/firefox/30-no_proxy.yml
new file mode 100644
index 0000000..b44565e
--- /dev/null
+++ b/examples/034/dictionaries/firefox/30-no_proxy.yml
@@ -0,0 +1,23 @@
+---
+no_proxy:
+ description: Address for which proxy will be desactivated
+ type: "domainname"
+ params:
+ allow_ip: true
+ allow_cidr_network: true
+ allow_without_dot: true
+ allow_startswith_dot: true
+ multi: true
+ mandatory: false
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode == 'No proxy' %}
+ proxy mode is no proxy
+ {% endif %}
+ description: if "firefox.proxy_mode" is "No proxy"
+ test:
+ - .mozilla.org
+ - .net.nz
+ - 192.168.1.0/24
+ help: Connections to localhost, 127.0.0.1/8 and ::1 are never proxied
diff --git a/examples/040/README.md b/examples/040/README.md
new file mode 100644
index 0000000..c19e709
--- /dev/null
+++ b/examples/040/README.md
@@ -0,0 +1 @@
+A variable in avanced mode
diff --git a/examples/040/config/01/config.yaml b/examples/040/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/040/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/040/config/02/config.yaml b/examples/040/config/02/config.yaml
new file mode 100644
index 0000000..135d8b3
--- /dev/null
+++ b/examples/040/config/02/config.yaml
@@ -0,0 +1,5 @@
+---
+proxy_mode: Manual proxy configuration
+manual:
+ http_proxy:
+ address: http.proxy.net
diff --git a/examples/040/config/03/config.yaml b/examples/040/config/03/config.yaml
new file mode 100644
index 0000000..d04e72c
--- /dev/null
+++ b/examples/040/config/03/config.yaml
@@ -0,0 +1,6 @@
+---
+proxy_mode: Manual proxy configuration
+manual:
+ http_proxy:
+ address: http.proxy.net
+proxy_dns_socks5: true
diff --git a/examples/040/config/04/config.yaml b/examples/040/config/04/config.yaml
new file mode 100644
index 0000000..8ceca7b
--- /dev/null
+++ b/examples/040/config/04/config.yaml
@@ -0,0 +1,7 @@
+---
+proxy_mode: Manual proxy configuration
+manual:
+ http_proxy:
+ address: http.proxy.net
+ socks_proxy:
+ version: v4
diff --git a/examples/040/dictionaries/firefox/40-prompt_authentication.yml b/examples/040/dictionaries/firefox/40-prompt_authentication.yml
new file mode 100644
index 0000000..494578d
--- /dev/null
+++ b/examples/040/dictionaries/firefox/40-prompt_authentication.yml
@@ -0,0 +1,11 @@
+---
+prompt_authentication:
+ description: Prompt for authentication if password is saved
+ default: true
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode == 'No proxy' %}
+ proxy mode is no proxy
+ {% endif %}
+ description: if "firefox.proxy_mode" is "No proxy"
diff --git a/examples/040/dictionaries/firefox/50-proxy_dns_socks5.yml b/examples/040/dictionaries/firefox/50-proxy_dns_socks5.yml
new file mode 100644
index 0000000..5b5d92b
--- /dev/null
+++ b/examples/040/dictionaries/firefox/50-proxy_dns_socks5.yml
@@ -0,0 +1,20 @@
+---
+proxy_dns_socks5:
+ description: Use proxy DNS when using SOCKS v5
+ default: false
+ mode: advanced
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.proxy_mode != 'Manual proxy configuration' %}
+ the proxy mode is not manual
+ {% elif socks_version == 'v4' %}
+ socks version is v4
+ {% endif %}
+ params:
+ socks_version:
+ type: variable
+ variable: _.manual.socks_proxy.version
+ propertyerror: false
+ description: |
+ if "firefox.proxy_mode" is not "Manual proxy configuration" or "firefox.manual.socks_proxy.version" is "v4"
diff --git a/examples/040/firefox.png b/examples/040/firefox.png
new file mode 100644
index 0000000..34e6c08
Binary files /dev/null and b/examples/040/firefox.png differ
diff --git a/examples/040/firefox.xcf b/examples/040/firefox.xcf
new file mode 100644
index 0000000..ac54e0c
Binary files /dev/null and b/examples/040/firefox.xcf differ
diff --git a/examples/060/README.md b/examples/060/README.md
new file mode 100644
index 0000000..4207bc8
--- /dev/null
+++ b/examples/060/README.md
@@ -0,0 +1 @@
+A boolean variable
diff --git a/examples/060/config/01/config.yaml b/examples/060/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/060/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/060/dictionaries/firefox/60-dns_over_https.yml b/examples/060/dictionaries/firefox/60-dns_over_https.yml
new file mode 100644
index 0000000..d709ea5
--- /dev/null
+++ b/examples/060/dictionaries/firefox/60-dns_over_https.yml
@@ -0,0 +1,4 @@
+---
+dns_over_https: # DNS over HTTPS
+
+ enable_dns_over_https: false # Enable DNS over HTTPS
diff --git a/examples/060/firefox.png b/examples/060/firefox.png
new file mode 100644
index 0000000..d368003
Binary files /dev/null and b/examples/060/firefox.png differ
diff --git a/examples/060/firefox.xcf b/examples/060/firefox.xcf
new file mode 100644
index 0000000..c362607
Binary files /dev/null and b/examples/060/firefox.xcf differ
diff --git a/examples/061/README.md b/examples/061/README.md
new file mode 100644
index 0000000..9215d09
--- /dev/null
+++ b/examples/061/README.md
@@ -0,0 +1 @@
+A choice variable
diff --git a/examples/061/config/01/config.yaml b/examples/061/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/061/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/061/config/02/config.yaml b/examples/061/config/02/config.yaml
new file mode 100644
index 0000000..aee4796
--- /dev/null
+++ b/examples/061/config/02/config.yaml
@@ -0,0 +1,3 @@
+---
+dns_over_https:
+ enable_dns_over_https: true
diff --git a/examples/061/dictionaries/firefox/60-dns_over_https.yml b/examples/061/dictionaries/firefox/60-dns_over_https.yml
new file mode 100644
index 0000000..4fa7edd
--- /dev/null
+++ b/examples/061/dictionaries/firefox/60-dns_over_https.yml
@@ -0,0 +1,20 @@
+---
+dns_over_https: # DNS over HTTPS
+
+ enable_dns_over_https: false # Enable DNS over HTTPS
+
+ provider:
+ description: Use Provider
+ choices:
+ - Cloudflare
+ - NextDNS
+ - Custom
+ default: Cloudflare
+ disabled:
+ type: jinja
+ jinja: |
+ {% if not _.enable_dns_over_https %}
+ Enable DNS over HTTPS is False
+ {% endif %}
+ description: |
+ if "firefox.dns_over_https.enable_dns_over_https" is not False
diff --git a/examples/062/README.md b/examples/062/README.md
new file mode 100644
index 0000000..c11c818
--- /dev/null
+++ b/examples/062/README.md
@@ -0,0 +1 @@
+A variable with custom validation
diff --git a/examples/062/config/01/config.yaml b/examples/062/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/062/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/062/config/02/config.yaml b/examples/062/config/02/config.yaml
new file mode 100644
index 0000000..aee4796
--- /dev/null
+++ b/examples/062/config/02/config.yaml
@@ -0,0 +1,3 @@
+---
+dns_over_https:
+ enable_dns_over_https: true
diff --git a/examples/062/config/03/config.yaml b/examples/062/config/03/config.yaml
new file mode 100644
index 0000000..2497fc1
--- /dev/null
+++ b/examples/062/config/03/config.yaml
@@ -0,0 +1,5 @@
+---
+dns_over_https:
+ enable_dns_over_https: true
+ provider: Custom
+ custom_dns_url: http://dns.net
diff --git a/examples/062/config/04/config.yaml b/examples/062/config/04/config.yaml
new file mode 100644
index 0000000..7f28b0d
--- /dev/null
+++ b/examples/062/config/04/config.yaml
@@ -0,0 +1,5 @@
+---
+dns_over_https:
+ enable_dns_over_https: true
+ provider: Custom
+ custom_dns_url: https://dns.net
diff --git a/examples/062/dictionaries/firefox/60-dns_over_https.yml b/examples/062/dictionaries/firefox/60-dns_over_https.yml
new file mode 100644
index 0000000..de0e11a
--- /dev/null
+++ b/examples/062/dictionaries/firefox/60-dns_over_https.yml
@@ -0,0 +1,43 @@
+---
+dns_over_https: # DNS over HTTPS
+
+ enable_dns_over_https: false # Enable DNS over HTTPS
+
+ provider:
+ description: Use Provider
+ choices:
+ - Cloudflare
+ - NextDNS
+ - Custom
+ default: Cloudflare
+ disabled:
+ type: jinja
+ jinja: |
+ {% if not _.enable_dns_over_https %}
+ Enable DNS over HTTPS is False
+ {% endif %}
+ description: |
+ if "firefox.dns_over_https.enable_dns_over_https" is not False
+
+ custom_dns_url:
+ description: Custom DNS URL
+ type: web_address
+ disabled:
+ type: jinja
+ jinja: |
+ {% if provider is not defined or provider != 'Custom' %}
+ provider is not custom
+ {% endif %}
+ params:
+ provider:
+ type: variable
+ variable: _.provider
+ propertyerror: false
+ description: if "firefox.dns_over_https.provider" is not "Custom"
+ validators:
+ - type: jinja
+ jinja: |
+ {% if _.custom_dns_url.startswith('http://') %}
+ only https is allowed
+ {% endif %}
+ description: must starts with 'https://' only
diff --git a/examples/100/README.md b/examples/100/README.md
new file mode 100644
index 0000000..d6459e0
--- /dev/null
+++ b/examples/100/README.md
@@ -0,0 +1 @@
+xxx
diff --git a/examples/100/config/01/config.yaml b/examples/100/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/100/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/100/config/02/config.yaml b/examples/100/config/02/config.yaml
new file mode 100644
index 0000000..c43d770
--- /dev/null
+++ b/examples/100/config/02/config.yaml
@@ -0,0 +1,7 @@
+---
+foxyproxy:
+ proxies:
+ - title: My company
+ color: '#66cc66'
+ type: HTTP
+ address: proxy.my_company.net
diff --git a/examples/100/config/03/config.yaml b/examples/100/config/03/config.yaml
new file mode 100644
index 0000000..bf2cc98
--- /dev/null
+++ b/examples/100/config/03/config.yaml
@@ -0,0 +1,20 @@
+---
+firefox:
+ proxy_mode: Manual proxy configuration
+ manual:
+ http_proxy:
+ address: http.proxy.net
+foxyproxy:
+ proxies:
+ - title: My company
+ color: '#66cc66'
+ type: HTTP
+ - title: An other company
+ color: '#cc66cc'
+ type: SOCKS5
+ username: my_user
+ password: my_password
+ - title: WPAD
+ color: '#1166cc'
+ type: WPAD
+ url: http://wpad.proxy.net/wpad.dat
diff --git a/examples/100/dictionaries/foxyproxy/00-foxyproxy.yml b/examples/100/dictionaries/foxyproxy/00-foxyproxy.yml
new file mode 100644
index 0000000..16a9c9e
--- /dev/null
+++ b/examples/100/dictionaries/foxyproxy/00-foxyproxy.yml
@@ -0,0 +1,12 @@
+---
+proxies:
+ description: Proxy configuration
+ type: leadership
+
+ title:
+ description: Title or Description
+ multi: true
+ mandatory: false
+
+ color:
+ description: Color
diff --git a/examples/101/README.md b/examples/101/README.md
new file mode 100644
index 0000000..d6459e0
--- /dev/null
+++ b/examples/101/README.md
@@ -0,0 +1 @@
+xxx
diff --git a/examples/101/config/01/config.yaml b/examples/101/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/101/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/101/config/02/config.yaml b/examples/101/config/02/config.yaml
new file mode 100644
index 0000000..c43d770
--- /dev/null
+++ b/examples/101/config/02/config.yaml
@@ -0,0 +1,7 @@
+---
+foxyproxy:
+ proxies:
+ - title: My company
+ color: '#66cc66'
+ type: HTTP
+ address: proxy.my_company.net
diff --git a/examples/101/config/03/config.yaml b/examples/101/config/03/config.yaml
new file mode 100644
index 0000000..bf2cc98
--- /dev/null
+++ b/examples/101/config/03/config.yaml
@@ -0,0 +1,20 @@
+---
+firefox:
+ proxy_mode: Manual proxy configuration
+ manual:
+ http_proxy:
+ address: http.proxy.net
+foxyproxy:
+ proxies:
+ - title: My company
+ color: '#66cc66'
+ type: HTTP
+ - title: An other company
+ color: '#cc66cc'
+ type: SOCKS5
+ username: my_user
+ password: my_password
+ - title: WPAD
+ color: '#1166cc'
+ type: WPAD
+ url: http://wpad.proxy.net/wpad.dat
diff --git a/examples/101/dictionaries/foxyproxy/00-foxyproxy.yml b/examples/101/dictionaries/foxyproxy/00-foxyproxy.yml
new file mode 100644
index 0000000..4b363ee
--- /dev/null
+++ b/examples/101/dictionaries/foxyproxy/00-foxyproxy.yml
@@ -0,0 +1,18 @@
+---
+proxies:
+ description: Proxy configuration
+ type: leadership
+
+ title:
+ description: Title or Description
+ multi: true
+ mandatory: false
+
+ color:
+ description: Color
+# validators:
+# - type: jinja
+# jinja: |
+# {% if _.color | regex_search('/^#([A-F0-9]{3}|[A-F0-9]{6})$/i') %}
+# not a valid color, should be somethink like #000000
+# {% endif %}
diff --git a/examples/102/README.md b/examples/102/README.md
new file mode 100644
index 0000000..d6459e0
--- /dev/null
+++ b/examples/102/README.md
@@ -0,0 +1 @@
+xxx
diff --git a/examples/102/config/01/config.yaml b/examples/102/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/102/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/102/config/02/config.yaml b/examples/102/config/02/config.yaml
new file mode 100644
index 0000000..c43d770
--- /dev/null
+++ b/examples/102/config/02/config.yaml
@@ -0,0 +1,7 @@
+---
+foxyproxy:
+ proxies:
+ - title: My company
+ color: '#66cc66'
+ type: HTTP
+ address: proxy.my_company.net
diff --git a/examples/102/config/03/config.yaml b/examples/102/config/03/config.yaml
new file mode 100644
index 0000000..bf2cc98
--- /dev/null
+++ b/examples/102/config/03/config.yaml
@@ -0,0 +1,20 @@
+---
+firefox:
+ proxy_mode: Manual proxy configuration
+ manual:
+ http_proxy:
+ address: http.proxy.net
+foxyproxy:
+ proxies:
+ - title: My company
+ color: '#66cc66'
+ type: HTTP
+ - title: An other company
+ color: '#cc66cc'
+ type: SOCKS5
+ username: my_user
+ password: my_password
+ - title: WPAD
+ color: '#1166cc'
+ type: WPAD
+ url: http://wpad.proxy.net/wpad.dat
diff --git a/examples/102/dictionaries/foxyproxy/00-foxyproxy.yml b/examples/102/dictionaries/foxyproxy/00-foxyproxy.yml
new file mode 100644
index 0000000..e94b7b3
--- /dev/null
+++ b/examples/102/dictionaries/foxyproxy/00-foxyproxy.yml
@@ -0,0 +1,32 @@
+---
+proxies:
+ description: Proxy configuration
+ _type: leadership
+
+ title:
+ description: Title or Description
+ multi: true
+ mandatory: false
+
+ type:
+ description: Proxy Type
+ type: choice
+ choices:
+ - HTTP
+ - HTTPS/SSL
+ - SOCKS4
+ - SOCKS5
+ - PAC URL
+ - WPAD
+ - System (use system settings)
+ - Direct (no proxy)
+ default: Direct (no proxy)
+
+ color:
+ description: Color
+# validators:
+# - type: jinja
+# jinja: |
+# {% if _.color | regex_search('/^#([A-F0-9]{3}|[A-F0-9]{6})$/i') %}
+# not a valid color, should be somethink like #000000
+# {% endif %}
diff --git a/examples/103/README.md b/examples/103/README.md
new file mode 100644
index 0000000..d6459e0
--- /dev/null
+++ b/examples/103/README.md
@@ -0,0 +1 @@
+xxx
diff --git a/examples/103/config/01/config.yaml b/examples/103/config/01/config.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/examples/103/config/01/config.yaml
@@ -0,0 +1 @@
+---
diff --git a/examples/103/config/02/config.yaml b/examples/103/config/02/config.yaml
new file mode 100644
index 0000000..c43d770
--- /dev/null
+++ b/examples/103/config/02/config.yaml
@@ -0,0 +1,7 @@
+---
+foxyproxy:
+ proxies:
+ - title: My company
+ color: '#66cc66'
+ type: HTTP
+ address: proxy.my_company.net
diff --git a/examples/103/config/03/config.yaml b/examples/103/config/03/config.yaml
new file mode 100644
index 0000000..bf2cc98
--- /dev/null
+++ b/examples/103/config/03/config.yaml
@@ -0,0 +1,20 @@
+---
+firefox:
+ proxy_mode: Manual proxy configuration
+ manual:
+ http_proxy:
+ address: http.proxy.net
+foxyproxy:
+ proxies:
+ - title: My company
+ color: '#66cc66'
+ type: HTTP
+ - title: An other company
+ color: '#cc66cc'
+ type: SOCKS5
+ username: my_user
+ password: my_password
+ - title: WPAD
+ color: '#1166cc'
+ type: WPAD
+ url: http://wpad.proxy.net/wpad.dat
diff --git a/examples/103/dictionaries/foxyproxy/00-foxyproxy.yml b/examples/103/dictionaries/foxyproxy/00-foxyproxy.yml
new file mode 100644
index 0000000..2012c76
--- /dev/null
+++ b/examples/103/dictionaries/foxyproxy/00-foxyproxy.yml
@@ -0,0 +1,125 @@
+---
+proxies:
+ description: Proxy configuration
+ _type: leadership
+
+ title:
+ description: Title or Description
+ multi: true
+ mandatory: false
+
+ type:
+ description: Proxy Type
+ type: choice
+ choices:
+ - HTTP
+ - HTTPS/SSL
+ - SOCKS4
+ - SOCKS5
+ - PAC URL
+ - WPAD
+ - System (use system settings)
+ - Direct (no proxy)
+ default: Direct (no proxy)
+
+ color:
+ description: Color
+# validators:
+# - type: jinja
+# jinja: |
+# {% if _.color | regex_search('/^#([A-F0-9]{3}|[A-F0-9]{6})$/i') %}
+# not a valid color, should be somethink like #000000
+# {% endif %}
+
+ address:
+ description: IP address, DNS name, server name
+ disabled: &needs_address
+ type: jinja
+ jinja: |
+ {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
+ disabled
+ {% endif %}
+ description: |
+ if type not in:
+ - HTTP
+ - HTTPS/SSL
+ - SOCKS4
+ - SOCKS5
+ default:
+ type: jinja
+ jinja: |
+ {% if firefox_address is not undefined %}
+ {{ firefox_address }}
+ {% endif %}
+ params:
+ firefox_address:
+ type: variable
+ variable: firefox.manual.http_proxy.address
+ propertyerror: false
+ description: copy HTTP address if proxy is not "Manual"
+
+ port:
+ description: Port
+ type: port
+ default:
+ type: jinja
+ jinja: |
+ {% if firefox_port is not undefined %}
+ {{ firefox_port }}
+ {% endif %}
+ params:
+ firefox_port:
+ type: variable
+ variable: firefox.manual.http_proxy.port
+ propertyerror: false
+ description: copy HTTP port if proxy is not "Manual"
+ disabled: *needs_address
+
+ username:
+ description: Username
+ type: unix_user
+ mandatory:
+ type: jinja
+ jinja: |
+ {% if password is not undefined and password %}
+ username is mandatory
+ {% endif %}
+ params:
+ password:
+ type: variable
+ variable: _.password
+ propertyerror: false
+ description: if a password is set
+ disabled: *needs_address
+
+ password:
+ description: Password
+ type: secret
+ mandatory: false
+ disabled: *needs_address
+
+ url:
+ description: URL
+ type: web_address
+ disabled:
+ type: jinja
+ jinja: |
+ {% if _.type not in ['PAC URL', 'WPAD'] %}
+ proxy does not need url
+ {% endif %}
+ description: |
+ if type is not in:
+ - PAC URL
+ - WPAD
+ default:
+ type: jinja
+ jinja: |
+ {% if firefox_url is not undefined %}
+ {{ firefox_url }}
+ {% endif %}
+ params:
+ firefox_url:
+ type: variable
+ variable: firefox.auto
+ propertyerror: false
+ description: copy HTTP address if proxy is "Auto"
diff --git a/examples/110/README.md b/examples/110/README.md
new file mode 100644
index 0000000..d6459e0
--- /dev/null
+++ b/examples/110/README.md
@@ -0,0 +1 @@
+xxx
diff --git a/examples/110/dictionaries/foxyproxy/10-redefine.yml b/examples/110/dictionaries/foxyproxy/10-redefine.yml
new file mode 100644
index 0000000..83578f0
--- /dev/null
+++ b/examples/110/dictionaries/foxyproxy/10-redefine.yml
@@ -0,0 +1,15 @@
+---
+proxies:
+ username:
+ redefine: true
+ mandatory: false
+
+ password:
+ redefine: true
+ hidden:
+ type: jinja
+ jinja: |
+ {% if not _.username %}
+ no username defined
+ {% endif %}
+ description: if username is not defined
diff --git a/firefox.png b/firefox.png
new file mode 100644
index 0000000..050f837
Binary files /dev/null and b/firefox.png differ
diff --git a/foxyproxy.png b/foxyproxy.png
new file mode 100644
index 0000000..418dad0
Binary files /dev/null and b/foxyproxy.png differ
diff --git a/load.py b/load.py
new file mode 100755
index 0000000..97335f2
--- /dev/null
+++ b/load.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python3
+
+from pathlib import Path
+from ruamel.yaml import YAML
+
+from rougail import Rougail, RougailConfig
+
+
+if __name__ == "__main__":
+ rougailconfig = RougailConfig.copy()
+ rougailconfig['variable_namespace'] = 'proxy'
+ rougailconfig['dictionaries_dir'] = ['proxy']
+ rougailconfig['extra_dictionaries'] = {'foxyproxy': ['foxyproxy']}
+ rougailconfig['tiramisu_cache'] = "cache.py"
+ rougail = Rougail(rougailconfig)
+ config = rougail.get_config()
+ print(config.value.get())