diff --git a/001/README.md b/001/README.md new file mode 100644 index 0000000..72ebf3c --- /dev/null +++ b/001/README.md @@ -0,0 +1,5 @@ +# Description + +We create a first variable "proxy\_mode". + +This variable accept only a string has value. diff --git a/001/dictionaries/proxy/00-proxy.yml b/001/dictionaries/proxy/00-proxy.yml new file mode 100644 index 0000000..fefd8da --- /dev/null +++ b/001/dictionaries/proxy/00-proxy.yml @@ -0,0 +1,3 @@ +--- +version: 1.1 +proxy_mode: diff --git a/001/firefox.png b/001/firefox.png new file mode 100644 index 0000000..2dea193 Binary files /dev/null and b/001/firefox.png differ diff --git a/001/firefox.xcf b/001/firefox.xcf new file mode 100644 index 0000000..d73e03e Binary files /dev/null and b/001/firefox.xcf differ diff --git a/002/README.md b/002/README.md new file mode 100644 index 0000000..fa2016c --- /dev/null +++ b/002/README.md @@ -0,0 +1,3 @@ +# Description + +We add a description for this variable. diff --git a/002/dictionaries/proxy/00-proxy.yml b/002/dictionaries/proxy/00-proxy.yml new file mode 100644 index 0000000..70ef6d9 --- /dev/null +++ b/002/dictionaries/proxy/00-proxy.yml @@ -0,0 +1,4 @@ +--- +version: 1.1 +proxy_mode: + description: Configure Proxy Access to the Internet diff --git a/003/README.md b/003/README.md new file mode 100644 index 0000000..5e35420 --- /dev/null +++ b/003/README.md @@ -0,0 +1,5 @@ +# Description + +This variable has "No proxy" has default value. + +If user don't touch de value of this variable, the value is "No proxy". diff --git a/003/dictionaries/proxy/00-proxy.yml b/003/dictionaries/proxy/00-proxy.yml new file mode 100644 index 0000000..7eb1f48 --- /dev/null +++ b/003/dictionaries/proxy/00-proxy.yml @@ -0,0 +1,5 @@ +--- +version: 1.1 +proxy_mode: + description: Configure Proxy Access to the Internet + default: No proxy diff --git a/004/README.md b/004/README.md new file mode 100644 index 0000000..bf9b0e9 --- /dev/null +++ b/004/README.md @@ -0,0 +1,3 @@ +# Description + +This variable accept, in fact, only a list of choices. diff --git a/004/dictionaries/proxy/00-proxy.yml b/004/dictionaries/proxy/00-proxy.yml new file mode 100644 index 0000000..02b1cf3 --- /dev/null +++ b/004/dictionaries/proxy/00-proxy.yml @@ -0,0 +1,12 @@ +--- +version: 1.1 +proxy_mode: + description: Configure Proxy Access to the Internet + type: choice + choices: + - No proxy + - Auto-detect proxy settings for this network + - Use system proxy settings + - Manual proxy configuration + - Automatic proxy configuration URL + default: No proxy diff --git a/005/README.md b/005/README.md new file mode 100644 index 0000000..3e0d7ee --- /dev/null +++ b/005/README.md @@ -0,0 +1,3 @@ +# Description + +The type is optional in choice type (if we have choices attributes, it's a choice option). diff --git a/005/dictionaries/proxy/00-proxy.yml b/005/dictionaries/proxy/00-proxy.yml new file mode 100644 index 0000000..5a5c4b6 --- /dev/null +++ b/005/dictionaries/proxy/00-proxy.yml @@ -0,0 +1,11 @@ +--- +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 diff --git a/010/README.md b/010/README.md new file mode 100644 index 0000000..9a52c91 --- /dev/null +++ b/010/README.md @@ -0,0 +1,12 @@ +# Description + +The "manual" mode informations are write in a new files to separate things. But Rougail will concatenate variables and families. + +We create a family, which will contain variables. + +This family has: + +- a description +- a type + +The type is mandatory. Without it, Rougail will create a variable. diff --git a/010/dictionaries/proxy/10-manual.yml b/010/dictionaries/proxy/10-manual.yml new file mode 100644 index 0000000..5aff2f3 --- /dev/null +++ b/010/dictionaries/proxy/10-manual.yml @@ -0,0 +1,5 @@ +--- +version: 1.1 +manual: + description: Manual proxy configuration + type: family diff --git a/010/firefox.png b/010/firefox.png new file mode 100644 index 0000000..279154a Binary files /dev/null and b/010/firefox.png differ diff --git a/010/firefox.xcf b/010/firefox.xcf new file mode 100644 index 0000000..ee66b97 Binary files /dev/null and b/010/firefox.xcf differ diff --git a/011/README.md b/011/README.md new file mode 100644 index 0000000..b01fe50 --- /dev/null +++ b/011/README.md @@ -0,0 +1,3 @@ +# Description + +This family will be desactived if proxy\_mode is not "manual proxy configuration". diff --git a/011/dictionaries/proxy/10-manual.yml b/011/dictionaries/proxy/10-manual.yml new file mode 100644 index 0000000..3c376d4 --- /dev/null +++ b/011/dictionaries/proxy/10-manual.yml @@ -0,0 +1,12 @@ +--- +version: 1.1 +manual: + description: Manual proxy configuration + type: family + disabled: + type: jinja + jinja: | + {% if proxy.proxy_mode != 'Manual proxy configuration' %} + the proxy mode is not manual + {% endif %} + description: if proxy_mode is not "manual proxy configuration" diff --git a/012/README.md b/012/README.md new file mode 100644 index 0000000..f8209bd --- /dev/null +++ b/012/README.md @@ -0,0 +1,5 @@ +# Description + +We add a sub family. + +The "type" for family "manual" became unecessary because container an other family, so it's not a variable. diff --git a/012/dictionaries/proxy/10-manual.yml b/012/dictionaries/proxy/10-manual.yml new file mode 100644 index 0000000..f41e92c --- /dev/null +++ b/012/dictionaries/proxy/10-manual.yml @@ -0,0 +1,15 @@ +--- +version: 1.1 +manual: + description: Manual proxy configuration + disabled: + type: jinja + jinja: | + {% if proxy.proxy_mode != 'Manual proxy configuration' %} + the proxy mode is not manual + {% endif %} + description: if proxy_mode is not "manual proxy configuration" + + http_proxy: + description: HTTP Proxy + type: family diff --git a/013/README.md b/013/README.md new file mode 100644 index 0000000..8d7feaa --- /dev/null +++ b/013/README.md @@ -0,0 +1,5 @@ +# Description + +The sub family is now in "shorthand" mode. In this mode we can only define "description" attribute. + +Inside the sub family we add two variables (with domainname and port type). diff --git a/013/dictionaries/proxy/10-manual.yml b/013/dictionaries/proxy/10-manual.yml new file mode 100644 index 0000000..65be146 --- /dev/null +++ b/013/dictionaries/proxy/10-manual.yml @@ -0,0 +1,20 @@ +--- +version: 1.1 +manual: + description: Manual proxy configuration + disabled: + type: jinja + jinja: | + {% if _.proxy.proxy_mode != 'Manual proxy configuration' %} + the proxy mode is not manual + {% endif %} + description: if proxy_mode is not "manual proxy configuration" + + http_proxy: # HTTP Proxy + address: + description: HTTP address + type: domainname + port: + description: HTTP Port + type: port + default: '8080' diff --git a/014/README.md b/014/README.md new file mode 100644 index 0000000..5e1a313 --- /dev/null +++ b/014/README.md @@ -0,0 +1,3 @@ +# Description + +Let's create a boolean variable. diff --git a/014/dictionaries/proxy/10-manual.yml b/014/dictionaries/proxy/10-manual.yml new file mode 100644 index 0000000..85bdce9 --- /dev/null +++ b/014/dictionaries/proxy/10-manual.yml @@ -0,0 +1,25 @@ +--- +version: 1.1 +manual: + description: Manual proxy configuration + disabled: + type: jinja + jinja: | + {% if _.proxy.proxy_mode != 'Manual proxy configuration' %} + the proxy mode is not manual + {% endif %} + description: if proxy_mode is not "manual proxy configuration" + + http_proxy: # HTTP Proxy + address: + description: HTTP address + type: domainname + port: + description: HTTP Port + type: port + default: '8080' + + use_for_https: + description: Also use this proxy for HTTPS + type: boolean + default: true diff --git a/015/README.md b/015/README.md new file mode 100644 index 0000000..6075cdf --- /dev/null +++ b/015/README.md @@ -0,0 +1,3 @@ +# Description + +The type is deduct with the default value type. This is only true for "string", "number", "float" or "boolean" variables. diff --git a/015/dictionaries/proxy/10-manual.yml b/015/dictionaries/proxy/10-manual.yml new file mode 100644 index 0000000..e4e7089 --- /dev/null +++ b/015/dictionaries/proxy/10-manual.yml @@ -0,0 +1,24 @@ +--- +version: 1.1 +manual: + description: Manual proxy configuration + disabled: + type: jinja + jinja: | + {% if _.proxy.proxy_mode != 'Manual proxy configuration' %} + the proxy mode is not manual + {% endif %} + description: if proxy_mode is not "manual proxy configuration" + + http_proxy: # HTTP Proxy + address: + description: HTTP address + type: domainname + port: + description: HTTP Port + type: port + default: '8080' + + use_for_https: + description: Also use this proxy for HTTPS + default: true diff --git a/016/README.md b/016/README.md new file mode 100644 index 0000000..32205dc --- /dev/null +++ b/016/README.md @@ -0,0 +1,10 @@ +# Description + +Transform it in "shorthand" mode. + +In this notation we can only define: + +- default value (so deduct the type) +- description + + diff --git a/016/dictionaries/proxy/10-manual.yml b/016/dictionaries/proxy/10-manual.yml new file mode 100644 index 0000000..37ac8a6 --- /dev/null +++ b/016/dictionaries/proxy/10-manual.yml @@ -0,0 +1,22 @@ +--- +version: 1.1 +manual: + description: Manual proxy configuration + disabled: + type: jinja + jinja: | + {% if _.proxy.proxy_mode != 'Manual proxy configuration' %} + the proxy mode is not manual + {% endif %} + description: if proxy_mode is not "manual proxy configuration" + + http_proxy: # HTTP Proxy + address: + description: HTTP address + type: domainname + port: + description: HTTP Port + type: port + default: '8080' + + use_for_https: true # Also use this proxy for HTTPS diff --git a/017/README.md b/017/README.md new file mode 100644 index 0000000..dd64088 --- /dev/null +++ b/017/README.md @@ -0,0 +1,5 @@ +# Description + +Add a sub family "ssl\_proxy" which will "hidden" if "use\_for\_https" is True. + +Hidden means that we cannot change value, but we can access to it in read only mode. diff --git a/017/dictionaries/proxy/10-manual.yml b/017/dictionaries/proxy/10-manual.yml new file mode 100644 index 0000000..9f10270 --- /dev/null +++ b/017/dictionaries/proxy/10-manual.yml @@ -0,0 +1,29 @@ +--- +version: 1.1 +manual: + description: Manual proxy configuration + disabled: + type: jinja + jinja: | + {% if _.proxy.proxy_mode != 'Manual proxy configuration' %} + the proxy mode is not manual + {% endif %} + description: if proxy_mode is not "manual proxy configuration" + + http_proxy: # HTTP Proxy + address: + description: HTTP address + type: domainname + port: + description: HTTP Port + type: port + default: '8080' + + use_for_https: true # Also use this proxy for HTTPS + + ssl_proxy: + description: HTTPS Proxy + type: family + hidden: + type: variable + variable: proxy.manual.use_for_https diff --git a/018/README.md b/018/README.md new file mode 100644 index 0000000..000a16a --- /dev/null +++ b/018/README.md @@ -0,0 +1,3 @@ +# Description + +We add two variable with calculated default value (with Jinja type). diff --git a/018/dictionaries/proxy/10-manual.yml b/018/dictionaries/proxy/10-manual.yml new file mode 100644 index 0000000..df5010f --- /dev/null +++ b/018/dictionaries/proxy/10-manual.yml @@ -0,0 +1,49 @@ +--- +version: 1.1 +manual: + description: Manual proxy configuration + disabled: + type: jinja + jinja: | + {% if _.proxy.proxy_mode != 'Manual proxy configuration' %} + the proxy mode is not manual + {% endif %} + description: if proxy_mode is not "manual proxy configuration" + + http_proxy: # HTTP Proxy + address: + description: HTTP address + type: domainname + port: + description: HTTP Port + type: port + default: '8080' + + use_for_https: true # Also use this proxy for HTTPS + + ssl_proxy: + description: HTTPS Proxy + type: family + hidden: + type: variable + variable: proxy.manual.use_for_https + address: + description: HTTPS address + type: domainname + default: + type: jinja + jinja: | + {% if __.use_for_https %} + {{ __.http_proxy.address }} + {% endif %} + description: | + copy HTTP address if HTTPS proxy is declared to be the same as HTTP + port: + description: HTTPS Port + type: port + default: + type: jinja + jinja: | + {{ __.http_proxy.port }} + description: | + copy HTTP port diff --git a/019/README.md b/019/README.md new file mode 100644 index 0000000..e2a3427 --- /dev/null +++ b/019/README.md @@ -0,0 +1,3 @@ +# Description + +Add a new sub family "socks\_proxy" in advanced mode. diff --git a/019/dictionaries/proxy/10-manual.yml b/019/dictionaries/proxy/10-manual.yml new file mode 100644 index 0000000..9299552 --- /dev/null +++ b/019/dictionaries/proxy/10-manual.yml @@ -0,0 +1,69 @@ +--- +version: 1.1 +manual: + description: Manual proxy configuration + disabled: + type: jinja + jinja: | + {% if _.proxy_mode != 'Manual proxy configuration' %} + the proxy mode is not manual + {% endif %} + description: if proxy_mode is not "manual proxy configuration" + + http_proxy: # HTTP Proxy + address: + description: HTTP address + type: domainname + port: + description: HTTP Port + type: port + default: '8080' + + use_for_https: true # Also use this proxy for HTTPS + + "{{ suffix }}_proxy": + description: "{{ suffix }} Proxy" + type: dynamic + dynamic: + - HTTPS + - SOCKS + hidden: + type: jinja + jinja: | + {% if suffix == 'HTTPS' and _.use_for_https %} + HTTPS is same has HTTP + {% endif %} + params: + suffix: + type: suffix + description: | + if HTTPS is same has HTTP + address: + description: address + type: domainname + default: + type: variable + variable: __.http_proxy.address + port: + description: Port + type: port + default: + type: variable + variable: __.http_proxy.port + version: + description: SOCKS host version used by proxy + choices: + - v4 + - v5 + default: v5 + disabled: + type: jinja + jinja: | + {% if suffix == 'HTTPS' %} + if HTTPS + {% endif %} + params: + suffix: + type: suffix + description: | + if not SOCKS diff --git a/019/dictionaries/proxy/10-manual.yml.old b/019/dictionaries/proxy/10-manual.yml.old new file mode 100644 index 0000000..ad64f2d --- /dev/null +++ b/019/dictionaries/proxy/10-manual.yml.old @@ -0,0 +1,66 @@ +--- +version: 1.1 +proxy: + manual: + description: Manual proxy configuration + disabled: + type: jinja + jinja: | + {% if _.proxy.proxy_mode != 'Manual proxy configuration' %} + the proxy mode is not manual + {% endif %} + description: if proxy_mode is not "manual proxy configuration" + + http_proxy: # HTTP Proxy + address: + description: HTTP address + type: domainname + port: + description: HTTP Port + type: port + default: '8080' + + use_for_https: true # Also use this proxy for HTTPS + + ssl_proxy: + description: HTTPS Proxy + type: family + hidden: + type: variable + variable: proxy.manual.use_for_https + address: + description: HTTPS address + type: domainname + default: + type: jinja + jinja: | + {% if __.use_for_https %} + {{ __.http_proxy.address }} + {% endif %} + description: | + copy HTTP address if HTTPS proxy is declared to be the same as HTTP + port: + description: HTTPS Port + type: port + default: + type: jinja + jinja: | + {{ __.http_proxy.port }} + description: | + copy HTTP port + + socks_proxy: + description: SOCKS Proxy + mode: advanced + address: + description: SOCKS Address + type: domainname + port: + description: SOCKS Port + type: port + version: + description: SOCKS host version used by proxy + choices: + - v4 + - v5 + default: v5 diff --git a/020/README.md b/020/README.md new file mode 100644 index 0000000..12f9e26 --- /dev/null +++ b/020/README.md @@ -0,0 +1,3 @@ +# Description + +Add a new "auto" variable. diff --git a/020/dictionaries/proxy/20-auto.yml b/020/dictionaries/proxy/20-auto.yml new file mode 100644 index 0000000..2aa3e50 --- /dev/null +++ b/020/dictionaries/proxy/20-auto.yml @@ -0,0 +1,12 @@ +--- +version: 1.1 +auto: + description: Automatic proxy configuration URL + type: web_address + disabled: + type: jinja + jinja: | + {% if _.proxy_mode != 'Automatic proxy configuration URL' %} + the proxy mode is not automatic + {% endif %} + description: if proxy_mode is not "automatic proxy configuration URL" diff --git a/020/firefox.png b/020/firefox.png new file mode 100644 index 0000000..20701e2 Binary files /dev/null and b/020/firefox.png differ diff --git a/020/firefox.xcf b/020/firefox.xcf new file mode 100644 index 0000000..89c7f4b Binary files /dev/null and b/020/firefox.xcf differ diff --git a/030/README.md b/030/README.md new file mode 100644 index 0000000..02b83ed --- /dev/null +++ b/030/README.md @@ -0,0 +1,4 @@ +# Description + +Add a new "no\_proxy" variable. + diff --git a/030/dictionaries/proxy/30-no_proxy.yml b/030/dictionaries/proxy/30-no_proxy.yml new file mode 100644 index 0000000..cad08cf --- /dev/null +++ b/030/dictionaries/proxy/30-no_proxy.yml @@ -0,0 +1,17 @@ +--- +version: 1.1 +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 + disabled: + type: jinja + jinja: | + {% if _.proxy_mode == 'No proxy' %} + proxy mode is no proxy + {% endif %} + description: if proxy is "no proxy" diff --git a/031/README.md b/031/README.md new file mode 100644 index 0000000..8ddf328 --- /dev/null +++ b/031/README.md @@ -0,0 +1,3 @@ +# Description + +This variable accept multiple value. diff --git a/031/dictionaries/proxy/30-no_proxy.yml b/031/dictionaries/proxy/30-no_proxy.yml new file mode 100644 index 0000000..145a3ae --- /dev/null +++ b/031/dictionaries/proxy/30-no_proxy.yml @@ -0,0 +1,18 @@ +--- +version: 1.1 +no_proxy: + description: Address for which proxy will be desactivated + type: "domainname" + multi: true + params: + allow_ip: true + allow_cidr_network: true + allow_without_dot: true + allow_startswith_dot: true + disabled: + type: jinja + jinja: | + {% if _.proxy_mode == 'No proxy' %} + proxy mode is no proxy + {% endif %} + description: if proxy is "no proxy" diff --git a/032/README.md b/032/README.md new file mode 100644 index 0000000..794f1fc --- /dev/null +++ b/032/README.md @@ -0,0 +1,3 @@ +# Description + +This variable is not mandatory. diff --git a/032/dictionaries/proxy/30-no_proxy.yml b/032/dictionaries/proxy/30-no_proxy.yml new file mode 100644 index 0000000..2055575 --- /dev/null +++ b/032/dictionaries/proxy/30-no_proxy.yml @@ -0,0 +1,19 @@ +--- +version: 1.1 +no_proxy: + description: Address for which proxy will be desactivated + type: "domainname" + multi: true + mandatory: false + params: + allow_ip: true + allow_cidr_network: true + allow_without_dot: true + allow_startswith_dot: true + disabled: + type: jinja + jinja: | + {% if _.proxy_mode == 'No proxy' %} + proxy mode is no proxy + {% endif %} + description: if proxy is "no proxy" diff --git a/033/README.md b/033/README.md new file mode 100644 index 0000000..ab73680 --- /dev/null +++ b/033/README.md @@ -0,0 +1,3 @@ +# Description + +We can add example (only for documentation). diff --git a/033/dictionaries/proxy/30-no_proxy.yml b/033/dictionaries/proxy/30-no_proxy.yml new file mode 100644 index 0000000..8083d2b --- /dev/null +++ b/033/dictionaries/proxy/30-no_proxy.yml @@ -0,0 +1,23 @@ +--- +version: 1.1 +no_proxy: + description: Address for which proxy will be desactivated + type: "domainname" + multi: true + mandatory: false + params: + allow_ip: true + allow_cidr_network: true + allow_without_dot: true + allow_startswith_dot: true + disabled: + type: jinja + jinja: | + {% if _.proxy_mode == 'No proxy' %} + proxy mode is no proxy + {% endif %} + description: if proxy is "no proxy" + test: + - .mozilla.org + - .net.nz + - 192.168.1.0/24 diff --git a/034/README.md b/034/README.md new file mode 100644 index 0000000..ae90c35 --- /dev/null +++ b/034/README.md @@ -0,0 +1,3 @@ +# Description + +We can add help informations for documentation. diff --git a/034/dictionaries/proxy/30-no_proxy.yml b/034/dictionaries/proxy/30-no_proxy.yml new file mode 100644 index 0000000..06f4cd9 --- /dev/null +++ b/034/dictionaries/proxy/30-no_proxy.yml @@ -0,0 +1,24 @@ +--- +version: 1.1 +no_proxy: + description: Address for which proxy will be desactivated + type: "domainname" + multi: true + mandatory: false + params: + allow_ip: true + allow_cidr_network: true + allow_without_dot: true + allow_startswith_dot: true + disabled: + type: jinja + jinja: | + {% if _.proxy_mode == 'No proxy' %} + proxy mode is no proxy + {% endif %} + description: if proxy is "no proxy" + test: + - .mozilla.org + - .net.nz + - 192.168.1.0/24 + help: Connections to localhost, 127.0.0.1/8 and ::1 are never proxied diff --git a/040/dictionaries/proxy/40-prompt_authentication.yml b/040/dictionaries/proxy/40-prompt_authentication.yml new file mode 100644 index 0000000..c10fa04 --- /dev/null +++ b/040/dictionaries/proxy/40-prompt_authentication.yml @@ -0,0 +1,12 @@ +--- +version: 1.1 +prompt_authentication: + description: Prompt for authentication if password is saved + default: true + disabled: + type: jinja + jinja: | + {% if _.proxy_mode == 'No proxy' %} + proxy mode is no proxy + {% endif %} + description: if proxy is "no proxy" diff --git a/040/firefox.png b/040/firefox.png new file mode 100644 index 0000000..f222072 Binary files /dev/null and b/040/firefox.png differ diff --git a/040/firefox.xcf b/040/firefox.xcf new file mode 100644 index 0000000..5fe1189 Binary files /dev/null and b/040/firefox.xcf differ diff --git a/050/dictionaries/proxy/50-proxy_dns_socks5.yml b/050/dictionaries/proxy/50-proxy_dns_socks5.yml new file mode 100644 index 0000000..4080e53 --- /dev/null +++ b/050/dictionaries/proxy/50-proxy_dns_socks5.yml @@ -0,0 +1,19 @@ +--- +version: 1.1 +proxy_dns_socks5: + mode: advanced + description: Use proxy DNS when using SOCKS v5 + default: false + disabled: + type: jinja + jinja: | + {% if _.proxy_mode == 'No proxy' %} + the proxy mode is no proxy + {% elif socks_version is undefined or socks_version == 'v4' %} + socks version is v4 + {% endif %} + params: + socks_version: + type: variable + variable: _.manual.socks_proxy.version + propertyerror: false diff --git a/050/firefox.png b/050/firefox.png new file mode 100644 index 0000000..18641c2 Binary files /dev/null and b/050/firefox.png differ diff --git a/050/firefox.xcf b/050/firefox.xcf new file mode 100644 index 0000000..b2cb9ea Binary files /dev/null and b/050/firefox.xcf differ diff --git a/060/dictionaries/proxy/60-dns_over_https.yml b/060/dictionaries/proxy/60-dns_over_https.yml new file mode 100644 index 0000000..8ba3d43 --- /dev/null +++ b/060/dictionaries/proxy/60-dns_over_https.yml @@ -0,0 +1,5 @@ +--- +version: 1.1 +dns_over_https: + description: DNS over HTTPS + enable_dns_over_https: false # Enable DNS over HTTPS diff --git a/060/firefox.png b/060/firefox.png new file mode 100644 index 0000000..d368003 Binary files /dev/null and b/060/firefox.png differ diff --git a/060/firefox.xcf b/060/firefox.xcf new file mode 100644 index 0000000..c362607 Binary files /dev/null and b/060/firefox.xcf differ diff --git a/061/dictionaries/proxy/60-dns_over_https.yml b/061/dictionaries/proxy/60-dns_over_https.yml new file mode 100644 index 0000000..5bc799f --- /dev/null +++ b/061/dictionaries/proxy/60-dns_over_https.yml @@ -0,0 +1,19 @@ +--- +version: 1.1 +proxy: + dns_over_https: + description: DNS over HTTPS + enable_dns_over_https: false # Enable DNS over HTTPS + provider: + description: Use Provider + choices: + - Cloudflare + - NextDNS + - Custom + default: Cloudflare + disabled: + type: jinja + jinja: | + {% if not _.enable_dns_over_https %} + Enable DNS over HTTPS is False + {% endif %} diff --git a/062/dictionaries/proxy/60-dns_over_https.yml b/062/dictionaries/proxy/60-dns_over_https.yml new file mode 100644 index 0000000..521f399 --- /dev/null +++ b/062/dictionaries/proxy/60-dns_over_https.yml @@ -0,0 +1,44 @@ +--- +version: 1.1 +dns_over_https: + description: DNS over HTTPS + + enable_dns_over_https: false # Enable DNS over HTTPS + + provider: + description: Use Provider + choices: + - Cloudflare + - NextDNS + - Custom + default: Cloudflare + disabled: + type: jinja + jinja: | + {% if not _.enable_dns_over_https %} + Enable DNS over HTTPS is False + {% endif %} + description: if enable_dns_over_https is not False + + custom_dns_url: + description: Custom DNS URL + type: web_address + disabled: + type: jinja + jinja: | + {% if provider is not defined or provider != 'Custom' %} + provider is not custom + {% endif %} + params: + provider: + type: variable + variable: _.provider + propertyerror: false + description: if provider is Custom + validators: + - type: jinja + jinja: | + {% if _.custom_dns_url.startswith('http://') %} + only https is allowed + {% endif %} + description: custom_dns_url must starts with 'https://' only diff --git a/100/README.md b/100/README.md new file mode 100644 index 0000000..e07dafe --- /dev/null +++ b/100/README.md @@ -0,0 +1,3 @@ +# Description + + diff --git a/100/dictionaries/foxyproxy/00-foxyproxy.yml b/100/dictionaries/foxyproxy/00-foxyproxy.yml new file mode 100644 index 0000000..4a13d5d --- /dev/null +++ b/100/dictionaries/foxyproxy/00-foxyproxy.yml @@ -0,0 +1,121 @@ +--- +version: 1.1 +proxies: + description: Proxy configuration + _type: leadership + + title: + description: Title or Description + multi: true + + color: + description: Color + + type: + description: Type + type: choice + choices: + - HTTP + - HTTPS/SSL + - SOCKS4 + - SOCKS5 + - PAC URL + - WPAD + - System (use system settings) + - Direct (no proxy) + default: Direct (no proxy) + + address: + description: IP address, DNS name, server name + multi: true + disabled: + type: jinja + jinja: | + {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %} + proxy does not need address + {% endif %} + description: &needs_address | + if type not in: + + - HTTP + - HTTPS/SSL + - SOCKS4 + - SOCKS5 + + default: + type: jinja + jinja: | + {% if firefox_address is not undefined %} + {{ firefox_address }} + {% endif %} + params: + firefox_address: + type: variable + variable: proxy.manual.http_proxy.address + propertyerror: false + description: copy HTTP address if proxy is not "Manual" + + port: + description: Port + type: port + default: + type: jinja + jinja: | + {% if firefox_port is not undefined %} + {{ firefox_port }} + {% endif %} + params: + firefox_port: + type: variable + variable: proxy.manual.http_proxy.port + propertyerror: false + description: copy HTTP port if proxy is not "Manual" + disabled: + type: jinja + jinja: | + {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %} + proxy does not need port + {% endif %} + description: *needs_address + + username: + description: Username + type: unix_user + mandatory: + type: jinja + jinja: | + {% if _.password %} + username is mandatory + {% endif %} + disabled: + type: jinja + jinja: | + {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %} + proxy does not need username + {% endif %} + description: *needs_address + + password: + description: Password + type: secret + disabled: + type: jinja + jinja: | + {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %} + proxy does not need password + {% endif %} + description: *needs_address + + url: + type: web_address + disabled: + type: jinja + jinja: | + {% if _.type not in ['PAC URL', 'WPAD'] %} + proxy does not need url + {% endif %} + description: | + if type is not in: + + - PAC URL + - WPAD diff --git a/101/dictionaries/foxyproxy/10-redefine.yml b/101/dictionaries/foxyproxy/10-redefine.yml new file mode 100644 index 0000000..e048275 --- /dev/null +++ b/101/dictionaries/foxyproxy/10-redefine.yml @@ -0,0 +1,16 @@ +--- +version: 1.1 +proxies: + username: + redefine: true + mandatory: false + + password: + redefine: true + hidden: + type: jinja + jinja: | + {% if not _.username %} + no username defined + {% endif %} + description: if username is not defined diff --git a/README.md b/README.md index 4bee18c..b1dd379 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,473 @@ -# rougail-tutorials_builder +--- +gitea: none +include_toc: true +--- +# Tutorial description files +## all/proxy/20-auto.yml + +```yaml +version: 1.1 +auto: + description: Automatic proxy configuration URL + type: web_address + disabled: + type: jinja + jinja: | + {% if _.proxy_mode != 'Automatic proxy configuration URL' %} + the proxy mode is not automatic + {% endif %} + description: if proxy_mode is not "automatic proxy configuration URL" +``` +## all/proxy/50-proxy_dns_socks5.yml + +```yaml +version: 1.1 +proxy_dns_socks5: + mode: advanced + description: Use proxy DNS when using SOCKS v5 + default: false + disabled: + type: jinja + jinja: | + {% if _.proxy_mode == 'No proxy' %} + the proxy mode is no proxy + {% elif socks_version is undefined or socks_version == 'v4' %} + socks version is v4 + {% endif %} + params: + socks_version: + type: variable + variable: _.manual.socks_proxy.version + propertyerror: false +``` +## all/proxy/00-proxy.yml + +```yaml +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 +``` +## all/proxy/40-prompt_authentication.yml + +```yaml +version: 1.1 +prompt_authentication: + description: Prompt for authentication if password is saved + default: true + disabled: + type: jinja + jinja: | + {% if _.proxy_mode == 'No proxy' %} + proxy mode is no proxy + {% endif %} + description: if proxy is "no proxy" +``` +## all/proxy/60-dns_over_https.yml + +```yaml +version: 1.1 +dns_over_https: + description: DNS over HTTPS + + enable_dns_over_https: false # Enable DNS over HTTPS + + provider: + description: Use Provider + choices: + - Cloudflare + - NextDNS + - Custom + default: Cloudflare + disabled: + type: jinja + jinja: | + {% if not _.enable_dns_over_https %} + Enable DNS over HTTPS is False + {% endif %} + description: if enable_dns_over_https is not False + + custom_dns_url: + description: Custom DNS URL + type: web_address + disabled: + type: jinja + jinja: | + {% if provider is not defined or provider != 'Custom' %} + provider is not custom + {% endif %} + params: + provider: + type: variable + variable: _.provider + propertyerror: false + description: if provider is Custom + validators: + - type: jinja + jinja: | + {% if _.custom_dns_url.startswith('http://') %} + only https is allowed + {% endif %} + description: custom_dns_url must starts with 'https://' only +``` +## all/proxy/10-manual.yml + +```yaml +version: 1.1 +manual: + description: Manual proxy configuration + disabled: + type: jinja + jinja: | + {% if _.proxy_mode != 'Manual proxy configuration' %} + the proxy mode is not manual + {% endif %} + description: if proxy_mode is not "manual proxy configuration" + + http_proxy: # HTTP Proxy + address: + description: HTTP address + type: domainname + port: + description: HTTP Port + type: port + default: '8080' + + use_for_https: true # Also use this proxy for HTTPS + + '{{ suffix }}_proxy': + description: '{{ suffix }} Proxy' + type: dynamic + dynamic: + - HTTPS + - SOCKS + hidden: + type: jinja + jinja: | + {% if suffix == 'HTTPS' and _.use_for_https %} + HTTPS is same has HTTP + {% endif %} + params: + suffix: + type: suffix + description: | + if HTTPS is same has HTTP + address: + description: address + type: domainname + default: + type: variable + variable: __.http_proxy.address + port: + description: Port + type: port + default: + type: variable + variable: __.http_proxy.port + version: + description: SOCKS host version used by proxy + choices: + - v4 + - v5 + default: v5 + disabled: + type: jinja + jinja: | + {% if suffix == 'HTTPS' %} + if HTTPS + {% endif %} + params: + suffix: + type: suffix + description: | + if not SOCKS +``` +## all/proxy/30-no_proxy.yml + +```yaml +version: 1.1 +no_proxy: + description: Address for which proxy will be desactivated + type: domainname + multi: true + mandatory: false + params: + allow_ip: true + allow_cidr_network: true + allow_without_dot: true + allow_startswith_dot: true + disabled: + type: jinja + jinja: | + {% if _.proxy_mode == 'No proxy' %} + proxy mode is no proxy + {% endif %} + description: if proxy is "no proxy" + test: + - .mozilla.org + - .net.nz + - 192.168.1.0/24 + help: Connections to localhost, 127.0.0.1/8 and ::1 are never proxied +``` +## all/foxyproxy/10-redefine.yml + +```yaml +version: 1.1 +proxies: + username: + redefine: true + mandatory: false + + password: + redefine: true + hidden: + type: jinja + jinja: | + {% if not _.username %} + no username defined + {% endif %} + description: if username is not defined +``` +## all/foxyproxy/00-foxyproxy.yml + +```yaml +version: 1.1 +proxies: + description: Proxy configuration + _type: leadership + + title: + description: Title or Description + multi: true + + color: + description: Color + + type: + description: Type + type: choice + choices: + - HTTP + - HTTPS/SSL + - SOCKS4 + - SOCKS5 + - PAC URL + - WPAD + - System (use system settings) + - Direct (no proxy) + default: Direct (no proxy) + + address: + description: IP address, DNS name, server name + multi: true + disabled: + type: jinja + jinja: | + {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %} + proxy does not need address + {% endif %} + description: &needs_address | + if type not in: + + - HTTP + - HTTPS/SSL + - SOCKS4 + - SOCKS5 + + default: + type: jinja + jinja: | + {% if firefox_address is not undefined %} + {{ firefox_address }} + {% endif %} + params: + firefox_address: + type: variable + variable: proxy.manual.http_proxy.address + propertyerror: false + description: copy HTTP address if proxy is not "Manual" + + port: + description: Port + type: port + default: + type: jinja + jinja: | + {% if firefox_port is not undefined %} + {{ firefox_port }} + {% endif %} + params: + firefox_port: + type: variable + variable: proxy.manual.http_proxy.port + propertyerror: false + description: copy HTTP port if proxy is not "Manual" + disabled: + type: jinja + jinja: | + {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %} + proxy does not need port + {% endif %} + description: *needs_address + + username: + description: Username + type: unix_user + mandatory: + type: jinja + jinja: | + {% if _.password %} + username is mandatory + {% endif %} + disabled: + type: jinja + jinja: | + {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %} + proxy does not need username + {% endif %} + description: *needs_address + + password: + description: Password + type: secret + disabled: + type: jinja + jinja: | + {% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %} + proxy does not need password + {% endif %} + description: *needs_address + + url: + description: URL + type: web_address + disabled: + type: jinja + jinja: | + {% if _.type not in ['PAC URL', 'WPAD'] %} + proxy does not need url + {% endif %} + description: | + if type is not in: + + - PAC URL + - WPAD +``` +# Generated documentation + +## Variables for "proxy" + +| Variable                                                                                                                  | Description                                                                                                               | +|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **proxy.proxy_mode**
[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Configure Proxy Access to the Internet.
**Default**: No proxy
**Choices**:
- No proxy
- Auto-detect proxy settings for this network
- Use system proxy settings
- Manual proxy configuration
- Automatic proxy configuration URL | +### Manual proxy configuration + +`basic` _`disabled`_ + +**Disabled**: if proxy_mode is not "manual proxy configuration" + +| Variable                                                                                                                  | Description                                                                                                               | +|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **proxy.auto**
[`web_address`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` _`disabled`_ | Automatic proxy configuration URL.
**Disabled**: if proxy_mode is not "automatic proxy configuration URL" | +| **proxy.no_proxy**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `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 only 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**: if proxy is "no proxy" | +| **proxy.prompt_authentication**
[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` _`disabled`_ | Prompt for authentication if password is saved.
**Default**: True
**Disabled**: if proxy is "no proxy" | +### DNS over HTTPS + +`basic` + +| Variable                                                                                                                  | Description                                                                                                               | +|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **proxy.dns_over_https.enable_dns_over_https**
[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Enable DNS over HTTPS.
**Default**: False | +| **proxy.dns_over_https.provider**
[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` _`disabled`_ | Use Provider.
**Default**: Cloudflare
**Choices**:
- Cloudflare
- NextDNS
- Custom
**Disabled**: if enable_dns_over_https is not False | +| **proxy.dns_over_https.custom_dns_url**
[`web_address`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` _`disabled`_ | Custom DNS URL.
**Validators**:
- custom_dns_url must starts with 'https://' only
**Disabled**: if provider is Custom | + +## Variables for "foxyproxy" + +### Proxy configuration + +`basic` + + +Cette famille contient des listes de bloc de variables. + +| Variable                                                                                                                  | Description                                                                                                               | +|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **foxyproxy.proxies.title**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` `unique` `multiple` | Title or Description. | +| **foxyproxy.proxies.color**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` | Color. | +| **foxyproxy.proxies.type**
[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Type.
**Choices**:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
- PAC URL
- WPAD
- System (use system settings)
- Direct (no proxy) | +| **foxyproxy.proxies.address**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` _`disabled`_ `multiple` | IP address, DNS name, server name.
**Default**: copy HTTP address if proxy is not "Manual"
**Disabled**: if type not in: + +- HTTP +- HTTPS/SSL +- SOCKS4 +- SOCKS5 + | +| **foxyproxy.proxies.port**
[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `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`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` _`disabled`_ | Username.
**Disabled**: if type not in: + +- HTTP +- HTTPS/SSL +- SOCKS4 +- SOCKS5 + | +| **foxyproxy.proxies.password**
[`secret`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` _`hidden`_ _`disabled`_ | Password.
**Hidden**: if username is not defined
**Disabled**: if type not in: + +- HTTP +- HTTPS/SSL +- SOCKS4 +- SOCKS5 + | +| **foxyproxy.proxies.url**
[`web_address`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` _`disabled`_ | URL.
**Disabled**: if type is not in: + +- PAC URL +- WPAD + | + +## Exemple avec les variables obligatoires non renseignées + +```yaml +proxy: + auto: https://example.net + dns_over_https: + custom_dns_url: https://example.net +``` +## Exemple avec tous les variables modifiables + +```yaml +proxy: + proxy_mode: No proxy + auto: https://example.net + no_proxy: + - .mozilla.org + - .net.nz + - 192.168.1.0/24 + prompt_authentication: true + dns_over_https: + enable_dns_over_https: false + provider: Cloudflare + custom_dns_url: https://example.net +foxyproxy: + proxies: + - title: xxx + color: xxx + type: Direct (no proxy) + address: + - None + port: '8080' + username: xxx + password: xxx + url: https://example.net +``` diff --git a/firefox.png b/firefox.png new file mode 100644 index 0000000..050f837 Binary files /dev/null and b/firefox.png differ diff --git a/foxyproxy.png b/foxyproxy.png new file mode 100644 index 0000000..418dad0 Binary files /dev/null and b/foxyproxy.png differ diff --git a/load.py b/load.py new file mode 100755 index 0000000..9d27862 --- /dev/null +++ b/load.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 + +from pathlib import Path +from ruamel.yaml import YAML + +from rougail import Rougail, RougailConfig +from rougaildoc import RougailDoc + + +NUM="50" + + +if __name__ == "__main__": + rougailconfig = RougailConfig.copy() +# rougailconfig['dictionaries_dir'] = [f'{NUM}/dictionaries/rougail'] + rougailconfig['variable_namespace'] = 'proxy' + rougailconfig['dictionaries_dir'] = ['all/proxy'] + rougailconfig['extra_dictionaries'] = {'foxyproxy': ['all/foxyproxy']} + rougailconfig['tiramisu_cache'] = "cache.py" +# rougail = Rougail(rougailconfig) +# config = rougail.get_config() +# print(config.value.get()) + output = 'github' + inventory = RougailDoc(rougailconfig=rougailconfig, + output=output, + title_level=2, + ) + doc = inventory.formater.header() + doc += inventory.formater.title('Tutorial description files', 1) + yaml = YAML() + for r in [[rougailconfig['dictionaries_dir']], rougailconfig['extra_dictionaries'].values()]: + for dirs in r: + for d in dirs: + for f in Path(d).iterdir(): + if f.name.endswith('.yml') or f.name.endswith('.yaml'): + doc += inventory.formater.title(str(f), 2) + with f.open(encoding="utf8") as file_fh: + objects = yaml.load(file_fh) + doc += inventory.formater.yaml(objects) + doc += inventory.formater.title('Generated documentation', 1) + doc += inventory.gen_doc() + doc_file = Path('README.md') + with doc_file.open('w') as docfh: + docfh.write(doc)