220 lines
7.7 KiB
ReStructuredText
220 lines
7.7 KiB
ReStructuredText
Practice
|
|
================================
|
|
|
|
.. objectives:: Objectives
|
|
|
|
Now it's your turn again.
|
|
Try making some Rougail.
|
|
At the same time, if you get stuck, you have the solutions in the Rougail tutorial
|
|
code repository.
|
|
|
|
There is nothing new in the three next Firefox variables. So it is the time to practice what we've learned until now.
|
|
|
|
This page is divided in two parts for each variable:
|
|
|
|
- Explain what we want to implement
|
|
- Propose to you a solution
|
|
|
|
The best for you is to do this job on your own and compare your work to our propositions.
|
|
|
|
Here are the two first variables in the Firefox configuration's widget:
|
|
|
|
.. image:: images/practice_threevars.png
|
|
|
|
The third appears only if we enable DNS over HTTPS with a custom providers, we have to set a `Custom DNS URL`.
|
|
|
|
These three variables are highlighted here in the lower part of the Firefox configuration's widget:
|
|
|
|
.. image:: images/firefox160.png
|
|
|
|
.. prerequisites:: Prerequisites
|
|
|
|
- We assume that Rougail's library is :ref:`installed <installation>` on your computer.
|
|
|
|
- It is possible to retrieve the current state of the various Rougail files manipulated in this tutorial step
|
|
by checking out the corresponding tag of the `rougail-tutorials` git repository.
|
|
Each tag corresponds to a stage of progress in the tutorial.
|
|
Of course, you can also decide to copy/paste or download the tutorial files contents while following the tutorial steps.
|
|
|
|
If you want to follow this tutorial with the help of the corresponding :tutorial:`rougail-tutorials git repository <src/branch/1.1>`,
|
|
this workshop page corresponds to the tags :tutorial:`1.1_160 <src/tag/1.1_160/README.md>` to :tutorial:`1.1_162 <src/tag/1.1_162/README.md>`
|
|
in the repository.
|
|
|
|
::
|
|
|
|
git clone https://forge.cloud.silique.fr/stove/rougail-tutorials.git
|
|
git switch --detach 1.1_160
|
|
|
|
A boolean variable
|
|
------------------
|
|
|
|
What do we want to be implemented
|
|
'''''''''''''''''''''''''''''''''''
|
|
|
|
.. exercise:: Exercice
|
|
|
|
You need to think about:
|
|
|
|
- choose a file name that respect the :ref:`file naming and organizing convention <filenamingconvention>`
|
|
- define an appropriate family and variable name, have a look at our :ref:`variable naming convention <namingconvention>`
|
|
- we will set the variable in a family (with others variable later) to separate this purpose
|
|
- the family and variable `description` parameter will be the Firefox description
|
|
- the variable is a :ref:`boolean <tutorial_boolean_variable>` with the default value `false` (unchecked option)
|
|
- the family and variable are always available, it's not directly related to the proxy choice
|
|
|
|
Our solution
|
|
'''''''''''''''''''''''''''''''
|
|
|
|
Please unroll the "Solution" widget to see our solution:
|
|
|
|
.. solution:: Solution
|
|
|
|
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_160/firefox/60-dns_over_https.yml
|
|
:language: yaml
|
|
:caption: The :file:`firefox/60-dns_over_https.yml` a boolean variable
|
|
|
|
- Here we choosed to name the new structure file `firefox/60-dns_over_https.yml`,
|
|
the file containing the `dns_over_https` family and the `enable_dns_over_https` variable definition
|
|
- this variable is a :ref:`boolean <tutorial_boolean_variable>` with the default value `false`
|
|
|
|
..
|
|
%YAML 1.2
|
|
---
|
|
version: 1.1
|
|
|
|
dns_over_https: # DNS over HTTPS
|
|
|
|
enable_dns_over_https: false # Enable DNS over HTTPS
|
|
...
|
|
|
|
A choice variable
|
|
-----------------
|
|
|
|
What do we want to be implemented
|
|
'''''''''''''''''''''''''''''''''''
|
|
|
|
.. exercise:: Exercice
|
|
|
|
You need to think about:
|
|
|
|
- this variable will be in the same file as the first one
|
|
- define an appropriate variable name, have a look at our :ref:`variable naming convention <namingconvention>`
|
|
- we will set the variable in the previous family
|
|
- the variable `description` parameter will be the Firefox description
|
|
- the variable is a :ref:`choice <tutorial_choice>` with the following proposal: `Cloudflare`, `NextDNS` and `Custom`
|
|
- this variable shall be :ref:`disabled <tutorial_disabled>` if the `enable_dns_over_https` variable is `false`.
|
|
|
|
Our solution
|
|
'''''''''''''''''''''''''''''''
|
|
|
|
.. type-along:: For those who follow the tutorial with the help of the git repository
|
|
|
|
Now you need to checkout the :tutorial:`v1.1_161 <src/tag/v1.1_161/README.md>` version::
|
|
|
|
git switch --detach v1.1_161
|
|
|
|
Please unroll the "Solution" widget to see our solution:
|
|
|
|
.. solution:: Solution
|
|
|
|
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_161/firefox/60-dns_over_https.yml
|
|
:language: yaml
|
|
:caption: The :file:`firefox/60-dns_over_https.yml` a choice variable
|
|
|
|
- Here we choosed to name the new structure file `firefox/60-dns_over_https.yml`,
|
|
the file containing the `dns_over_https` family and the `enable_dns_over_https` variable definition
|
|
- this variable is false by default
|
|
- this variable is :ref:`disabled <tutorial_disabled>` if `enable_dns_over_https` is `false`
|
|
|
|
..
|
|
%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
|
|
...
|
|
|
|
|
|
A web_address variable
|
|
----------------------
|
|
|
|
What do we want to be implemented
|
|
'''''''''''''''''''''''''''''''''''
|
|
|
|
.. exercise:: Exercice
|
|
|
|
You need to think about:
|
|
|
|
- this variable will be in the same file as the two others
|
|
- define an appropriate variable name, have a look at our :ref:`variable naming convention <namingconvention>`
|
|
- we will set the variable in the previous family
|
|
- the variable `description` parameter will be the Firefox description
|
|
- the variable is a `web_address`
|
|
- this variable shall be :ref:`disabled <tutorial_disabled>` if the `provider` variable is not `Custom`
|
|
- the variable `provider` could be :ref:`disabled <tutorial_disabled>` too
|
|
|
|
|
|
Our solution
|
|
'''''''''''''''''''''''''''''''
|
|
|
|
.. type-along:: For those who follow the tutorial with the help of the git repository
|
|
|
|
Now you need to checkout the :tutorial:`v1.1_162 <src/tag/v1.1_162/README.md>` version::
|
|
|
|
git switch --detach v1.1_162
|
|
|
|
Please unroll the "Solution" widget to see our solution:
|
|
|
|
.. solution:: Solution
|
|
|
|
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_162/firefox/60-dns_over_https.yml
|
|
:language: yaml
|
|
:caption: The :file:`firefox/60-dns_over_https.yml` a choice variable
|
|
|
|
- Here we choosed to name the new structure file `firefox/60-dns_over_https.yml`,
|
|
the file containing the `custom_dns_url` variable definition
|
|
- this is a :ref:`web_address <tutorial_web_address>` variable
|
|
- this variable is :ref:`disabled <tutorial_disabled>` if `provider` has :ref:`an access property error <tutorial_propertyerror>` and `provider` has not the value "Custom"
|
|
|
|
..
|
|
%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
|
|
disabled:
|
|
jinja: |-
|
|
{{ _.provider is propertyerror or _.provider != 'Custom' }}
|
|
return_type: boolean
|
|
description: if "_.provider" is not "Custom"
|
|
...
|