No description
Find a file
2024-09-07 19:07:09 +02:00
config [tutorial 100] xxx (config and doc) 2024-09-07 19:07:04 +02:00
firefox [tutorial 062] A variable with custom validation 2024-09-07 19:07:03 +02:00
foxyproxy [tutorial 104] xxx 2024-09-07 19:07:09 +02:00
firefox.png [tutorial 060] A boolean variable (config and doc) 2024-09-07 19:07:01 +02:00
foxyproxy.png [init] Discover Rougail 2024-09-07 19:06:25 +02:00
README.md [tutorial 104] xxx (config and doc) 2024-09-07 19:07:09 +02:00

Table of Contents

Summary

Description

Firefox Proxy setting

xxx

Structure

firefox/00-proxy.yml

---
proxy_mode:
  description: Configure Proxy Access to the Internet
  choices:
    - No proxy
    - Auto-detect proxy settings for this network
    - Use system proxy settings
    - Manual proxy configuration
    - Automatic proxy configuration URL
  default: No proxy

firefox/10-manual.yml

---
manual:
  description: Manual proxy configuration
  disabled:
    variable: _.proxy_mode
    when_not: 'Manual proxy configuration'

  http_proxy:  # HTTP Proxy

    address:
      description: HTTP address
      type: domainname
      params:
        allow_ip: true

    port:
      description: HTTP Port
      type: port
      default: 8080

firefox/20-manual.yml

---
manual:

  use_for_https: true  # Also use this proxy for HTTPS

  "{{ suffix }}_proxy":
    description: "{{ suffix }} Proxy"
    dynamic:
      - HTTPS
      - SOCKS
    hidden:
      jinja: |
        {% if suffix == 'HTTPS' and _.use_for_https %}
        HTTPS is same has HTTP
        {% endif %}        
      params:
        suffix:
          type: suffix
      description: |
        in HTTPS case if "manual.use_for_https" is set to True        

    address:
      description: "{{ suffix }} address"
      default:
        variable: __.http_proxy.address

    port:
      description: "{{ suffix }} port"
      default:
        variable: __.http_proxy.port

    version:
      description: SOCKS host version used by proxy
      choices:
        - v4
        - v5
      default: v5
      disabled:
        type: suffix
        when: 'HTTPS'

firefox/30-auto.yml

---
auto:
  description: Automatic proxy configuration URL
  type: web_address
  disabled:
    variable: _.proxy_mode
    when_not: Automatic proxy configuration URL

firefox/40-no_proxy.yml

---
no_proxy:
  description: Address for which proxy will be desactivated
  type: "domainname"
  params:
    allow_ip: true
    allow_cidr_network: true
    allow_without_dot: true
    allow_startswith_dot: true
  multi: true
  mandatory: false
  disabled:
    variable: _.proxy_mode
    when: No proxy
  examples:
    - .mozilla.org
    - .net.nz
    - 192.168.1.0/24
  help: Connections to localhost, 127.0.0.1/8 and ::1 are never proxied

firefox/50-prompt_authentication.yml

---
prompt_authentication:
  description: Prompt for authentication if password is saved
  default: true
  disabled:
    variable: _.proxy_mode
    when: No proxy

firefox/55-proxy_dns_socks5.yml

---
proxy_dns_socks5:
  description: Use proxy DNS when using SOCKS v5
  default: false
  mode: advanced
  disabled:
    jinja: |
      {% if socks_version is not defined %}
      the proxy mode is not manual
      {% elif socks_version == 'v4' %}
      socks version is v4
      {% endif %}      
    params:
      socks_version:
        variable: _.manual.socks_proxy.version
        propertyerror: false
    description: |
      if "firefox.proxy_mode" is not "Manual proxy configuration" or "firefox.manual.socks_proxy.version" is "v4"      

firefox/60-dns_over_https.yml

---
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
    disabled:
      jinja: |
        {% if provider is not defined or provider != 'Custom' %}
        provider is not custom
        {% endif %}        
      params:
        provider:
          variable: _.provider
          propertyerror: false
      description: if "firefox.dns_over_https.provider" is not "Custom"
    validators:
      - jinja: |
          {% if _.custom_dns_url.startswith('http://') %}
          only https is allowed
          {% endif %}          
        description: must starts with 'https://' only

foxyproxy/00-foxyproxy.yml

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

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

  port:
    description: Port
    type: port
    default:
      jinja: |
        {% if firefox_port is not undefined %}
        {{ firefox_port }}
        {% endif %}        
      params:
        firefox_port:
          variable: firefox.manual.http_proxy.port
          propertyerror: false
      description: copy HTTP port if proxy is not "Manual"
    disabled: *needs_address

  username:
    description: Username
    type: unix_user
    mandatory:
      jinja: |
        {% if password is not undefined and password %}
        username is mandatory
        {% endif %}        
      params:
        password:
          variable: _.password
          propertyerror: false
      description: if a password is set
    disabled: *needs_address

  password:
    description: Password
    type: secret
    mandatory: false
    disabled: *needs_address

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

Generated documentation

foo@bar:~$ rougail -v 1.1 -m firefox/ -s Firefox -xn FoxyProxy -xd 0 foxyproxy/ -o doc -do github

Variables for "firefox"

Variable                                                                                                                  Description                                                                                                              
firefox.proxy_mode
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 proxy configuration

basic disabled

Disabled: when the variable "firefox.proxy_mode" hasn't the value "Manual proxy configuration".

HTTP Proxy

basic

Variable                                                                                                                  Description                                                                                                              
firefox.manual.http_proxy.address
domainname basic mandatory
HTTP address.
Validator: the domain name can be an IP
firefox.manual.http_proxy.port
port standard mandatory
HTTP Port.
Default: 8080
Variable                                                                                                                  Description                                                                                                              
firefox.manual.use_for_https
boolean standard mandatory
Also use this proxy for HTTPS.
Default: True
"HTTPS Proxy" or "SOCKS Proxy"

standard hidden

Hidden: in HTTPS case if "manual.use_for_https" is set to True.

This family builds families dynamically.

Suffixes:
- HTTPS
- SOCKS

Variable                                                                                                                  Description                                                                                                              
firefox.manual.https_proxy.address or firefox.manual.socks_proxy.address
domainname standard mandatory
"HTTPS address" or "SOCKS address".
Validator: the domain name can be an IP
Default: the value of the variable "firefox.manual.http_proxy.address".
firefox.manual.https_proxy.port or firefox.manual.socks_proxy.port
port standard mandatory
"HTTPS port" or "SOCKS port".
Default: the value of the variable "firefox.manual.http_proxy.port".
firefox.manual.https_proxy.version or firefox.manual.socks_proxy.version
choice standard mandatory disabled
SOCKS host version used by proxy.
Choices:
- v4
- v5 ← (default)
Disabled: when the suffix is "HTTPS".
Variable                                                                                                                  Description                                                                                                              
firefox.auto
web_address basic mandatory disabled
Automatic proxy configuration URL.
Disabled: when the variable "firefox.proxy_mode" hasn't the value "Automatic proxy configuration URL".
firefox.no_proxy
domainname standard disabled unique multiple
Address for which proxy will be desactivated.
Connections to localhost, 127.0.0.1/8 and ::1 are never proxied.
Validators:
- 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 "firefox.proxy_mode" has the value "No proxy".
firefox.prompt_authentication
boolean standard mandatory disabled
Prompt for authentication if password is saved.
Default: True
Disabled: when the variable "firefox.proxy_mode" has the value "No proxy".

DNS over HTTPS

basic

Variable                                                                                                                  Description                                                                                                              
firefox.dns_over_https.enable_dns_over_https
boolean standard mandatory
Enable DNS over HTTPS.
Default: False
firefox.dns_over_https.provider
choice standard mandatory disabled
Use Provider.
Choices:
- Cloudflare ← (default)
- NextDNS
- Custom
Disabled: when the variable "firefox.dns_over_https.enable_dns_over_https" has the value "False".
firefox.dns_over_https.custom_dns_url
web_address basic mandatory disabled
Custom DNS URL.
Validator: must starts with 'https://' only.
Disabled: if "firefox.dns_over_https.provider" is not "Custom".

Variables for "foxyproxy"

Proxy configuration

basic

This family contains lists of variable blocks.

Variable                                                                                                                     Description                                                                                                                 
foxyproxy.proxies.title
string standard unique multiple
Title or Description.
foxyproxy.proxies.type
choice standard mandatory
Proxy Type.
Choices:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
- PAC URL
- WPAD
- System (use system settings)
- Direct (no proxy) ← (default)
foxyproxy.proxies.color
regexp basic mandatory auto modified
Color.
Default: random color value.
foxyproxy.proxies.address
domainname standard mandatory disabled
IP address, DNS name, server name.
Validators:
- 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.port
port standard mandatory disabled
Port.
Default: copy HTTP port if proxy is not "Manual".
Disabled: if type not in:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5.
foxyproxy.proxies.username
unix_user standard mandatory disabled
Username.
Mandatory: if a password is set.
Disabled: if type not in:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5.
foxyproxy.proxies.password
secret standard disabled
Password.
Disabled: if type not in:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5.
foxyproxy.proxies.url
web_address standard mandatory disabled
URL.
Default: copy HTTP address if proxy is "Auto".
Disabled: if type is not in:
- PAC URL
- WPAD.

User data

Example 1

config/01/config.yaml

---

Output

foo@bar:~$ rougail -v 1.1 -m firefox -s Firefox -xn FoxyProxy -xd 0 foxyproxy -u file -ff config/01/config.yaml
╭────────────────────────── Caption ──────────────────────────╮
│ Variable                           Default value            │
│ Undocumented variable              Modified value           │
│ Undocumented but modified variable (Original default value) │
│ Unmodifiable variable                                       │
╰─────────────────────────────────────────────────────────────╯
Variables:
┣━━ 📂 firefox
┣━━ 📓 proxy_mode: No proxy
┗━━ 📂 dns_over_https
    ┗━━ 📓 enable_dns_over_https: False
┗━━ 📂 foxyproxy
    ┗━━ 📂 proxies

Example 2

config/02/config.yaml

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

Output

foo@bar:~$ rougail -v 1.1 -m firefox -s Firefox -xn FoxyProxy -xd 0 foxyproxy -u file -ff config/02/config.yaml
🛑 ERRORS
┣━━ The following variables are mandatory but have no value:
┗━━   - foxyproxy.proxies.port (Port)

Example 3

config/03/config.yaml

---
firefox:
  proxy_mode: Manual proxy configuration
  manual:
    http_proxy:
      address: http.proxy.net
foxyproxy:
  proxies:
    - title: My company
      color: '#66cc66'
      type: HTTP
    - title: An other company
      color: '#cc66cc'
      type: SOCKS5
      username: my_user
      password: my_password
    - title: WPAD
      color: '#1166cc'
      type: WPAD
      url: http://wpad.proxy.net/wpad.dat

Output

foo@bar:~$ rougail -v 1.1 -m firefox -s Firefox -xn FoxyProxy -xd 0 foxyproxy -u file -ff config/03/config.yaml
╭────────────────────────── Caption ──────────────────────────╮
│ Variable                           Default value            │
│ Undocumented variable              Modified value           │
│ Undocumented but modified variable (Original default value) │
│ Unmodifiable variable                                       │
╰─────────────────────────────────────────────────────────────╯
Variables:
┣━━ 📂 firefox
┣━━ 📓 proxy_mode: Manual proxy configuration (No proxy)
┣━━ 📂 manual
┣━━ 📂 http_proxy
┣━━ 📓 address: http.proxy.net
┗━━ 📓 port: 8080
┣━━ 📓 use_for_https: True
┣━━ 📂 https_proxy
┣━━ 📓 address: http.proxy.net
┗━━ 📓 port: 8080
┗━━ 📂 socks_proxy
    ┣━━ 📓 address: http.proxy.net
    ┣━━ 📓 port: 8080
    ┗━━ 📓 version: v5
┣━━ 📓 no_proxy :
┣━━ 📓 prompt_authentication: True
┣━━ 📓 proxy_dns_socks5: False
┗━━ 📂 dns_over_https
    ┗━━ 📓 enable_dns_over_https: False
┗━━ 📂 foxyproxy
    ┗━━ 📂 proxies
        ┣━━ 📂 title
        ┣━━ 📓 title: My company
        ┣━━ 📓 type: HTTP (Direct (no proxy))
        ┣━━ 📓 color: #66cc66
        ┣━━ 📓 address: http.proxy.net
        ┣━━ 📓 port: 8080
        ┣━━ 📓 username: None
        ┗━━ 📓 password: None
        ┣━━ 📂 title
        ┣━━ 📓 title: An other company
        ┣━━ 📓 type: SOCKS5 (Direct (no proxy))
        ┣━━ 📓 color: #cc66cc
        ┣━━ 📓 address: http.proxy.net
        ┣━━ 📓 port: 8080
        ┣━━ 📓 username: my_user
        ┗━━ 📓 password: **********
        ┗━━ 📂 title
            ┣━━ 📓 title: WPAD
            ┣━━ 📓 type: WPAD (Direct (no proxy))
            ┣━━ 📓 color: #1166cc
            ┗━━ 📓 url: http://wpad.proxy.net/wpad.dat