| config | ||
| firefox | ||
| types/proxy | ||
| firefox.png | ||
| foxyproxy.png | ||
| install.txt | ||
| README.md | ||
| tree.html | ||
[tutorial v1.1_150] A variable with custom validation
Read the tutorial "A variable with custom validation" 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_150
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
└── types
└── proxy
└── 00_type.yml
Contents of the firefox/60-dns_over_https.yml file
%YAML 1.2
---
version: 1.1
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
validators:
- jinja: |-
{{ _.custom_dns_url.startswith("http://") }}
return_type: boolean
description: must starts with 'https://' only
disabled:
jinja: |-
{{ _.provider is propertyerror or _.provider != 'Custom' }}
return_type: boolean
description: if "_.provider" is not "Custom"
...
Let's generate the documentation
rougail -m firefox/ --types types/proxy --modes_level basic standard advanced -o doc
| Variable | Description |
|---|---|
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: manual
basicdisabled
Disabled: when the variable "Configure Proxy Access to the Internet" hasn't the value "Manual proxy configuration"
HTTP Proxy
Note
Path: manual.http_proxy
basic
| Variable | Description |
|---|---|
manual.http_proxy.addressdomainname basic mandatory |
Proxy address. Validators: • type domainname • the domain name can be an IP |
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 |
|---|---|
manual.use_for_httpsboolean standard mandatory |
Also use this proxy for HTTPS. Default: true |
HTTPS Proxy
Note
Path: manual.https_proxy
standardhidden
Hidden: when the variable "Also use this proxy for HTTPS" has the value "true"
| Variable | Description |
|---|---|
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" |
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: manual.socks_proxy
standard
| Variable | Description |
|---|---|
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" |
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" |
manual.socks_proxy.versionchoice standard mandatory |
SOCKS host version used by proxy. Choices: • v4 • v5 ← (default) |
| Variable | Description |
|---|---|
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" |
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" |
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" |
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: dns_over_https
basic
| Variable | Description |
|---|---|
dns_over_https.enable_dns_over_httpsboolean standard mandatory |
Enable DNS over HTTPS. Default: false |
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" |
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" |
Let's generate the changelog
rougail -m firefox/ --types types/proxy --modes_level basic standard advanced -o doc --doc.contents changelog --doc.changelog.previous_json_file previous.yml
Modified variable
| Variable | Description |
|---|---|
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" |
User datas
Example 1
config/01/config.yml
---
Output
rougail -m firefox/ --types types/proxy --modes_level basic standard advanced -u yaml -yf config/01/config.yml
Note
Caption:
- Variable
- Default value
Variables:
- 📓 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
Example 2
config/02/config.yml
---
dns_over_https:
enable_dns_over_https: true
Output
rougail -m firefox/ --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:
- 📓 proxy_mode (Configure Proxy Access to the Internet): No proxy
- 📂 dns_over_https (DNS over HTTPS)
- 📓 enable_dns_over_https (Enable DNS over HTTPS): true ← loaded from the YAML file "config/02/config.yml" (⏳ false)
- 📓 provider (Use Provider): Cloudflare
Example 3
config/03/config.yml
---
dns_over_https:
enable_dns_over_https: true
provider: Custom
custom_dns_url: http://dns.net
Output
rougail -m firefox/ --types types/proxy --modes_level basic standard advanced -u yaml -yf config/03/config.yml
Caution
- dns_over_https (DNS over HTTPS)
- custom_dns_url (Custom DNS URL)
- 🔔 the value "http://dns.net" is an invalid URL, must starts with 'https://' only, it will be ignored when loading from the YAML file "config/03/config.yml"
- 🛑 mandatory variable but has no value
Example 4
config/04/config.yml
---
dns_over_https:
enable_dns_over_https: true
provider: Custom
custom_dns_url: https://dns.net
Output
rougail -m firefox/ --types types/proxy --modes_level basic standard advanced -u yaml -yf config/04/config.yml
Note
Caption:
- Variable
- Default value
- Modified value
- (⏳ Original default value)
Variables:
- 📓 proxy_mode (Configure Proxy Access to the Internet): No proxy
- 📂 dns_over_https (DNS over HTTPS)
- 📓 enable_dns_over_https (Enable DNS over HTTPS): true ← loaded from the YAML file "config/04/config.yml" (⏳ false)
- 📓 provider (Use Provider): Custom ← loaded from the YAML file "config/04/config.yml" (⏳ Cloudflare)
- 📓 custom_dns_url (Custom DNS URL): https://dns.net ← loaded from the YAML file "config/04/config.yml"