domainname and port ok

This commit is contained in:
gwen 2025-12-03 18:58:41 +01:00
parent 40df27bf90
commit 8bc7c9b04d

View file

@ -272,15 +272,110 @@ A variable with type `port`
git checkout v1.1_032 git checkout v1.1_032
We will add, according to our use case, a variable of type `port`: After the `address` variable let's add, according to our use case,
.. image:: images/firefox_port.png .. image:: images/firefox_port.png
a new variable of type `port`. Our structure file looks like this:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_032/firefox/10-manual.yml
:language: yaml
:caption: The `port` type variable in the :file:`firefox/10-manual.yml` structure file
:linenos:
..
port:
description: HTTP Port
type: port
default: 8080
:tutorial:`Download this file from the rougail-tutorials git repository <src/tag/v1.1_032/firefox/10-manual.yml>`
Let's assing a value to this port:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_032/config/02/config.yml
:language: yaml
:caption: A user data :file:`config/02/config.yml` setting a value to the port variable
..
proxy_mode: Manual proxy configuration
manual:
http_proxy:
address: example.net
port: 3128
:tutorial:`Download this file from the rougail-tutorials git repository <src/tag/v1.1_032/config/02/config.yml>`
If we launch the rougail CLI:
.. raw:: html
:class: terminal
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_032/config/02/cmd_ro.txt
We have this output:
.. raw:: html
:class: output
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_032/config/02/output_ro.html
..
<pre>╭─────────────────────────── Caption ────────────────────────────╮
│ Variable <span style="color: #00aa00">Modified value</span> │
│ <span style="color: #ff0000">Undocumented but modified variable</span> (⏳ Original default value) │
╰────────────────────────────────────────────────────────────────╯
Variables:
<span style="color: #5c5cff">┣━━ </span>📓 <span style="color: #ff0000">Configure Proxy Access to the Internet</span>: <span style="color: #00aa00">Manual proxy configuration</span> ◀
<span style="color: #5c5cff">┃ </span>loaded from the YAML file "config/02/config.yml" (⏳ No proxy)
<span style="color: #5c5cff">┗━━ </span>📂 Manual proxy configuration
<span style="color: #5c5cff"> </span><span style="color: #5c5cff">┗━━ </span>📂 HTTP Proxy
<span style="color: #5c5cff"> </span><span style="color: #5c5cff"> </span><span style="color: #5c5cff">┣━━ </span>📓 <span style="color: #ff0000">HTTP address</span>: <span style="color: #00aa00">example.net</span> ◀ loaded from the YAML file
<span style="color: #5c5cff"> </span><span style="color: #5c5cff"> </span><span style="color: #5c5cff">┃ </span>"config/02/config.yml"
<span style="color: #5c5cff"> </span><span style="color: #5c5cff"> </span><span style="color: #5c5cff">┗━━ </span>📓 <span style="color: #ff0000">HTTP Port</span>: <span style="color: #00aa00">3128</span> ◀ loaded from the YAML file
<span style="color: #5c5cff"> </span><span style="color: #5c5cff"> </span><span style="color: #5c5cff"> </span>"config/02/config.yml" (⏳ 8080)
</pre>
How can we know what validations the port type performs on the value assigned to the variable?
There are a number of validations that are carried out with this `port` type:
- well-known ports (1 to 1023) are allowed
- registred ports (1024 to 49151) are allowed
.. - private ports (greater than 49152) are allowed
Now let's assign a value that is outside the allowed ports:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_032/config/03/config.yml
:language: yaml
:caption: A user value in :file:`config/03/config.yml` that is not allowed
:tutorial:`Download this file from the rougail-tutorials git repository <src/tag/v1.1_032/config/03/config.yml>`
Again, we launch the rougail CLI:
.. raw:: html
:class: terminal
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_032/config/03/cmd_invalid.txt
.. rougail -m firefox/ -u yaml -yf config/03/config.yml --cli.invalid_user_datas_error
And we have this output:
.. raw:: html
:class: error
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_032/config/03/output_invalid.html
..
<pre><span style="font-weight: bold; color: #ff0000">🛑 ERRORS</span>
<span style="color: #ff0000">┗━━ </span>the value "100000" is an invalid port for "manual.http_proxy.port" (HTTP
<span style="color: #ff0000"> </span>Port), must be between 1 and 65535, it will be ignored when loading from the
<span style="color: #ff0000"> </span>YAML file "config/03/config.yml"
</pre>
We observe that, as with the `domainname` type, a number of validations are performed
to ensure that the value assigned to this variable conforms to the `port` type.
.. keypoints:: let's review the key points .. keypoints:: let's review the key points
**Keywords** - we can assign a `domainname` type to a variable
- we can set a :term:`parameter` to a `domainname` variable to refine their typing behavior
- we can set a `domainname` type to a variable - we can assign a `port` type to a variable
- we can add :term:`parameter`\ s to variables to refine their typing behavior