diff --git a/README.md b/README.md
index 8766797..4a413b2 100644
--- a/README.md
+++ b/README.md
@@ -1,435 +1,108 @@
-- [Summary](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/branch/1.1/README.md)
-- [[tutorial 104] xxx](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_104/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_104~1..v1.1_104))
+# Description
-# [tutorial 110] xxx
+This tutorial shows to you an example of Rougail use on how to set a proxy in the Mozilla Firefox browser.
-[View the diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_110~1..v1.1_110)
+More precisely, this tutorial aims at reproducing this [Mozilla Firefox](https://www.mozilla.org/firefox/new/) settings page:
+![Firefox Proxy setting](firefox.png)
-## Screenshot
+And the integration of part of the [Firefox FoxyProxy plugin](https://addons.mozilla.org/firefox/addon/foxyproxy-standard/).
+The idea is to have a namespace specific to FoxyProxy and to find in it part of the settings that we will have made in the main namespace.
-
+This is what the page looks like:
+![Foxyproxy Proxy setting](foxyproxy.png)
-## Structure
-
-
-### firefox/00-proxy.yml
-
-
-```yml
----
-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
+# Installation
+```bash
+# python -m venv rougail
+# . rougail/bin/activate
+# pip install rougail-cli rougail-output-exporter rougail-output-doc rougail-user-data-file
```
-### firefox/10-manual.yml
-
-
-```yml
----
-manual:
- description: Manual proxy configuration
- disabled:
- 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
-
-```
-### firefox/20-manual.yml
-
-
-```yml
----
-manual:
-
- use_for_https: true # Also use this proxy for HTTPS
-
- "{{ identifier }}_proxy":
- description: "{{ identifier }} Proxy"
- dynamic:
- - HTTPS
- - SOCKS
- hidden:
- jinja: |
- {% if my_identifier == 'HTTPS' and _.use_for_https %}
- HTTPS is same has HTTP
- {% endif %}
- params:
- my_identifier:
- type: identifier
- description: |
- in HTTPS case if "manual.use_for_https" is set to True
-
- address:
- description: "{{ identifier }} address"
- default:
- variable: __.http_proxy.address
-
- port:
- description: "{{ identifier }} port"
- default:
- variable: __.http_proxy.port
-
- version:
- description: SOCKS host version used by proxy
- choices:
- - v4
- - v5
- default: v5
- disabled:
- type: identifier
- when: 'HTTPS'
-
-```
-### firefox/30-auto.yml
-
-
-```yml
----
-auto:
- description: Automatic proxy configuration URL
- type: web_address
- disabled:
- variable: _.proxy_mode
- when_not: Automatic proxy configuration URL
-
-```
-### firefox/40-no_proxy.yml
-
-
-```yml
----
-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:
- variable: _.proxy_mode
- when: No proxy
- examples:
- - .mozilla.org
- - .net.nz
- - 192.168.1.0/24
- help: Connections to localhost, 127.0.0.1/8 and ::1 are never proxied
-
-```
-### firefox/50-prompt_authentication.yml
-
-
-```yml
----
-prompt_authentication:
- description: Prompt for authentication if password is saved
- default: true
- disabled:
- variable: _.proxy_mode
- when: No proxy
-
-```
-### firefox/55-proxy_dns_socks5.yml
-
-
-```yml
----
-proxy_dns_socks5:
- description: Use proxy DNS when using SOCKS v5
- default: false
- mode: advanced
- disabled:
- jinja: |
- {% if _.manual.socks_proxy.version is propertyerror %}
- the proxy mode is not manual
- {% elif _.manual.socks_proxy.version == 'v4' %}
- socks version is v4
- {% endif %}
- description: |
- if "firefox.proxy_mode" is not "Manual proxy configuration"
- or "firefox.manual.socks_proxy.version" is "v4"
-
-```
-### firefox/60-dns_over_https.yml
-
-
-```yml
----
-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:
- variable: _.enable_dns_over_https
- when: false
-
- custom_dns_url:
- description: Custom DNS URL
- type: web_address
- disabled:
- jinja: |
- {% if _.provider is propertyerror or _.provider != 'Custom' %}
- provider is not custom
- {% endif %}
- description: if "dns_over_https.provider" is not "Custom"
- validators:
- - jinja: |
- {% if dns_over_https.custom_dns_url.startswith('http://') %}
- only https is allowed
- {% endif %}
- description: must starts with 'https://' only
-
-```
-### firefox/empty.yml
-
-
-```yml
-
-```
-### foxyproxy/00-foxyproxy.yml
-
-
-```yml
----
-proxies:
- description: Proxy configuration
- _type: leadership
-
- title:
- description: Title or Description
- mandatory: false
-
- type:
- description: Proxy Type
- choices:
- - HTTP
- - HTTPS/SSL
- - SOCKS4
- - SOCKS5
- - PAC URL
- - WPAD
- - System (use system settings)
- - Direct (no proxy)
- default: Direct (no proxy)
-
- color:
- description: Color
- regexp: "^#(?:[0-9a-f]{3}){1,2}$"
- auto_save: true
- default:
- jinja: |
- #
- {%- for i in range(6) -%}
- {{- '0123456789abcdef' | random -}}
- {%- endfor -%}
- description: random color value
-
- address:
- description: IP address, DNS name, server name
- type: domainname
- params:
- allow_ip: true
- allow_without_dot: true
- disabled: &needs_address
- jinja: |
- {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
- disabled
- {% endif %}
- description: |
- if type not in:
- - HTTP
- - HTTPS/SSL
- - SOCKS4
- - SOCKS5
- default:
- jinja: |
- {% if firefox.manual.http_proxy.address is not propertyerror %}
- {{ firefox.manual.http_proxy.address }}
- {% endif %}
- description: copy HTTP address if proxy is not "Manual"
-
- port:
- description: Port
- type: port
- default:
- jinja: |
- {% if firefox.manual.http_proxy.port is not propertyerror %}
- {{ firefox.manual.http_proxy.port }}
- {% endif %}
- description: copy HTTP port if proxy is not "Manual"
- disabled: *needs_address
-
- username:
- description: Username
- type: unix_user
- mandatory:
- jinja: |
- {% if _.password is not propertyerror and _.password %}
- username is mandatory
- {% endif %}
- 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:
- jinja: |
- {% if _.type not in ['PAC URL', 'WPAD'] %}
- proxy does not need url
- {% endif %}
- description: |
- if type is not in:
- - PAC URL
- - WPAD
- default:
- jinja: |
- {% if firefox.auto is not propertyerror %}
- {{ firefox.auto }}
- {% endif %}
- description: copy HTTP address if proxy is "Auto"
-
-```
-### foxyproxy/10-redefine.yml
-
-
-```yml
----
-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
-
-```console
-foo@bar:~$ rougail -v 1.1 -m firefox/ -s Firefox -xn FoxyProxy -xd 0 foxyproxy/ --modes_level basic standard advanced -o doc -do github
-```
-### Variables for "firefox"
-
-| Variable | Description |
-|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **firefox.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**: when the variable "firefox.proxy_mode" hasn't the value "Manual proxy configuration".
-
-##### HTTP Proxy
-
-`basic`
-
-| Variable | Description |
-|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **firefox.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 |
-| **firefox.manual.http_proxy.port**
[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | HTTP Port.
**Default**: 8080 |
-
-| Variable | Description |
-|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **firefox.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" or "*SOCKS* Proxy"
-
-`standard` _`hidden`_
-
-**Hidden**: in HTTPS case if "manual.use_for_https" is set to True.
-
-
-This family builds families dynamically.
-
-**Identifiers**:
- HTTPS
- SOCKS
-
-| Variable | Description |
-|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **firefox.manual.https_proxy.address** or **firefox.manual.socks_proxy.address**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | "*HTTPS* address" or "*SOCKS* address".
**Validator**: the domain name can be an IP
**Default**: the value of the variable "firefox.manual.http_proxy.address". |
-| **firefox.manual.https_proxy.port** or **firefox.manual.socks_proxy.port**
[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | "*HTTPS* port" or "*SOCKS* port".
**Default**: the value of the variable "firefox.manual.http_proxy.port". |
-| **firefox.manual.https_proxy.version** or **firefox.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**: when the identifier is "HTTPS". |
-
-| Variable | Description |
-|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **firefox.auto**
[`web_address`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` _`disabled`_ | Automatic proxy configuration URL.
**Disabled**: when the variable "firefox.proxy_mode" hasn't the value "Automatic proxy configuration URL". |
-| **firefox.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 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**: when the variable "firefox.proxy_mode" has the value "No proxy". |
-| **firefox.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**: when the variable "firefox.proxy_mode" has the value "No proxy". |
-
-#### DNS over HTTPS
-
-`basic`
-
-| Variable | Description |
-|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **firefox.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 |
-| **firefox.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**: when the variable "firefox.dns_over_https.enable_dns_over_https" has the value "False". |
-| **firefox.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 "dns_over_https.provider" is not "Custom". |
-
-
-### Variables for "foxyproxy"
-
-#### Proxy configuration
-
-`basic`
-
-
-This family contains lists of variable blocks.
-
-| Variable | Description |
-|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **foxyproxy.proxies.title**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `unique` `multiple` | Title or Description. |
-| **foxyproxy.proxies.type**
[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Proxy Type.
**Choices**:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
- PAC URL
- WPAD
- System (use system settings)
- Direct (no proxy) ← (default) |
-| **foxyproxy.proxies.color**
[`regexp`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` `auto modified` | Color.
**Default**: random color value. |
-| **foxyproxy.proxies.address**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` _`disabled`_ | IP address, DNS name, server name.
**Validators**:
- the domain name can be a hostname
- the domain name can be an IP
**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) `standard` _`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) `standard` `mandatory` _`disabled`_ | URL.
**Default**: copy HTTP address if proxy is "Auto".
**Disabled**: if type is not in:
- PAC URL
- WPAD. |
+# Summary
+
+Each step is a separerate commit. You can navigate to history to discover different aspect to the Rougail format.
+
+- Getting started
+ - Structural file
+ - [[tutorial 000] A structured file with format version](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_000/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_000~1..v1.1_000))
+ - [[tutorial 001] The format version in commandline](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_001/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_001~1..v1.1_001))
+ - Variable: choice the proxy mode
+ - [[tutorial 010] A first variable with only a name](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_010/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_010~1..v1.1_010))
+ - [[tutorial 011] The variable description](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_011/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_011~1..v1.1_011))
+ - [[tutorial 012] A default value](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_012/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_012~1..v1.1_012))
+ - [[tutorial 013] A variable with type "choice"](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_013/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_013~1..v1.1_013))
+ - [[tutorial 014] Choice type is optional](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_014/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_014~1..v1.1_014))
+ - Family: proxy manual
+ - [[tutorial 020] A family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_020/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_020~1..v1.1_020))
+ - [[tutorial 021] A sub family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_021/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_021~1..v1.1_021))
+ - [[tutorial 022] A variable inside sub family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_022/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_022~1..v1.1_022))
+ - [[tutorial 023] Family type is optional](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_023/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_023~1..v1.1_023))
+- HTTP Manual mode
+ - Variable: type and type parameters
+ - [[tutorial 024] A variable with type "domainname"](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_024/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_024~1..v1.1_024))
+ - [[tutorial 025] A variable with type's parameters](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_025/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_025~1..v1.1_025))
+ - [[tutorial 026] A variable with type "port"](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_026/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_026~1..v1.1_026))
+ - Property: disabled
+ - [[tutorial 027] A disabled family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_027/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_027~1..v1.1_027))
+ - [[tutorial 028] A conditional disabled family with a variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_028/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_028~1..v1.1_028))
+ - [[tutorial 029] Type variable is optional](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_029/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_029~1..v1.1_029))
+- HTTP proxy provides HTTPS proxy
+ - [[tutorial 030] A variable with type "boolean"](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_030/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_030~1..v1.1_030))
+ - [[tutorial 031] Bases type is optional if default value](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_031/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_031~1..v1.1_031))
+- HTTPS Manual mode
+ - Property: hidden
+ - [[tutorial 032] Copy HTTP manual proxy to HTTPS manual proxy](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_032/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_032~1..v1.1_032))
+ - [[tutorial 033] An hidden family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_033/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_033~1..v1.1_033))
+ - [[tutorial 034] A conditional hidden family with a variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_034/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_034~1..v1.1_034))
+ - Variable: calculated default value
+ - [[tutorial 035] A calculated default value](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_035/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_035~1..v1.1_035))
+ - [[tutorial 036] Variable type and parameters type are copied with default value](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_036/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_036~1..v1.1_036))
+- SOCKS Manual mode
+ - Family: dynamic
+ - [[tutorial 040] Family: a dynamic family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_040/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_040~1..v1.1_040))
+ - Property: Jinja and identifier condition
+ - [[tutorial 041] A conditional hidden family with Jinja](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_041/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_041~1..v1.1_041))
+ - [[tutorial 042] Jinja with a parameter](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_042/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_042~1..v1.1_042))
+ - [[tutorial 043] Jinja with a description](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_043/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_043~1..v1.1_043))
+ - [[tutorial 044] A conditional disabled variable with identifier](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_044/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_044~1..v1.1_044))
+- Shorthand mode
+ - [[tutorial 050] Family: "shorthand" mode](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_050/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_050~1..v1.1_050))
+ - [[tutorial 051] Variable: "shorthand" mode](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_051/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_051~1..v1.1_051))
+- Automatic proxy
+ - [[tutorial 060] A variable with type "web_address"](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_060/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_060~1..v1.1_060))
+ - [[tutorial 061] A conditional disabled variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_061/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_061~1..v1.1_061))
+- Address for which proxy will be desactivated
+ - Variable: multi and non mandatory
+ - [[tutorial 070] A variable with type "domainname", parameters type and disabled](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_070/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_070~1..v1.1_070))
+ - [[tutorial 071] A variable with multiple value](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_071/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_071~1..v1.1_071))
+ - [[tutorial 072] A non mandatory variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_072/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_072~1..v1.1_072))
+ - Variable: extra description
+ - [[tutorial 073] Examples](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_073/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_073~1..v1.1_073))
+ - [[tutorial 074] Help](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_074/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_074~1..v1.1_074))
+- Prompt for authentication if password is saved
+ - [[tutorial 075] A variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_075/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_075~1..v1.1_075))
+- Use proxy DNS when using SOCKS v5
+ - [[tutorial 076] A variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_076/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_076~1..v1.1_076))
+ - [[tutorial 077] Jinja calculation for an hidden variable with a potential inaccessible varible](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_077/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_077~1..v1.1_077))
+ - [[tutorial 078] A variable in avanced mode](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_078/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_078~1..v1.1_078))
+- DNS over HTTPS
+ - [[tutorial 080] A boolean variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_080/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_080~1..v1.1_080))
+ - [[tutorial 081] A choice variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_081/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_081~1..v1.1_081))
+ - [[tutorial 082] A web_address variable ](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_082/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_082~1..v1.1_082))
+ - [[tutorial 083] A variable with custom validation](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_083/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_083~1..v1.1_083))
+- Namespace
+ - Relative path
+ - [[tutorial 090] Variable in same family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_090/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_090~1..v1.1_090))
+ - [[tutorial 091] Variable in parent family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_091/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_091~1..v1.1_091))
+ - [[tutorial 092] Namespace](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_092/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_092~1..v1.1_092))
+ - [[tutorial 100] xxx](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_100/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_100~1..v1.1_100))
+ - [[tutorial 101] xxx](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_101/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_101~1..v1.1_101))
+ - [[tutorial 102] xxx](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_102/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_102~1..v1.1_102))
+ - [[tutorial 103] xxx](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_103/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_103~1..v1.1_103))
+ - [[tutorial 104] xxx](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_104/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_104~1..v1.1_104))
+ - [[tutorial 110] xxx](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_110/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_110~1..v1.1_110))
diff --git a/firefox.png b/firefox.png
index d368003..050f837 100644
Binary files a/firefox.png and b/firefox.png differ
diff --git a/firefox/00-proxy.yml b/firefox/00-proxy.yml
deleted file mode 100644
index 41f5978..0000000
--- a/firefox/00-proxy.yml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-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/firefox/10-manual.yml b/firefox/10-manual.yml
deleted file mode 100644
index 80bcc54..0000000
--- a/firefox/10-manual.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-manual:
- description: Manual proxy configuration
- disabled:
- 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/firefox/20-manual.yml b/firefox/20-manual.yml
deleted file mode 100644
index b167f70..0000000
--- a/firefox/20-manual.yml
+++ /dev/null
@@ -1,40 +0,0 @@
----
-manual:
-
- use_for_https: true # Also use this proxy for HTTPS
-
- "{{ identifier }}_proxy":
- description: "{{ identifier }} Proxy"
- dynamic:
- - HTTPS
- - SOCKS
- hidden:
- jinja: |
- {% if my_identifier == 'HTTPS' and _.use_for_https %}
- HTTPS is same has HTTP
- {% endif %}
- params:
- my_identifier:
- type: identifier
- description: |
- in HTTPS case if "manual.use_for_https" is set to True
-
- address:
- description: "{{ identifier }} address"
- default:
- variable: __.http_proxy.address
-
- port:
- description: "{{ identifier }} port"
- default:
- variable: __.http_proxy.port
-
- version:
- description: SOCKS host version used by proxy
- choices:
- - v4
- - v5
- default: v5
- disabled:
- type: identifier
- when: 'HTTPS'
diff --git a/firefox/30-auto.yml b/firefox/30-auto.yml
deleted file mode 100644
index 0e45339..0000000
--- a/firefox/30-auto.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-auto:
- description: Automatic proxy configuration URL
- type: web_address
- disabled:
- variable: _.proxy_mode
- when_not: Automatic proxy configuration URL
diff --git a/firefox/40-no_proxy.yml b/firefox/40-no_proxy.yml
deleted file mode 100644
index d6bede6..0000000
--- a/firefox/40-no_proxy.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-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:
- variable: _.proxy_mode
- when: No proxy
- examples:
- - .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/firefox/50-prompt_authentication.yml b/firefox/50-prompt_authentication.yml
deleted file mode 100644
index 7138e22..0000000
--- a/firefox/50-prompt_authentication.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-prompt_authentication:
- description: Prompt for authentication if password is saved
- default: true
- disabled:
- variable: _.proxy_mode
- when: No proxy
diff --git a/firefox/55-proxy_dns_socks5.yml b/firefox/55-proxy_dns_socks5.yml
deleted file mode 100644
index 0427894..0000000
--- a/firefox/55-proxy_dns_socks5.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-proxy_dns_socks5:
- description: Use proxy DNS when using SOCKS v5
- default: false
- mode: advanced
- disabled:
- jinja: |
- {% if _.manual.socks_proxy.version is propertyerror %}
- the proxy mode is not manual
- {% elif _.manual.socks_proxy.version == 'v4' %}
- socks version is v4
- {% endif %}
- description: |
- if "firefox.proxy_mode" is not "Manual proxy configuration"
- or "firefox.manual.socks_proxy.version" is "v4"
diff --git a/firefox/60-dns_over_https.yml b/firefox/60-dns_over_https.yml
deleted file mode 100644
index 94c0ec2..0000000
--- a/firefox/60-dns_over_https.yml
+++ /dev/null
@@ -1,31 +0,0 @@
----
-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:
- variable: _.enable_dns_over_https
- when: false
-
- custom_dns_url:
- description: Custom DNS URL
- type: web_address
- disabled:
- jinja: |
- {% if _.provider is propertyerror or _.provider != 'Custom' %}
- provider is not custom
- {% endif %}
- description: if "dns_over_https.provider" is not "Custom"
- validators:
- - jinja: |
- {% if dns_over_https.custom_dns_url.startswith('http://') %}
- only https is allowed
- {% endif %}
- description: must starts with 'https://' only
diff --git a/firefox/empty.yml b/firefox/empty.yml
deleted file mode 100644
index e69de29..0000000
diff --git a/foxyproxy/00-foxyproxy.yml b/foxyproxy/00-foxyproxy.yml
deleted file mode 100644
index 7158b8f..0000000
--- a/foxyproxy/00-foxyproxy.yml
+++ /dev/null
@@ -1,104 +0,0 @@
----
-proxies:
- description: Proxy configuration
- _type: leadership
-
- title:
- description: Title or Description
- mandatory: false
-
- type:
- description: Proxy Type
- choices:
- - HTTP
- - HTTPS/SSL
- - SOCKS4
- - SOCKS5
- - PAC URL
- - WPAD
- - System (use system settings)
- - Direct (no proxy)
- default: Direct (no proxy)
-
- color:
- description: Color
- regexp: "^#(?:[0-9a-f]{3}){1,2}$"
- auto_save: true
- default:
- jinja: |
- #
- {%- for i in range(6) -%}
- {{- '0123456789abcdef' | random -}}
- {%- endfor -%}
- description: random color value
-
- address:
- description: IP address, DNS name, server name
- type: domainname
- params:
- allow_ip: true
- allow_without_dot: true
- disabled: &needs_address
- jinja: |
- {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
- disabled
- {% endif %}
- description: |
- if type not in:
- - HTTP
- - HTTPS/SSL
- - SOCKS4
- - SOCKS5
- default:
- jinja: |
- {% if firefox.manual.http_proxy.address is not propertyerror %}
- {{ firefox.manual.http_proxy.address }}
- {% endif %}
- description: copy HTTP address if proxy is not "Manual"
-
- port:
- description: Port
- type: port
- default:
- jinja: |
- {% if firefox.manual.http_proxy.port is not propertyerror %}
- {{ firefox.manual.http_proxy.port }}
- {% endif %}
- description: copy HTTP port if proxy is not "Manual"
- disabled: *needs_address
-
- username:
- description: Username
- type: unix_user
- mandatory:
- jinja: |
- {% if _.password is not propertyerror and _.password %}
- username is mandatory
- {% endif %}
- 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:
- jinja: |
- {% if _.type not in ['PAC URL', 'WPAD'] %}
- proxy does not need url
- {% endif %}
- description: |
- if type is not in:
- - PAC URL
- - WPAD
- default:
- jinja: |
- {% if firefox.auto is not propertyerror %}
- {{ firefox.auto }}
- {% endif %}
- description: copy HTTP address if proxy is "Auto"
diff --git a/foxyproxy/10-redefine.yml b/foxyproxy/10-redefine.yml
deleted file mode 100644
index 83578f0..0000000
--- a/foxyproxy/10-redefine.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-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