Skip to content

Commit feded64

Browse files
committed
Protocolary updates for release 1.5.1
1 parent 53d1593 commit feded64

22 files changed

+485
-524
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ test-driver
9797
*~
9898
tmp
9999
docs/_site
100+
docs/.jekyll-metadata
100101

101102
# Files we're sorta contractually obligated to exclude.
102103
# Can't include ARIN's TAL because of their Relying Party Agreement

Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ EXTRA_DIST += src/asn1/asn1c/LICENSE
1919
EXTRA_DIST += examples/tal/afrinic.tal
2020
EXTRA_DIST += examples/tal/apnic.tal
2121
EXTRA_DIST += examples/tal/lacnic.tal
22-
EXTRA_DIST += examples/tal/ripe.tal
22+
EXTRA_DIST += examples/tal/ripe-ncc.tal
2323
EXTRA_DIST += examples/config.json
2424
EXTRA_DIST += examples/demo.slurm

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Process this file with autoconf to produce a configure script.
33

44
AC_PREREQ([2.69])
5-
AC_INIT([fort], [1.5.0], [[email protected]])
5+
AC_INIT([fort], [1.5.1], [[email protected]])
66
AC_CONFIG_SRCDIR([src/main.c])
77
AM_INIT_AUTOMAKE([subdir-objects])
88

docs/_config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ defaults:
88
layout: "default"
99
image: "/img/logo_validador_og.png"
1010

11-
fort-latest-version: 1.5.0
11+
fort-latest-version: 1.5.1
1212
plugins:
1313
- jekyll-seo-tag
1414
- jekyll-sitemap

docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ FORT validator is an MIT-licensed RPKI Relying Party, this is a tool offered as
1111

1212
## Status
1313

14-
> Due to a temporary resource shortage, the project's development has slowed down to essential maintenance. No new features are expected to be developed during the first half of 2021 (at least), but bugfixing and support will remain active.
14+
> Due to a temporary resource shortage, the project's development has slowed down to essential maintenance. No new features are expected to be developed during 2021 (at least), but bugfixing and support will remain active.
1515
1616
Version **{{ site.fort-latest-version }}** is the latest official release. To fetch or review it, visit the [GitHub release](https://github.com/NICMx/FORT-validator/releases/tag/v{{ site.fort-latest-version }}){:target="_blank"}.
1717

docs/installation.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ description: Guide to compile and install FORT Validator.
3030

3131
## Dependencies
3232

33-
> Note: This section is included in case you intend to install Fort in an unlisted OS (and therefore need a little research). For: Debians, OpenBSD, RHEL/CentOS, Fedora, openSUSE Leap, FreeBSD, and Slackware just follow the steps in the sections below.
33+
> Note: This section is included in case you intend to install Fort in an unlisted OS (and therefore need a little research). For Debians, OpenBSD, RHEL/CentOS, Fedora, openSUSE Leap, FreeBSD, and Slackware just follow the steps in the sections below.
3434
3535
The dependencies are
3636

@@ -40,7 +40,7 @@ The dependencies are
4040
4. [libcurl](https://curl.haxx.se/libcurl/)
4141
5. [libxml2](http://www.xmlsoft.org/)
4242

43-
Fort is currently supported in *64-bit* OS. A 32-bit OS may face the [Year 2038 problem](https://en.wikipedia.org/wiki/Year_2038_problem) when handling dates at certificates, and currently there's no work around for this.
43+
Fort currently supports *64-bit* Operating Systems. A 32-bit OS may face the [Year 2038 problem](https://en.wikipedia.org/wiki/Year_2038_problem) when handling certificate dates, and there's no workaround for this at the moment.
4444

4545
## Option 1: Installing the package
4646

@@ -470,4 +470,4 @@ Preferably, run this script with the same user what will run FORT validator. It'
470470
wget https://raw.githubusercontent.com/NICMx/FORT-validator/v{{ site.fort-latest-version }}/fort_setup.sh
471471
mkdir ~/tal
472472
./fort_setup.sh ~/tal
473-
{% endhighlight %}
473+
{% endhighlight %}

docs/intro-fort.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ description: FORT Validator is a command line application intended for UNIX oper
77

88
## Design
99

10-
Fort is an MIT-licensed RPKI Relying Party. It is a service that performs the validation of the entire RPKI repository, and which serves the resulting ROAs for easy access by your routers.
10+
Fort is an MIT-licensed RPKI Relying Party. It is a service that downloads the RPKI repositories, validates their entirety and serves the resulting ROAs for easy access by your routers.
1111

1212
![img/design.svg](img/design.svg)
1313

14-
The Validator is a timer that resynchronizes its [local cache](usage.html#--local-repository), validates the resulting [RPKI trees](intro-rpki.html) and stores the resulting ROAs in memory every [certain amount of time](usage.html#--serverintervalvalidation). The RTR [Server](usage.html#--serveraddress) (which is part of the same binary) delivers these ROAs to any requesting routers.
14+
The Validator is a timer that, [every once in a while](usage.html#--serverintervalvalidation), resynchronizes its [local cache of the RPKI Repository](usage.html#--local-repository), validates the resulting [certificate chains](intro-rpki.html) and stores the resulting valid ROAs in memory. The RTR [Server](usage.html#--serveraddress) (which is part of the same binary) delivers these ROAs to any requesting routers.
1515

16-
Fort is a command line application intended for UNIX operating systems, written in C. (It requires a compiler that supports `-std=gnu11`.)
16+
Fort is a command-line application intended for UNIX operating systems, written in C. (It requires a compiler that supports `-std=gnu11`.)
1717

1818
## Standards Compliance
1919

@@ -49,4 +49,4 @@ The specific validations have been implemented, while the basic ones have not.
4949

5050
- Reach 100% RFC compliance
5151
- Trigger revalidation and SLURM reload on SIGHUP.
52-
- Configurable origin address for outgoing requests.
52+
- Configurable origin address for outgoing requests.

docs/intro-rpki.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ Basically, the idea is that one should be able to verify the origin of a route b
1717

1818
![img/chain.svg](img/chain.svg)
1919

20-
The end result is a _Route Origin Attestation_ (ROA), a digitally signed object that provides a means of verifying that an IP address block holder has authorized an Autonomous System (AS) to originate routes to its address block or one of its children's.
20+
The end result is a _Route Origin Attestation_ (ROA), a digitally signed object that serves as a trustworthy attestation that an IP address block holder has authorized an Autonomous System (AS) to originate routes to its address block (or some of its children).
2121

22-
So the whole infrastructure functions like a tree-shaped trust network (one for each RIR) in which authorities (_Certificate Authority_--CA) attest to their resource suballocations:
22+
So we end up with a tree-shaped trust network (one for each RIR) in which lots of authorities (_Certificate Authority_--CA) attest to their resource suballocations:
2323

2424
![img/tree.svg](img/tree.svg)
2525

docs/logging.md

Lines changed: 51 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ url-vlog-tag: "[`--validation-log.tag`](usage.html#--validation-logtag)"
2323
## Index
2424

2525
1. [Log types](#log-types)
26-
1. [Operation](#operation)
27-
2. [Validation](#validation)
26+
1. [Operation Log](#operation-log)
27+
2. [Validation Log](#validation-log)
2828
2. [Configuration](#configuration)
2929
1. [Enabled](#enabled)
3030
2. [Output](#output)
@@ -36,37 +36,38 @@ url-vlog-tag: "[`--validation-log.tag`](usage.html#--validation-logtag)"
3636

3737
## Log types
3838

39-
Currently there are two kinds of log messages: those related to the operation, and the ones regarding RPKI objects validation.
39+
Fort has two different types of log messages: Operation logs and Validation logs.
4040

41-
Each type is described above, as well as how it can be configured.
41+
They will be described below.
4242

43-
### Operation
43+
### Operation Log
4444

45-
These type of messages are the ones where the user/operator can be directly involved. Probably these messages are of greater interest to most of the RP operators.
45+
Operation logs are of likely interest to the operator running Fort; Issues reported here require human intervention. These include
4646

47-
The following messages are included at the operation logs:
48-
- Configuration information, warnings and errors. E.g. if the location set at [`--tal`](usage.html#--tal) can't be accessed, or a configuration echo at the beginning.
49-
- RTR information, warnings and errors; such as server binding status, and client connections (accepted, closed or terminated).
50-
- SLURM information, warnings and errors. E.g. bad SLURM syntax, or SLURM data being applied in case of an error with a newer SLURM file.
51-
- Out of memory errors.
52-
- Read/write errors on local files.
53-
- Persistent communication errors with RPKI repositories (see [`--stale-repository-period`](usage.html#--stale-repository-period)).
54-
- Start and end of a validation cycle, including: number of valid Prefixes and Router Keys, current RTR serial number (only when [`--mode=server`](usage.html#--mode)), and real execution time.
55-
- Programming errors (of course, those that could be expected due to an API misuse).
47+
| Type | INFO example | WARNING example| ERROR example |
48+
|------|--------------|----------------|---------------|
49+
| Configuration logs | "And now I'm going to echo my configuration, in case you want to review it." | "This configuration argument is deprecated." | "Bad file syntax." |
50+
| RTR Server logs | "Accepted connection from client." | "Huh? Peer is not speaking the RTR protocol." | "Cannot bind to address." |
51+
| Out of memory errors | - | - | "Out of memory." |
52+
| Read/write errors on local files | - | "The SLURM directory seems to lack SLURM files." | "I don't have permissions to access the repository cache." |
53+
| Persistent communication errors with RPKI repositories (see [`--stale-repository-period`](usage.html#--stale-repository-period)) | - | - | "Error requesting URL." |
54+
| Start and end of a validation cycle | "Validation cycle ended. I got _R_ ROAs, _K_ router keys, my new serial is _S_, and it took _T_ seconds." | - | - |
55+
| Programming errors | - | - | "Array size is 1, but array is NULL." |
5656

57-
### Validation
57+
### Validation Log
5858

59-
These type of messages are the ones related to one of the main tasks performed by FORT validator: the RPKI validation. So, they are useful to know the current RPKI state.
59+
These are messages generated during the RPKI validation cycle, and refer specifically to quirks found in the RPKI objects. (ie. Certificates, CRLs, ROAs, etc.)
6060

61-
All this messages are result of RPKI objects (certificates, CRLs, ROAs, etc.) processing, so probably the operator can't take a direct action trying to solve an error logged here, but it can get to know if something is wrong at the data published at the RPKI repositories.
61+
These are likely more meaningful to repository administrators, for the sake of reviewing their objects.
6262

63-
Here are some examples of messages included at the validation logs:
64-
- Validation failures causing an RPKI object rejection (e.g. expired certificate).
65-
- Suspicious validation outcome, but the RPKI object isn't rejected (e.g. serial numbers duplicated).
66-
- An [incidence](incidence.html).
67-
- RRDP file information, warnings and errors.
63+
They are [disabled by default](usage.html#--validation-logenabled).
6864

69-
> ![img/warn.svg](img/warn.svg) These messages are disabled by default, in order to enable them set [`--validation-log.enabled=true`](usage.html#--validation-logenabled).
65+
| Type | WARNING example| ERROR example |
66+
|------|-----------------|---------------|
67+
| Validation eventualities | "Maximum retries reached; skipping object." | "Certificate is expired." |
68+
| [Incidences](incidence.html) | "Manifest is stale." | "Manifest is stale." |
69+
70+
(Most informational validation messages have DEBUG priority. Incidence severity is configurable.)
7071

7172
## Configuration
7273

@@ -87,52 +88,49 @@ The following sub-sections describe how each argument works.
8788

8889
### Enabled
8990

90-
Enables the corresponding log. If disabled (e.g. `--log.enabled=false`) none of the corresponding messages will be logged.
91+
Sets whether the corresponding log type is printed or suppressed. When `false`, the rest of the corresponding log type's arguments are ignored.
9192

92-
The arguments of each log type are:
9393
- {{ page.url-log-enabled }}
9494
- {{ page.url-vlog-enabled }}
9595

9696
### Output
9797

98-
During the brief period in which configuration has not been completely parsed yet (and therefore, the validator is not yet aware of the desired log output), the standard streams and syslog are used simultaneously.
98+
Either `syslog` or `console`. The former sends the output to the environment's [syslog](https://en.wikipedia.org/wiki/Syslog) server (using the configured [`*.facility`](#facility)), while the latter employs the standard streams. (DEBUG and INFO are sent to standard output, WARNING and ERROR to standard error.)
9999

100-
Once the configuration has been loaded, all the log messages will be printed at the configured `*.output`, which can have two values:
101-
- `syslog`: all logging is sent to syslog, using the configured [`*.facility`](#facility).
102-
- `console`: informational and debug messages are printed in standard output, error and critical messages are thrown to standard error.
100+
> During the brief period in which configuration has not been completely parsed yet (and therefore, the validator is not yet aware of the desired log output), the standard streams and syslog are used simultaneously.
103101
104-
> Syslog configuration and usage is out of this docs scope, here's a brief introduction from [Wikipedia](https://en.wikipedia.org/wiki/Syslog). You can do some research according to your preferred OS distro to familiarize with syslog, since distinct implementations exists (the most common are: syslog, rsyslog, and syslog-ng).
105-
106-
The arguments of each log type are:
107102
- {{ page.url-log-output }}
108103
- {{ page.url-vlog-output }}
109104

110105
### Level
111106

112-
The `*.level` argument defines which messages will be logged according to its priority. Any log message of equal or higher importance to the one configured, will be logged, e.g. a value of `info` will log messages of equal or higher level (`info`, `warning`, and `error`).
107+
Only messages of equal or higher priority than `*.level` will be logged. For example, `--log.level=warning` will discard DEBUG and INFO operation messages, and log WARNING and ERROR.
113108

114-
The validator uses exactly five levels of priority (they're just some of all the syslog priority levels), but only four of them can be utilized in the configured [`*.output`](#output). These are their meanings and priority from highest to lowest:
115-
- `crit`: Programming errors. (These lead to program termination.)
116-
- **This level can't be indicated at `level`**, since `error` and `crit` messages are relevant for an adequate operation.
117-
- `error`: A failure that can stop an internal task (e.g. a certificate has expired so the childs are discarded) or is definitely an operational problem (e.g. no more memory can be allocated).
109+
The available values are
110+
111+
- `error`: A failure that can stop an internal task (e.g. a certificate has expired so the childs are discarded) or is definitely an operational problem (e.g. no more memory can be allocated). Also detected programming errors.
118112
- `warning`: Something suspicious, but not a stopper for a task.
119-
- `info`: Information deemed useful to the user.
120-
- `debug`: Information deemed useful to the developer. Expect a lot of messages when utilized.
113+
- `info`: Inoffensive messages that might be of interest to the administrator.
114+
- `debug`: Information deemed useful to the developer.
115+
116+
Variants:
121117

122-
The arguments of each log type are:
123118
- {{ page.url-log-level }}
124119
- {{ page.url-vlog-level }}
125120

126121
### Color output
127122

128-
The flag `*.color-output` is only meaningful when [`*.output`](#output) is `console` (it doesn't affect to `syslog`). When the flag is enabled, the log messages will have the following colors according to its priority:
129-
- `crit`: <span style="color:magenta">CYAN</span>
130-
- `error`: <span style="color:red">RED</span>
123+
Causes the output to contain ASCII color codes. Meant for human consumption. Only applies when [output](#output) is `console`.
124+
125+
Each color depends on the message's priority:
126+
127+
- `error`: <span style="color:red">RED</span> (Critical errors are <span style="color:magenta">CYAN</span>)
131128
- `warning`: <span style="color:orange">ORANGE</span>
132129
- `info`: <span style="color:lightgray">LIGHT GRAY</span>
133130
- `debug`: <span style="color:cyan">CYAN</span>
134131

135-
These are some examples of how the logs could be displayed when the flag is enabled:
132+
Examples:
133+
136134
<pre><code class="terminal">$ {{ page.command }} --log.color-output --validation-log.color-output (...)
137135
<span style="color:cyan">DBG: Manifest '62gPOPXWxxu0sQa4vQZYUBLaMbY.mft' {</span>
138136
<span style="color:lightgray">INF: Configuration {</span>
@@ -177,34 +175,30 @@ The arguments of each log type are:
177175

178176
### Facility
179177

180-
Sets the syslog facility, so it's only meaningful when [`*.output`](#output) is `syslog`.
178+
Sets the syslog [facility](https://en.wikipedia.org/wiki/Syslog#Facility); only meaningful when [`*.output`](#output) is `syslog`.
181179

182-
Currently the supported facilites are:
180+
The available facilites are
183181

184-
--|--|--|--|--|--
185182
auth | daemon | mail | uucp | local2 | local5
186183
authpriv | ftp | news | local0 | local3 | local6
187184
cron | lpr | user | local1 | local4 | local7
188185

189-
190-
You could read more about facilites [here](https://en.wikipedia.org/wiki/Syslog#Facility) (since it's out of this docs scope).
191-
192-
The arguments of each log type are:
193186
- {{ page.url-log-facility }}
194187
- {{ page.url-vlog-facility }}
195188

196189
### Tag
197190

198191
Text tag that will be added to each message of the corresponding log type. The tag will be added after the message level, inside square brackets.
199192

200-
It's a simple mean to differentiate each message according to its type, probably useful if the [`*.output`](#output) is the same for both log types.
193+
It's a simple means to differentiate each message according to its type, useful if both log types are [enabled](#enabled), and are printing to the same [`*.output`](#output).
194+
195+
Example:
201196

202-
E.g. If a validation error is found, it could be logged like this:
203197
{% highlight bash %}
204-
$ {{ page.command }} --validation-log.tag="Validation" (...)
205-
ERR [Validation]: rsync://rpki.example.com/foo/bar/baz.cer: Certificate validation failed: certificate has expired
198+
$ {{ page.command }} --log.tag="!Operation!" --validation-log.tag="!Validation!" (...)
199+
ERR [!Operation!]: Invalid rsync.enabled: 'tr0ue', must be boolean (true|false)
200+
ERR [!Validation!]: rsync://rpki.example.com/foo/bar/baz.cer: Certificate validation failed: certificate has expired
206201
{% endhighlight %}
207202

208-
The arguments of each log type are:
209203
- {{ page.url-log-tag }}
210204
- {{ page.url-vlog-tag }}

0 commit comments

Comments
 (0)