Releases: NICMx/FORT-validator
v1.5.0
The main updates of this release are:
- Add argument to daemonize the process (
--daemon
arg). - Integrate TALs download to the binary (
--init-tals
arg). - Implement a thread pool for incoming RTR clients and TALs validation.
Special thanks to Ivaylo Josifov from VarnaIX/Varteh Ltd! For his contribution regarding the implementation of the thread pool.
The public key to verify the tarball is here (it isn't certified yet).
Changes since v1.4.2:
-
Updates
- Add a warning message to the operation logs when the first validation cycle begins and ends. This is only to notify the RTR server availability to receive clients (router connections).
- Add
--daemon
argument to daemonize FORT validator; fixes #25. - Integrate the TALs download to FORT binary, by using
--init-tals
argument. - Terminate execution when there's no more memory available, since a full recovery after this isn't assured; related to #40. The RPM and DEB packages will restart the service if FORT validator ends this way, this is achieved using
RestartForceExitStatus
service setting. - Implement a thread pool that's utilized to attend incoming RTR clients (see
--thread-pool.server.max
) and to process TALs during each validation cycle (see--thread-pool.validation.max
).
-
Docs
- Add links for router OS configurations (Mikrotik, Nokia, Arista, and Huawei) at Routers - Router configuration.
- Add "Quick Start" section at Home and README.
v1.4.2
The main updates of this release are:
- Use a local workspace to store all files fetched via HTTP (includes RRDP, see #39).
- Fix bug that could lead to keep stale data when the local cache directory was removed.
- Create an official RPM package.
The public key to verify the tarball is here (it isn't certified yet).
Changes since v1.4.1:
-
Bug fixes
- If the
--local-repository
was deleted in between validation cycles, stale data could be kept a long time. Now this doesn't happens, since the files are sync'd again via RRDP if they aren't found (if RRDP is supported and--http.priority
is on top).
- If the
-
Updates
- Create and use local workspaces for all the files fetched via HTTP, including RRDP resultant files; related to #39.
-
Docs
- Add installation steps for the recently created RPM package.
v1.4.1
This release fixes a couple of bugs found at v1.4.0:
- Memory leak due to a bad structure release.
- Bad lock usage when storing an error'd repository URI.
The issue #41 was a consequence of one of these bugs.
The public key to verify the tarball is here (it isn't certified yet).
Changes since v1.3.0:
-
Bug fixes
- Use the adequate function to release a temporary URI structure (this bug was causing a memory leak).
- Request write lock whenever a new error'd URI is stored, the lock is used from the start to the end of the transaction.
-
Docs
- Add missing parenthesis at Logging section.
v1.4.0
The main updates of this release are:
- Upload Dockerfile so that the docker image can be built (located at the
docker
directory) (fixes issue #17). - Prefer HTTP repositories over RSYNC repositories by default (fixes issue #34).
- RTR server can be bound to multiple IPs (
server.address
can be a list of addresses). - New incidences for stale manifests (
incid-mft-stale
) and stale CRLs (incid-crl-stale
).
The public key to verify the tarball is here (it isn't certified yet).
Changes since v1.3.0:
-
Bug fixes
- Some XML parsing and validation errors where printed straight to
stderr
, now they're printed to the configuredvalidation-log.output
. - The protocol part of an URI only was only valid in lowercase, now the case is ignored.
- Some XML parsing and validation errors where printed straight to
-
Updates
- Upload Dockerfile in order to build a docker image, fixes issue #17.
- RTR server can be bound to multiple IPs by using a list of addresses in
server.address
; each address must have the format <address>#<port> (the#port
is optional, if none is indicated thenserver.port
is utilized as the default port). - Deprecate all
rrdp.*
arguments, renaming them tohttp.*
. The new arguments arehttp.enabled
,http.priority
,http.retry.count
andhttp.retry.interval
. They apply for each outgoing HTTP request. - 3 of the 4 TALs now include an HTTPs URI (one of them still hasn't the TA on an HTTPS URI), fixes issue #34.
- HTTPS requests are now preferred by default over RSYNC requests, this applies only when both of the options are present, related to #34.
- New incidences for stale manifests (
incid-mft-stale
) and stale CRLs (incid-crl-stale
).
-
Docs
- Add steps to install Debian package created by Marco D'Itri
- Add build steps for Gentoo and Alpine.
- Add docs to build and run the docker image.
- Update docs to include new arguments
http.*
, behavior ofserver.address
, and new incidences. - Add a section for deprecated arguments.
v1.3.0
The main updates of this release are:
- Separate validation logs from operation logs, the validation logs are disabled by default.
- Allow to work with local files if a repository can't be synced.
The public key to verify the tarball is here (it isn't certified yet).
Changes since v1.2.1:
-
Bug fixes
- Minimize function calls and processing once a fork is made to execute rsync, related to issue #35.
-
Updates
- Separate the validation messages from the operation messages, each log type has its own configuration arguments.
- Include a configurable syslog facility for each log type, useful when syslog is utilized.
- Add new argument
stale-repository-period
. When a repository URI can't be reached, the validator will log the error messages at the operation log afterstale-repository-period
seconds had elapsed since the first error fetching the repository URI. - Allow to work with local files if a repository can't be synced.
-
Docs
- Add installation steps for Gentoo, based on an ebuild from issue #23.
- Update all logging docs, since now there are two types of logs: operation and validation.
- Update docs to include new argument
stale-repository-period
.
v1.2.1
The main updates at this release are:
- Wait for RTR client connections once the first validation cycle is done.
- Improve SLURM file(s) processing.
- New incidences related to manifests validation.
The public key to verify the tarball is here (it isn't certified yet).
Changes since v1.2.0:
-
Bug fixes
- Add broken pipe (
SIGPIPE
) signal handler, this avoids a sudden death when the socket is still alive at the server but closed at the client side. - Don't hold the DB lock when the SLURM is being loaded.
- Specific for CentOS7 libcurl: check for time condition met/unmet (whenever the HTTP header "If-Modified-Since" is sent) when requesting RRDP update notification files.
- Stop sending PDUs on reset exchange error.
- Fix GCC 10 compiling error and warnings, this fixes #32.
- Add broken pipe (
-
Updates
- Wait for client connections at
--server.port
until the first validation cycle is done. - Update internal PDU logs.
- SLURM upgrades:
- Improve loading process, use an internal cache when a SLURM file is being loaded.
- Don't discard the loaded SLURM if there's an error applying it.
- Calculate SLURM file(s) checksum and compare it with its previous one to avoid loading each SLURM at every validation cycle if there aren't updates.
- Stop doing unnecessary validations, since they aren't part of the RFC 8416: duplicated elements at the same file, covered prefixes at the same file.
- Add new incidences related to manifests processing, fixes issue #28. The new incidences are:
incid-file-at_mft-not-found
(default value:error
).incid-file-at-mft-hash-not-match
(default value:error
).
- Internal improvements resultant from a code review (thanks to @ydahhrk).
- Wait for client connections at
-
Docs
- Add new incidences documentation:
incid-file-at_mft-not-found
andincid-file-at-mft-hash-not-match
. - Add
CAP_NET_BIND_SERVICE
capability usage (thanks to @rfc1036 for the comment at #22 (comment)). - Fix Debian dependencies.
- Add
MALLOC_ARENA_MAX
memory tuning quirk, specific for Linux and glibc.
- Add new incidences documentation:
v1.2.0
The main updates at this release are:
- RFC 8182 "The RPKI Repository Delta Protocol (RRDP)" support.
- RFC 8630 "Resource Public Key Infrastructure (RPKI) Trust Anchor Locator" support.
- New incidence
incid-obj-not-der-encoded
to validate DER encoding of a signed object (see RFC 6488 section 3 bullet 1.l). - Remember last valid SLURM in case of syntax error with newer SLURMs(s).
- Setup script to ease ARINs TAL download (see more).
sync-strategy
will be deprecated, log a warning and invite to usersync.strategy
instead.
The public key to verify the tarball is here (it isn't certified yet).
Changes since v1.1.3:
-
Bug fixes
- Solve issue #9 "Use previous valid SLURM configuration on SLURM error": whenever there's an error, apply the last valid SLURM version.
- If an empty value was sent to arguments that expect paths (eg.
fort --tal=
), this was treated as valid; now this isn't allowed. - rsync execution logs didn't logged to syslog, now they do.
- Allow reuse server address/port on restart.
- Try to fetch the trust anchor certificate from another URI whenever the previous TAL URI wasn't fetched due to an error.
- Standard output wasn't flushed when the console logs where piped, now it is flushed.
-
Updates
- Support RRDP (solves issue #20).
- Support HTTPS URIs in TALs (solves issue #19).
- Add new incidence
incid-obj-not-der-encoded
to validate signed objects DER encoding. - Log additional information on start/end of a validation cycle, the information is printed at log level
info
:- When a client starts/ends a connection, or when the connection is killed (print its address and an internal ID).
- When a new validation cycle is started and finished (includes number of valid Prefixes and Router Keys, current/new serial number, and real execution time).
- Add setup script to ease ARINs TAL download, explicitly accepting their RPA. The script does the following:
- Invites to agree ARIN RPA and downloads ARIN's TAL.
- Downloads the rest of the TALS from github repository.
- Creates a local repository directory, and an example configuration file.
- Create
examples
directory:- Move
tal
directory to this new directory. - Add a valid configuration file.
- Add a valid SLURM file.
- Move
- New configuration arguments added:
work-offline
: Disables outgoing requests to work only with local files fromlocal-repository
.http.user-agent
: User-Agent header set at HTTP requests.http.connect-timeout
: Timeout in seconds for the connect phase at HTTP requests.http.transfer-timeout
: Maximum allowed time that an HTTP request can take.http.idle-timeout
: Maximum idle time during an HTTP request.http.ca-path
: Directory where CA certs to verify peers are found.rrdp.enabled
: Enables RRDP files processing.rrdp.priority
: Priority to use this protocol whenever a CA has another option to access the repository files.rrdp.retry.count
: Maximum number of retries on requests error.rrdp.retry.interval
: Interval (in seconds) between each retry.rsync.enabled
: Enables RSYNC execution.rsync.priority
: Priority to use this protocol whenever a CA has another option to access the repository files.rsync.strategy
: Synchronization download strategy (replacessync-strategy
).rsync.retry.count
: Maximum number of retries whenever there's an execution error.rsync.retry.interval
: Interval (in seconds) between each retry.asn1-decode-max-stack
: indicates the max stack size that can be utilized when decoding ASN1 objects (mainly to avoid a stack overflow).
- Update unit tests.
-
Docs
- Indicate full RFC 8182 and RFC 8630 compliance.
- Add docs for new configuration parameters (at web docs module 'Program arguments' and user man).
- Add the usage of the setup script at Installation module, as well as the new dependencies of
libcurl
andlibxml2
. - Add new section 'Routers', contains a basic explanation of data exchange with routers.
- Update 'Incidences' module to include DER encoding validation (
incid-obj-not-der-encoded
). - Update RFC compliance of RFC 6488 to 100%.
- Update READMEs to use relative paths instead of always use master URLs.
- Replace '2019' year refs to '2020'.
v1.1.3
This release includes a bug fix: don't update valid prefixes and router keys database if one of the root certificates had a communication error (rsync) or a processing error.
The public key to verify the tarball is here (it isn't certified yet).
Changes since v1.1.2:
- Bug fixes
- Prefixes and router keys database isn't altered whenever there's a communication error with a root certificate.
v1.1.2
This release includes minor updates, the most relevant are: new program arguments log.output
and log.level
, and add missing 2-Clause BSD licence to /src/asn1/asn1c/
.
The public key to verify the tarball is here (it isn't certified yet).
Changes since v1.1.1:
-
Updates
- Add
log.output
andlog.level
configuration parameters. - Add missing 2-Clause BSD licence to
/src/asn1/asn1c/
code. - Allow debug log without the need to recompile from source.
- Remove
<sys/cdefs.h>
references. - Use flag
-Wno-cpp
to avoid c++ warnings.
- Add
-
Docs
- Update Logging and Program Arguments modules to explain new configuration parameters.
v1.1.1
This release includes bug fixes and minor updates.
The public key to verify the tarball is here (it isn't certified yet).
Changes since v1.1.0:
-
Bug fixes
- Validate
output.bgpsec
path, check if the path is writable during configuration checks. - Fix bad PDU exchange when the ROAs/Router Keys DB was empty, an End of Data was being sent when a Reset Query PDU was received.
- Validate
-
Updates
- Add missing validation from RFC 7935 section 3 (subjectPublicKey modulus and exponent).
- Use type
blksize_t
(<sys/types.h>
) instead of__blksize_t
(<bits/types.h>
) to avoid a specific compilation error on Alpine Linux.