No description
Find a file
2026-04-17 12:27:40 +02:00
config [tutorial v1.1_130] A variable in avanced mode (config and doc) 2026-04-17 12:27:40 +02:00
firefox [tutorial v1.1_130] A variable in avanced mode 2026-04-17 12:27:40 +02:00
types/proxy [tutorial v1.1_081] HTTP Proxy with "proxy" type with calculated default value 2026-04-17 12:27:11 +02:00
firefox.png [tutorial v1.1_110] A conditional disabled boolean variable (config and doc) 2026-04-17 12:27:30 +02:00
foxyproxy.png [init] Discover Rougail 2026-04-17 12:26:16 +02:00
install.txt [init] Discover Rougail 2026-04-17 12:26:16 +02:00
README.md [tutorial v1.1_130] A variable in avanced mode (config and doc) 2026-04-17 12:27:40 +02:00
tree.html [tutorial v1.1_130] A variable in avanced mode (config and doc) 2026-04-17 12:27:40 +02:00

[tutorial v1.1_130] A variable in avanced mode

Read the tutorial "A variable in avanced mode" in the documentation

Screenshot

Firefox Proxy setting

Clone and install

To test this tutorial, you need to download this repository and install Rougail:

git clone -b 1.1 https://forge.cloud.silique.fr/stove/rougail-tutorials.git
cd rougail-tutorials
python -m venv venv_rougail
. venv_rougail/bin/activate
pip install rougail-cli rougail-output-exporter rougail-output-doc rougail-user-data-yaml

Then switch to the tutorial page:

git switch --detach v1.1_130

Structure

.
├── firefox
│   ├── 00-proxy.yml
│   ├── 10-manual.yml
│   ├── 20-manual.yml
│   ├── 30-auto.yml
│   ├── 40-no_proxy.yml
│   ├── 50-prompt_authentication.yml
│   └── 55-proxy_dns_socks5.yml
└── types
    └── proxy
        └── 00-type.yml


Contents of the firefox/55-proxy_dns_socks5.yml file

%YAML 1.2
---
version: 1.1

proxy_dns_socks5:
  description: Use proxy DNS when using SOCKS v5
  mode: advanced
  default: false
  disabled:
    jinja: |-
      {{ _.manual.socks_proxy.version is propertyerror or _.manual.socks_proxy.version == 'v4' }}      
    return_type: boolean
    description: |-
      if "_.proxy_mode" is not "Manual proxy configuration"
      or "_.manual.socks_proxy.version" is "v4"      
...


Let's generate the documentation```shell

rougail -m firefox/ --types types/proxy --modes_level basic standard advanced -o doc

| Variable                                                                                                                                                              | Description                                                                                                                                                                                                                                                                  |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="proxy_mode" name="proxy_mode">proxy_mode</a>**<br/>[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Configure Proxy Access to the Internet.<br/>**Choices**: <br/>•&nbsp;No proxy **← (default)**<br/>•&nbsp;Auto-detect proxy settings for this network<br/>•&nbsp;Use system proxy settings<br/>•&nbsp;Manual proxy configuration<br/>•&nbsp;Automatic proxy configuration URL |

#### Manual proxy configuration

> [!NOTE]
> 
> **Path**: manual\
> `basic` *`disabled`*\
> **Disabled**: when the variable "[Configure Proxy Access to the Internet](#proxy_mode)" hasn't the value "Manual proxy configuration".

##### HTTP Proxy

> [!NOTE]
> 
> **Path**: manual.http_proxy\
> `basic`

| Variable                                                                                                                                                                                                            | Description                                                                                                                                                                                                                 |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="manual.http_proxy.address" name="manual.http_proxy.address">manual.http_proxy.address</a>**<br/>[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` | Proxy address.<br/>**Validators**: <br/>•&nbsp;type domainname<br/>•&nbsp;the domain name can be an IP                                                                                                                      |
| **<a id="manual.http_proxy.port" name="manual.http_proxy.port">manual.http_proxy.port</a>**<br/>[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory`             | Proxy port.<br/>**Validators**: <br/>•&nbsp;well-known ports (1 to 1023) are allowed<br/>•&nbsp;registred ports (1024 to 49151) are allowed<br/>•&nbsp;private ports (greater than 49152) are allowed<br/>**Default**: 8080 |

| Variable                                                                                                                                                                                             | Description                                          |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------|
| **<a id="manual.use_for_https" name="manual.use_for_https">manual.use_for_https</a>**<br/>[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Also use this proxy for HTTPS.<br/>**Default**: true |

##### HTTPS Proxy

> [!NOTE]
> 
> **Path**: manual.https_proxy\
> `standard` *`hidden`*\
> **Hidden**: when the variable "[Also use this proxy for HTTPS](#manual.use_for_https)" has the value "true".

| Variable                                                                                                                                                                                                                  | Description                                                                                                                                                                                                                                                                               |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="manual.https_proxy.address" name="manual.https_proxy.address">manual.https_proxy.address</a>**<br/>[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Proxy address.<br/>**Validators**: <br/>•&nbsp;type domainname<br/>•&nbsp;the domain name can be an IP<br/>**Default**: the value of the variable "[Proxy address](#manual.http_proxy.address)".                                                                                          |
| **<a id="manual.https_proxy.port" name="manual.https_proxy.port">manual.https_proxy.port</a>**<br/>[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory`                | Proxy port.<br/>**Validators**: <br/>•&nbsp;well-known ports (1 to 1023) are allowed<br/>•&nbsp;registred ports (1024 to 49151) are allowed<br/>•&nbsp;private ports (greater than 49152) are allowed<br/>**Default**: the value of the variable "[Proxy port](#manual.http_proxy.port)". |

##### SOCKS Proxy

> [!NOTE]
> 
> **Path**: manual.socks_proxy\
> `standard`

| Variable                                                                                                                                                                                                                  | Description                                                                                                                                                                                                                                                                               |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="manual.socks_proxy.address" name="manual.socks_proxy.address">manual.socks_proxy.address</a>**<br/>[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Proxy address.<br/>**Validators**: <br/>•&nbsp;type domainname<br/>•&nbsp;the domain name can be an IP<br/>**Default**: the value of the variable "[Proxy address](#manual.http_proxy.address)".                                                                                          |
| **<a id="manual.socks_proxy.port" name="manual.socks_proxy.port">manual.socks_proxy.port</a>**<br/>[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory`                | Proxy port.<br/>**Validators**: <br/>•&nbsp;well-known ports (1 to 1023) are allowed<br/>•&nbsp;registred ports (1024 to 49151) are allowed<br/>•&nbsp;private ports (greater than 49152) are allowed<br/>**Default**: the value of the variable "[Proxy port](#manual.http_proxy.port)". |
| **<a id="manual.socks_proxy.version" name="manual.socks_proxy.version">manual.socks_proxy.version</a>**<br/>[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory`     | SOCKS host version used by proxy.<br/>**Choices**: <br/>•&nbsp;v4<br/>•&nbsp;v5 **← (default)**                                                                                                                                                                                           |

| Variable                                                                                                                                                                                                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="auto" name="auto">auto</a>**<br/>[`web address`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` *`disabled`*                                                   | Automatic proxy configuration URL.<br/>**Validators**: <br/>•&nbsp;well-known ports (1 to 1023) are allowed<br/>•&nbsp;registred ports (1024 to 49151) are allowed<br/>•&nbsp;type domainname<br/>•&nbsp;the domain name can be a hostname<br/>**Disabled**: when the variable "[Configure Proxy Access to the Internet](#proxy_mode)" hasn't the value "Automatic proxy configuration URL".                                                                                                                                                                                  |
| **<a id="no_proxy" name="no_proxy">no_proxy</a>**<br/>[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `multiple` `standard` *`disabled`* `unique`                             | Address for which proxy will be desactivated.<br/>Connections to localhost, 127.0.0.1/8 and ::1 are never proxied.<br/>**Validators**: <br/>•&nbsp;type domainname<br/>•&nbsp;the domain name can starts by a dot<br/>•&nbsp;the domain name can be a hostname<br/>•&nbsp;the domain name can be an IP<br/>•&nbsp;the domain name can be network in CIDR format<br/>**Examples**: <br/>•&nbsp;.mozilla.org<br/>•&nbsp;.net.nz<br/>•&nbsp;192.168.1.0/24<br/>**Disabled**: when the variable "[Configure Proxy Access to the Internet](#proxy_mode)" has the value "No proxy". |
| **<a id="prompt_authentication" name="prompt_authentication">prompt_authentication</a>**<br/>[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` *`disabled`* | Prompt for authentication if password is saved.<br/>**Default**: true<br/>**Disabled**: when the variable "[Configure Proxy Access to the Internet](#proxy_mode)" has the value "No proxy".                                                                                                                                                                                                                                                                                                                                                                                   |
| **<a id="proxy_dns_socks5" name="proxy_dns_socks5">proxy_dns_socks5</a>**<br/>[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `advanced` `mandatory` *`disabled`*                | Use proxy DNS when using SOCKS v5.<br/>**Default**: false<br/>**Disabled**: if "[Configure Proxy Access to the Internet](#proxy_mode)" is not "Manual proxy configuration"<br/>or "[SOCKS host version used by proxy](#manual.socks_proxy.version)" is "v4".                                                                                                                                                                                                                                                                                                                  |
***
### Let's generate the changelog```shell
rougail -m firefox/ --types types/proxy --modes_level basic standard advanced -o doc --doc.contents changelog --doc.changelog.previous_json_file previous.yml

Modified variables

Variable Description
proxy_mode
standard choice 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.http_proxy.address
basic domainname basic mandatory
Proxy address.
Validators:
• type domainname
• the domain name can be an IP
manual.http_proxy.port
standard port standard mandatory
Proxy port.
Validators:
• well-known ports (1 to 1023) are allowed
• registred ports (1024 to 49151) are allowed
• private ports (greater than 49152) are allowed
Default: 8080
manual.use_for_https
standard boolean standard mandatory
Also use this proxy for HTTPS.
Default: true
manual.https_proxy.address
standard domainname standard mandatory
Proxy address.
Validators:
• type domainname
• the domain name can be an IP
Default: the value of the variable "Proxy address".
manual.https_proxy.port
standard port standard mandatory
Proxy port.
Validators:
• well-known ports (1 to 1023) are allowed
• registred ports (1024 to 49151) are allowed
• private ports (greater than 49152) are allowed
Default: the value of the variable "Proxy port".
manual.socks_proxy.address
standard domainname standard mandatory
Proxy address.
Validators:
• type domainname
• the domain name can be an IP
Default: the value of the variable "Proxy address".
manual.socks_proxy.port
standard port standard mandatory
Proxy port.
Validators:
• well-known ports (1 to 1023) are allowed
• registred ports (1024 to 49151) are allowed
• private ports (greater than 49152) are allowed
Default: the value of the variable "Proxy port".
manual.socks_proxy.version
standard choice standard mandatory
SOCKS host version used by proxy.
Choices:
• v4
• v5 ← (default)
auto
basic web address basic mandatory disabled
Automatic proxy configuration URL.
Validators:
• well-known ports (1 to 1023) are allowed
• registred ports (1024 to 49151) are allowed
• type domainname
• the domain name can be a hostname
Disabled: when the variable "Configure Proxy Access to the Internet" hasn't the value "Automatic proxy configuration URL".
no_proxy
standard domainname multiple standard disabled unique
Address for which proxy will be desactivated.
Connections to localhost, 127.0.0.1/8 and ::1 are never proxied.
Validators:
• type domainname
• 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 "Configure Proxy Access to the Internet" has the value "No proxy".
prompt_authentication
standard boolean standard mandatory disabled
Prompt for authentication if password is saved.
Default: true
Disabled: when the variable "Configure Proxy Access to the Internet" has the value "No proxy".
proxy_dns_socks5
advanced boolean advanced mandatory disabled
Use proxy DNS when using SOCKS v5.
Default: false
Disabled: if "Configure Proxy Access to the Internet" is not "Manual proxy configuration"
or "SOCKS host version used by proxy" is "v4".

User datas### Example 1#### config/01/config.yml

---

Output```shell

rougail -m firefox/ --types types/proxy --modes_level basic standard advanced -u yaml -yf config/01/config.yml

> [!NOTE]
>
> **Caption:**
> - Variable
> - <span style="color: #B8860B">Default value</span>

Variables:
- :notebook: proxy_mode (Configure Proxy Access to the Internet): <span style="color: #B8860B">No proxy</span>

***
### Example 2#### config/02/config.yml
```yml
---
proxy_mode: Manual proxy configuration
manual:
  http_proxy:
    address: http.proxy.net

Output```shell

rougail -m firefox/ --types types/proxy --modes_level basic standard advanced -u yaml -yf config/02/config.yml

> [!NOTE]
>
> **Caption:**
> - Variable
> - <span style="color: #A52A2A">Unmodifiable variable</span>
> - <span style="color: #B8860B">Default value</span>
> - <span style="color: #006400">Modified value</span>
> - (:hourglass_flowing_sand: Original default value)

Variables:
- :notebook: proxy_mode (Configure Proxy Access to the Internet): <span style="color: #006400">Manual proxy configuration</span> ← loaded from the YAML file "config/02/config.yml" (:hourglass_flowing_sand: No proxy)
- :open_file_folder: manual (Manual proxy configuration)
  - :open_file_folder: http_proxy (HTTP Proxy)
    - :notebook: address (Proxy address): <span style="color: #006400">http.proxy.net</span> ← loaded from the YAML file "config/02/config.yml"
    - :notebook: port (Proxy port): <span style="color: #B8860B">8080</span>
  - :notebook: use_for_https (Also use this proxy for HTTPS): <span style="color: #B8860B">true</span>
  - :open_file_folder: <span style="color: #A52A2A">https_proxy (HTTPS Proxy)</span>
    - :notebook: <span style="color: #A52A2A">address (Proxy address)</span>: <span style="color: #B8860B">http.proxy.net</span>
    - :notebook: <span style="color: #A52A2A">port (Proxy port)</span>: <span style="color: #B8860B">8080</span>
  - :open_file_folder: socks_proxy (SOCKS Proxy)
    - :notebook: address (Proxy address): <span style="color: #B8860B">http.proxy.net</span>
    - :notebook: port (Proxy port): <span style="color: #B8860B">8080</span>
    - :notebook: version (SOCKS host version used by proxy): <span style="color: #B8860B">v5</span>
- :notebook: no_proxy (Address for which proxy will be desactivated): <span style="color: #B8860B">[]</span>
- :notebook: prompt_authentication (Prompt for authentication if password is saved): <span style="color: #B8860B">true</span>
- :notebook: proxy_dns_socks5 (Use proxy DNS when using SOCKS v5): <span style="color: #B8860B">false</span>

***
### Example 3#### config/03/config.yml
```yml
---
proxy_mode: Manual proxy configuration
manual:
  http_proxy:
    address: http.proxy.net
proxy_dns_socks5: true

Output```shell

rougail -m firefox/ --types types/proxy --modes_level basic standard advanced -u yaml -yf config/03/config.yml

> [!NOTE]
>
> **Caption:**
> - Variable
> - <span style="color: #A52A2A">Unmodifiable variable</span>
> - <span style="color: #B8860B">Default value</span>
> - <span style="color: #006400">Modified value</span>
> - (:hourglass_flowing_sand: Original default value)

Variables:
- :notebook: proxy_mode (Configure Proxy Access to the Internet): <span style="color: #006400">Manual proxy configuration</span> ← loaded from the YAML file "config/03/config.yml" (:hourglass_flowing_sand: No proxy)
- :open_file_folder: manual (Manual proxy configuration)
  - :open_file_folder: http_proxy (HTTP Proxy)
    - :notebook: address (Proxy address): <span style="color: #006400">http.proxy.net</span> ← loaded from the YAML file "config/03/config.yml"
    - :notebook: port (Proxy port): <span style="color: #B8860B">8080</span>
  - :notebook: use_for_https (Also use this proxy for HTTPS): <span style="color: #B8860B">true</span>
  - :open_file_folder: <span style="color: #A52A2A">https_proxy (HTTPS Proxy)</span>
    - :notebook: <span style="color: #A52A2A">address (Proxy address)</span>: <span style="color: #B8860B">http.proxy.net</span>
    - :notebook: <span style="color: #A52A2A">port (Proxy port)</span>: <span style="color: #B8860B">8080</span>
  - :open_file_folder: socks_proxy (SOCKS Proxy)
    - :notebook: address (Proxy address): <span style="color: #B8860B">http.proxy.net</span>
    - :notebook: port (Proxy port): <span style="color: #B8860B">8080</span>
    - :notebook: version (SOCKS host version used by proxy): <span style="color: #B8860B">v5</span>
- :notebook: no_proxy (Address for which proxy will be desactivated): <span style="color: #B8860B">[]</span>
- :notebook: prompt_authentication (Prompt for authentication if password is saved): <span style="color: #B8860B">true</span>
- :notebook: proxy_dns_socks5 (Use proxy DNS when using SOCKS v5): <span style="color: #006400">true</span> ← loaded from the YAML file "config/03/config.yml" (:hourglass_flowing_sand: false)

***
### Example 4#### config/04/config.yml
```yml
---
proxy_mode: Manual proxy configuration
manual:
  http_proxy:
    address: http.proxy.net
  socks_proxy:
    version: v4

Output```shell

rougail -m firefox/ --types types/proxy --modes_level basic standard advanced -u yaml -yf config/04/config.yml

> [!NOTE]
>
> **Caption:**
> - Variable
> - <span style="color: #A52A2A">Unmodifiable variable</span>
> - <span style="color: #B8860B">Default value</span>
> - <span style="color: #006400">Modified value</span>
> - (:hourglass_flowing_sand: Original default value)

Variables:
- :notebook: proxy_mode (Configure Proxy Access to the Internet): <span style="color: #006400">Manual proxy configuration</span> ← loaded from the YAML file "config/04/config.yml" (:hourglass_flowing_sand: No proxy)
- :open_file_folder: manual (Manual proxy configuration)
  - :open_file_folder: http_proxy (HTTP Proxy)
    - :notebook: address (Proxy address): <span style="color: #006400">http.proxy.net</span> ← loaded from the YAML file "config/04/config.yml"
    - :notebook: port (Proxy port): <span style="color: #B8860B">8080</span>
  - :notebook: use_for_https (Also use this proxy for HTTPS): <span style="color: #B8860B">true</span>
  - :open_file_folder: <span style="color: #A52A2A">https_proxy (HTTPS Proxy)</span>
    - :notebook: <span style="color: #A52A2A">address (Proxy address)</span>: <span style="color: #B8860B">http.proxy.net</span>
    - :notebook: <span style="color: #A52A2A">port (Proxy port)</span>: <span style="color: #B8860B">8080</span>
  - :open_file_folder: socks_proxy (SOCKS Proxy)
    - :notebook: address (Proxy address): <span style="color: #B8860B">http.proxy.net</span>
    - :notebook: port (Proxy port): <span style="color: #B8860B">8080</span>
    - :notebook: version (SOCKS host version used by proxy): <span style="color: #006400">v4</span> ← loaded from the YAML file "config/04/config.yml" (:hourglass_flowing_sand: v5)
- :notebook: no_proxy (Address for which proxy will be desactivated): <span style="color: #B8860B">[]</span>
- :notebook: prompt_authentication (Prompt for authentication if password is saved): <span style="color: #B8860B">true</span>

***


- [[tutorial v1.1_140] A boolean variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_140/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_140~1..v1.1_140))