No description
Find a file
2025-11-07 06:37:56 +01:00
firefox [tutorial 100] Namespace 2025-11-07 06:37:48 +01:00
foxyproxy [tutorial 110] xxx 2025-11-07 06:37:56 +01:00
firefox.png [tutorial v1.1_080)] A boolean variable (config and doc) 2025-11-07 06:37:42 +01:00
foxyproxy.png [init] Discover Rougail 2025-11-07 06:37:05 +01:00
README.md [tutorial v1.1_110)] xxx (config and doc) 2025-11-07 06:37:56 +01:00

[tutorial v1.1_110)] xxx

View the diff

Screenshot

Firefox Proxy setting

Structure

firefox/00-proxy.yml

%YAML 1.2
---
version: 1.1

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

%YAML 1.2
---
version: 1.1

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

%YAML 1.2
---
version: 1.1

manual:

  use_for_https: true  # Also use this proxy for HTTPS

  '{{ identifier }}_proxy':
    description: '{{ identifier }} Proxy'
    hidden:
      jinja: |-
        {% if my_identifier == 'HTTPS' and _.use_for_https %}
          HTTPS is same has HTTP
        {% endif %}        
      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
...

firefox/30-auto.yml

%YAML 1.2
---
version: 1.1

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

firefox/40-no_proxy.yml

%YAML 1.2
---
version: 1.1

no_proxy:
  description: Address for which proxy will be desactivated
  help: Connections to localhost, 127.0.0.1/8 and ::1 are never proxied
  examples:
    - .mozilla.org
    - .net.nz
    - 192.168.1.0/24
  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
...

firefox/50-prompt_authentication.yml

%YAML 1.2
---
version: 1.1

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

%YAML 1.2
---
version: 1.1

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

firefox/60-dns_over_https.yml

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

firefox/empty.yml

%YAML 1.2
---
version: 1.1
...

foxyproxy/00-foxyproxy.yml

%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:
      jinja: >-
        {% if firefox.manual.http_proxy.address is not propertyerror %}
          {{ firefox.manual.http_proxy.address }}
        {% endif %}        
      description: copy HTTP address if proxy is not "Manual"
    disabled:
      jinja: |-
        {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
          disabled
        {% endif %}        
      description: |-
        if type not in:
        - HTTP
        - HTTPS/SSL
        - SOCKS4
        - SOCKS5        

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

  username:
    description: Username
    type: unix_user
    mandatory:
      jinja: |-
        {% if _.password is not propertyerror and _.password %}
          username is mandatory
        {% endif %}        
      description: if a password is set
    disabled:
      jinja: |-
        {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
          disabled
        {% endif %}        
      description: |-
        if type not in:
        - HTTP
        - HTTPS/SSL
        - SOCKS4
        - SOCKS5        

  password:
    description: Password
    type: secret
    mandatory: false
    disabled:
      jinja: |-
        {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
          disabled
        {% endif %}        
      description: |-
        if type not in:
        - HTTP
        - HTTPS/SSL
        - SOCKS4
        - SOCKS5        

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

foxyproxy/10-redefine.yml

%YAML 1.2
---
version: 1.1

proxies:

  username:
    redefine: true
    mandatory: false

  password:
    redefine: true
    hidden:
      jinja: |-
        {% if not _.username %}
          no username defined
        {% endif %}        
      description: if username is not defined
...

Let's generate the documentation

foo@bar:~$ git switch --detach v1.1_110
foo@bar:~$ rougail -m firefox/ -s Firefox -xn FoxyProxy -xd 0 foxyproxy/ --modes_level basic standard advanced -o doc

Variables for "Firefox"

firefox

basic

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

firefox.manual

basic disabled

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

HTTP Proxy

firefox.manual.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.
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_https
boolean standard mandatory
Also use this proxy for HTTPS.
Default: true
HTTPS Proxy or SOCKS Proxy

This family builds families dynamically

firefox.manual.https_proxy
firefox.manual.socks_proxy

standard hidden

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

Identifiers:
- HTTPS
- SOCKS

Variable                                                                                                                Description                                                                                                            
firefox.manual.https_proxy.address
firefox.manual.socks_proxy.address
domainname standard mandatory
HTTPS 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
firefox.manual.socks_proxy.port
port standard mandatory
HTTPS or SOCKS 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 "firefox.manual.http_proxy.port"
firefox.manual.https_proxy.version
firefox.manual.socks_proxy.version
choice standard mandatory disabled
SOCKS host version used by proxy.
Choices:
- v4
- v5 ← (default)
Disabled: when the identifier is "HTTPS"
Variable                                                                                                                            Description                                                                                                                        
firefox.auto
web_address basic mandatory disabled
Automatic proxy configuration URL.
Validator: the domain name in web address can be only a hostname
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"
firefox.proxy_dns_socks5
boolean advanced mandatory disabled
Use proxy DNS when using SOCKS v5.
Default: false
Disabled: if "firefox.proxy_mode" is not "Manual proxy configuration"
or "firefox.manual.socks_proxy.version" is "v4"
DNS over HTTPS

firefox.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.
Validators:
- the domain name in web address can be only a hostname
- must starts with 'https://' only
Disabled: if "_.provider" is not "Custom"

Variables for "FoxyProxy"

foxyproxy

basic

Proxy configuration

This family contains lists of variable blocks

foxyproxy.proxies

basic

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.
Validator: text based with regular expressions "^#(?:[0-9a-f]{3}){1,2}$"
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.
    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.username
    unix_user standard disabled | Username.
    Disabled: if type not in:
  • HTTP
  • HTTPS/SSL
  • SOCKS4
  • SOCKS5 | | foxyproxy.proxies.password
    secret standard hidden disabled | Password.
    Hidden: if username is not defined
    Disabled: if type not in:
  • HTTP
  • HTTPS/SSL
  • SOCKS4
  • SOCKS5 | | foxyproxy.proxies.url
    web_address standard mandatory disabled | URL.
    Validator: the domain name in web address can be only a hostname
    Default: copy HTTP address if proxy is "Auto"
    Disabled: if type is not in:
  • PAC URL
  • WPAD |

Let's generate the changelog

foo@bar:~$ git switch --detach v1.1_110
foo@bar:~$ rougail -m firefox/ -s Firefox -xn FoxyProxy -xd 0 foxyproxy/ --modes_level basic standard advanced -o doc --doc.contents changelog

Modified variables

Variable                                                                                                                          Description                                                                                                                      
foxyproxy.proxies.color
regexp basic mandatory auto modified
Color.
Validator: text based with regular expressions "^#(?:[0-9a-f]{3}){1,2}$"
Default: random color value
foxyproxy.proxies.username
mandatory unix_user standard disabled
Username.
Mandatory: if a password is set
Disabled: if type not in:
  • HTTP
  • HTTPS/SSL
  • SOCKS4
  • SOCKS5 | | foxyproxy.proxies.password
    secret standard hidden disabled | Password.
    Hidden: if username is not defined
    Disabled: if type not in:
  • HTTP
  • HTTPS/SSL
  • SOCKS4
  • SOCKS5 |