No description
Find a file
2026-05-05 06:55:00 +02:00
config [tutorial v1.1_220] Variable calculation with propertyerror (config and doc) 2026-05-05 06:55:00 +02:00
firefox [tutorial v1.1_170] A variable with custom validation 2026-05-05 06:54:29 +02:00
foxyproxy [tutorial v1.1_210] A variable name that conflict with a known the variable's attribute "type" 2026-05-05 06:54:56 +02:00
types/proxy [tutorial v1.1_084] Redefine other parameter in custom type for HTTP 2026-05-05 06:53:22 +02:00
CHANGELOG.md [tutorial v1.1_220] Variable calculation with propertyerror (config and doc) 2026-05-05 06:55:00 +02:00
DOCUMENTATION.md [tutorial v1.1_220] Variable calculation with propertyerror (config and doc) 2026-05-05 06:55:00 +02:00
firefox.png [tutorial v1.1_160] A boolean variable (config and doc) 2026-05-05 06:54:17 +02:00
foxyproxy.png [init] Discover Rougail 2026-05-05 06:51:36 +02:00
install.txt [init] Discover Rougail 2026-05-05 06:51:36 +02:00
README.md [tutorial v1.1_220] Variable calculation with propertyerror (config and doc) 2026-05-05 06:55:00 +02:00
tree.html [tutorial v1.1_220] Variable calculation with propertyerror (config and doc) 2026-05-05 06:55:00 +02:00

[tutorial v1.1_220] Variable calculation with propertyerror

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_220

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
│   └── 60-dns_over_https.yml
├── foxyproxy
│   └── 00-foxyproxy.yml
└── types
    └── proxy
        └── 00-type.yml


Contents of the foxyproxy/00-foxyproxy.yml file

%YAML 1.2
---
version: 1.1

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}$
    default:
      jinja: >-
        #{%- for i in range(6) -%}{{- '0123456789abcdef' | random -}}{%- endfor -%}        
      description: random color value
    auto_save: true

  address:
    description: IP address, DNS name, server name
    type: domainname
    params:
      allow_ip: true
      allow_without_dot: true
    default:
      description: copy HTTP address if proxy is not "Manual"
      variable: firefox.manual.http_proxy.address
      propertyerror: false
    disabled:
      jinja: |-
        {{ _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] }}        
      return_type: boolean
      description: |-
        if type not in:
        - HTTP
        - HTTPS/SSL
        - SOCKS4
        - SOCKS5        

  port:
    description: Port
    type: port
    default:
      description: copy HTTP port if proxy is not "Manual"
      variable: firefox.manual.http_proxy.port
      propertyerror: false
    disabled:
      jinja: |-
        {{ _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] }}        
      return_type: boolean
      description: |-
        if type not in:
        - HTTP
        - HTTPS/SSL
        - SOCKS4
        - SOCKS5        

  url:
    description: URL
    type: web_address
    default:
      description: copy HTTP address if proxy is "Auto"
      variable: firefox.auto
      propertyerror: false
    disabled:
      jinja: |-
        {{ _.type not in ['PAC URL', 'WPAD'] }}        
      return_type: boolean
      description: |-
        if type is not in:
        - PAC URL
        - WPAD        
...


Let's generate the documentation

rougail -m firefox/ -s Firefox -xn FoxyProxy -xd 0 foxyproxy/ --types types/proxy --modes_level basic standard advanced -o doc

View the documentation file


Let's generate the changelog

rougail -m firefox/ -s Firefox -xn FoxyProxy -xd 0 foxyproxy/ --types types/proxy --modes_level basic standard advanced -o doc --doc.contents changelog --doc.changelog.previous_json_file previous.yml

View the changelog file


User datas

Example 1

config/01/config.yml

---

Output

rougail -m firefox/ -s Firefox -xn FoxyProxy -xd 0 foxyproxy/ --types types/proxy --modes_level basic standard advanced -u yaml -yf config/01/config.yml

Note

Caption:

  • Variable
  • Default value

Variables:

  • 📂 firefox (Firefox)
    • 📓 proxy_mode (Configure Proxy Access to the Internet): No proxy
    • 📂 dns_over_https (DNS over HTTPS)
      • 📓 enable_dns_over_https (Enable DNS over HTTPS): false
  • 📂 foxyproxy (FoxyProxy)
    • 📂 proxies (Proxy configuration): []

Example 2

config/02/config.yml

---
foxyproxy:
  proxies:
    - title: My company
      type: HTTP
      color: '#66cc66'
      address: proxy.company.net
      port: 8080

Output

rougail -m firefox/ -s Firefox -xn FoxyProxy -xd 0 foxyproxy/ --types types/proxy --modes_level basic standard advanced -u yaml -yf config/02/config.yml

Note

Caption:

  • Variable
  • Default value
  • Modified value
  • ( Original default value)

Variables:

  • 📂 firefox (Firefox)
    • 📓 proxy_mode (Configure Proxy Access to the Internet): No proxy
    • 📂 dns_over_https (DNS over HTTPS)
      • 📓 enable_dns_over_https (Enable DNS over HTTPS): false
  • 📂 foxyproxy (FoxyProxy)
    • 📂 proxies (Proxy configuration)
      • 📂 title (Title or Description)
        • 📓 title (Title or Description): My company ← loaded from the YAML file "config/02/config.yml"
        • 📓 type (Proxy Type): HTTP ← loaded from the YAML file "config/02/config.yml" ( Direct (no proxy))
        • 📓 color (Color): #66cc66 ← loaded from the YAML file "config/02/config.yml"
        • 📓 address (IP address, DNS name, server name): proxy.company.net ← loaded from the YAML file "config/02/config.yml"
        • 📓 port (Port): 8080 ← loaded from the YAML file "config/02/config.yml"

Example 3

config/03/config.yml

---
firefox:
  proxy_mode: Manual proxy configuration
  manual:
    http_proxy:
      address: http.proxy.net
      port: 3128
    use_for_https: false
    https_proxy:
      address: https.proxy.net
foxyproxy:
  proxies:
    - title: My company
      type: HTTP
      color: '#66cc66'

Output

rougail -m firefox/ -s Firefox -xn FoxyProxy -xd 0 foxyproxy/ --types types/proxy --modes_level basic standard advanced -u yaml -yf config/03/config.yml

Note

Caption:

  • Variable
  • Default value
  • Modified value
  • ( Original default value)

Variables:

  • 📂 firefox (Firefox)
    • 📓 proxy_mode (Configure Proxy Access to the Internet): Manual proxy configuration ← loaded from the YAML file "config/03/config.yml" ( No proxy)
    • 📂 manual (Manual proxy configuration)
      • 📂 http_proxy (HTTP Proxy)
        • 📓 address (HTTP proxy address): http.proxy.net ← loaded from the YAML file "config/03/config.yml"
        • 📓 port (HTTP proxy port): 3128 ← loaded from the YAML file "config/03/config.yml" ( 8080)
      • 📓 use_for_https (Also use this proxy for HTTPS): false ← loaded from the YAML file "config/03/config.yml" ( true)
      • 📂 https_proxy (HTTPS Proxy)
        • 📓 address (HTTPS proxy address): https.proxy.net ← loaded from the YAML file "config/03/config.yml" ( http.proxy.net)
        • 📓 port (HTTPS proxy port): 3128
      • 📂 socks_proxy (SOCKS Proxy)
        • 📓 address (SOCKS proxy address): null
    • 📓 no_proxy (Address for which proxy will be desactivated): []
    • 📓 prompt_authentication (Prompt for authentication if password is saved): true
    • 📂 dns_over_https (DNS over HTTPS)
      • 📓 enable_dns_over_https (Enable DNS over HTTPS): false
  • 📂 foxyproxy (FoxyProxy)
    • 📂 proxies (Proxy configuration)
      • 📂 title (Title or Description)
        • 📓 title (Title or Description): My company ← loaded from the YAML file "config/03/config.yml"
        • 📓 type (Proxy Type): HTTP ← loaded from the YAML file "config/03/config.yml" ( Direct (no proxy))
        • 📓 color (Color): #66cc66 ← loaded from the YAML file "config/03/config.yml"
        • 📓 address (IP address, DNS name, server name): http.proxy.net
        • 📓 port (Port): 3128