No description
Find a file
2026-04-17 12:31:24 +02:00
config/01 [tutorial v1.1_081] HTTP Proxy with "proxy" type with calculated default value (config and doc) 2026-04-17 12:31:24 +02:00
firefox [tutorial v1.1_081] HTTP Proxy with "proxy" type with calculated default value 2026-04-17 12:31:24 +02:00
types/proxy [tutorial v1.1_081] HTTP Proxy with "proxy" type with calculated default value 2026-04-17 12:31:24 +02:00
firefox.png [tutorial v1.1_052] A hidden family (config and doc) 2026-04-17 12:30:58 +02:00
foxyproxy.png [init] Discover Rougail 2026-04-17 12:30:18 +02:00
install.txt [init] Discover Rougail 2026-04-17 12:30:18 +02:00
README.md [tutorial v1.1_081] HTTP Proxy with "proxy" type with calculated default value (config and doc) 2026-04-17 12:31:24 +02:00
tree.html [tutorial v1.1_081] HTTP Proxy with "proxy" type with calculated default value (config and doc) 2026-04-17 12:31:24 +02:00

[tutorial v1.1_081] HTTP Proxy with "proxy" type with calculated default value

Read the tutorial "HTTP Proxy with "proxy" type with calculated default value" 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_081

Structure

.
├── firefox
│   ├── 00-proxy.yml
│   ├── 10-manual.yml
│   └── 20-manual.yml
└── types
    └── proxy
        └── 00-type.yml


Contents of the firefox/20-manual.yml file

%YAML 1.2
---
version: 1.1

manual:

  use_for_https: true  # Also use this proxy for HTTPS

  '{{ identifier }}_proxy':
    description: '{{ identifier }} Proxy'
    hidden:
      jinja: |-
        {{ my_identifier == 'HTTPS' and _.use_for_https }}        
      return_type: boolean
      description: in HTTPS case if "_.use_for_https" is set to "true"
      params:
        my_identifier:
          type: identifier
    dynamic:
      - HTTPS
      - SOCKS

    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
...


Let's generate the documentation```shell

rougail -m firefox/ --types types/proxy -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) `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\
> *`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

| 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) `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) `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) `mandatory` | Also use this proxy for HTTPS.<br/>**Default**: true |

##### *HTTPS* or *SOCKS* Proxy

> [!NOTE]
> 
> This family builds families dynamically.\
> **Path**: 
> - manual.*https*_proxy
> - manual.*socks*_proxy\
> *`hidden`*\
> **Hidden**: in HTTPS case if "[Also use this proxy for HTTPS](#manual.use_for_https)" is set to "true".\
> **Identifiers**: 
> - HTTPS
> - SOCKS

| Variable                                                                                                                                                                                                                                                                    | Description                                                                                                                                                                                                                                                                                            |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="manual.:::identifier:::_proxy.address" name="manual.:::identifier:::_proxy.address">manual.*https*_proxy.address</a>**<br/>**manual.*socks*_proxy.address**<br/>[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory` | *HTTPS* or *SOCKS* 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.:::identifier:::_proxy.port" name="manual.:::identifier:::_proxy.port">manual.*https*_proxy.port</a>**<br/>**manual.*socks*_proxy.port**<br/>[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory`                   | *HTTPS* or *SOCKS* 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.:::identifier:::_proxy.version" name="manual.:::identifier:::_proxy.version">manual.*socks*_proxy.version</a>**<br/>[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory` *`disabled`*                             | SOCKS host version used by proxy.<br/>**Choices**: <br/>•&nbsp;v4<br/>•&nbsp;v5 **← (default)**<br/>**Disabled**: when the identifier is "HTTPS".                                                                                                                                                      |
***
### Let's generate the changelog```shell
rougail -m firefox/ --types types/proxy -o doc --doc.contents changelog --doc.changelog.previous_json_file previous.yml

Modified variable

Variable Description
manual.http_proxy.port
port 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

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

---
proxy_mode: Manual proxy configuration
manual:
  http_proxy:
    address: http.proxy.net
    port: 3128
  use_for_https: false
  https_proxy:
    address: https.proxy.net

Output```shell

rougail -m firefox/ --types types/proxy -u yaml -yf config/01/config.yml

> [!NOTE]
>
> **Caption:**
> - Variable
> - <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/01/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/01/config.yml"
    - :notebook: port (Proxy port): <span style="color: #006400">3128</span> ← loaded from the YAML file "config/01/config.yml" (:hourglass_flowing_sand: 8080)
  - :notebook: use_for_https (Also use this proxy for HTTPS): <span style="color: #006400">false</span> ← loaded from the YAML file "config/01/config.yml" (:hourglass_flowing_sand: true)
  - :open_file_folder: https_proxy (HTTPS Proxy)
    - :notebook: address (HTTPS address): <span style="color: #006400">https.proxy.net</span> ← loaded from the YAML file "config/01/config.yml" (:hourglass_flowing_sand: http.proxy.net)
    - :notebook: port (HTTPS port): <span style="color: #B8860B">3128</span>
  - :open_file_folder: socks_proxy (SOCKS Proxy)
    - :notebook: address (SOCKS address): <span style="color: #B8860B">http.proxy.net</span>
    - :notebook: port (SOCKS port): <span style="color: #B8860B">3128</span>
    - :notebook: version (SOCKS host version used by proxy): <span style="color: #B8860B">v5</span>

***


- [[tutorial v1.1_082] HTTPS and SOCKS Proxy](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))