38 KiB
- Summary
- [tutorial v1.1_190] A variable name that conflict with a known the variable's attribute "type" (diff)
[tutorial v1.1_200] Variable calculation with propertyerror
Read the tutorial "Variable calculation with propertyerror" in the documentation
Screenshot
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_200
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
Firefox
Note
This family is a namespace.
Path: firefox
basic
| Variable | Description |
|---|---|
firefox.proxy_modechoice 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
Note
Path: firefox.manual
basicdisabled
Disabled: when the variable "Configure Proxy Access to the Internet" hasn't the value "Manual proxy configuration"
HTTP Proxy
Note
Path: firefox.manual.http_proxy
basic
| Variable | Description |
|---|---|
firefox.manual.http_proxy.addressdomainname basic mandatory |
Proxy address. Validators: • type domainname • the domain name can be an IP |
firefox.manual.http_proxy.portport 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 |
| Variable | Description |
|---|---|
firefox.manual.use_for_httpsboolean standard mandatory |
Also use this proxy for HTTPS. Default: true |
HTTPS Proxy
Note
Path: firefox.manual.https_proxy
standardhidden
Hidden: when the variable "Also use this proxy for HTTPS" has the value "true"
| Variable | Description |
|---|---|
firefox.manual.https_proxy.addressdomainname standard mandatory |
Proxy address. Validators: • type domainname • the domain name can be an IP Default: the value of the variable "Proxy address" |
firefox.manual.https_proxy.portport 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" |
SOCKS Proxy
Note
Path: firefox.manual.socks_proxy
standard
| Variable | Description |
|---|---|
firefox.manual.socks_proxy.addressdomainname standard mandatory |
Proxy address. Validators: • type domainname • the domain name can be an IP Default: the value of the variable "Proxy address" |
firefox.manual.socks_proxy.portport 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" |
firefox.manual.socks_proxy.versionchoice standard mandatory |
SOCKS host version used by proxy. Choices: • v4 • v5 ← (default) |
| Variable | Description |
|---|---|
firefox.autoweb 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" |
firefox.no_proxydomainname 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" |
firefox.prompt_authenticationboolean 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" |
firefox.proxy_dns_socks5boolean 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" |
DNS over HTTPS
Note
Path: firefox.dns_over_https
basic
| Variable | Description |
|---|---|
firefox.dns_over_https.enable_dns_over_httpsboolean standard mandatory |
Enable DNS over HTTPS. Default: false |
firefox.dns_over_https.providerchoice standard mandatory disabled |
Use Provider. Choices: • Cloudflare ← (default) • NextDNS • Custom Disabled: when the variable "Enable DNS over HTTPS" has the value "false" |
firefox.dns_over_https.custom_dns_urlweb address basic mandatory disabled |
Custom DNS 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 • must starts with 'https://' only Disabled: if "Use Provider" is not "Custom" |
FoxyProxy
Note
This family is a namespace.
Path: foxyproxy
basic
Proxy configuration
Note
This family contains lists of variable blocks.
Path: foxyproxy.proxies
basic
| Variable | Description |
|---|---|
foxyproxy.proxies.titlestring multiple standard unique |
Title or Description. |
foxyproxy.proxies.typechoice standard mandatory |
Proxy Type. Choices: • HTTP • HTTPS/SSL • SOCKS4 • SOCKS5 • PAC URL • WPAD • System (use system settings) • Direct (no proxy) ← (default) |
foxyproxy.proxies.colorregexp basic mandatory auto modified |
Color. Validator: text based with regular expressions "^#(?:[0-9a-f]{3}){1,2}$" Default: random color value |
foxyproxy.proxies.addressdomainname standard mandatory disabled |
IP address, DNS name, server name. Validators: • type domainname • 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.portport standard mandatory disabled |
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: copy HTTP port if proxy is not "Manual" Disabled: if type not in: - HTTP - HTTPS/SSL - SOCKS4 - SOCKS5 |
foxyproxy.proxies.urlweb address standard mandatory disabled |
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 Default: copy HTTP address if proxy is "Auto" Disabled: if type is not in: - PAC URL - WPAD |
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
New variables
| Variable | Description |
|---|---|
foxyproxy.proxies.addressdomainname standard mandatory disabled |
IP address, DNS name, server name. Validators: • type domainname • 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.portport standard mandatory disabled |
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: copy HTTP port if proxy is not "Manual" Disabled: if type not in: - HTTP - HTTPS/SSL - SOCKS4 - SOCKS5 |
foxyproxy.proxies.urlweb address standard mandatory disabled |
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 Default: copy HTTP address if proxy is "Auto" Disabled: if type is not in: - PAC URL - WPAD |
Modified variable
| Variable | Description |
|---|---|
foxyproxy.proxies.colorregexp basic mandatory auto modified |
Color. Validator: text based with regular expressions "^#(?:[0-9a-f]{3}){1,2}$" Default: random color value |
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"
- 📂 title (Title or Description)
- 📂 proxies (Proxy configuration)
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 (Proxy address): http.proxy.net ← loaded from the YAML file "config/03/config.yml"
- 📓 port (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 (Proxy address): https.proxy.net ← loaded from the YAML file "config/03/config.yml" (⏳ http.proxy.net)
- 📓 port (Proxy port): 3128
- 📂 socks_proxy (SOCKS Proxy)
- 📓 address (Proxy address): http.proxy.net
- 📓 port (Proxy port): 3128
- 📓 version (SOCKS host version used by proxy): v5
- 📂 http_proxy (HTTP Proxy)
- 📓 no_proxy (Address for which proxy will be desactivated): []
- 📓 prompt_authentication (Prompt for authentication if password is saved): true
- 📓 proxy_dns_socks5 (Use proxy DNS when using SOCKS v5): false
- 📂 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
- 📂 title (Title or Description)
- 📂 proxies (Proxy configuration)