From a899376b8cda91e5447ef2f489daf332e4d324ec Mon Sep 17 00:00:00 2001 From: Fadi Abbud Date: Tue, 21 Jun 2022 16:51:30 +0200 Subject: [PATCH 1/7] Include testing the remote validator in itests --- docs/scripts/setupProviderForITest.sh | 3 +++ docs/scripts/setupValidationService.sh | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 docs/scripts/setupValidationService.sh diff --git a/docs/scripts/setupProviderForITest.sh b/docs/scripts/setupProviderForITest.sh index fd5c054..9c3a78a 100755 --- a/docs/scripts/setupProviderForITest.sh +++ b/docs/scripts/setupProviderForITest.sh @@ -104,6 +104,9 @@ curl https://localhost:8443/cgi-bin/csaf_provider.go/create --cert-type p12 --ce popd +# Setup validation service +./setupValidationService.sh + # Upload files ./uploadToProvider.sh diff --git a/docs/scripts/setupValidationService.sh b/docs/scripts/setupValidationService.sh new file mode 100644 index 0000000..a8d7d13 --- /dev/null +++ b/docs/scripts/setupValidationService.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +mkdir -p /var/lib/csaf +sudo chgrp www-data /var/lib/csaf/ +sudo chmod g+s /var/lib/csaf/ +sudo touch /var/lib/csaf/validations.db +sudo chgrp www-data /var/lib/csaf/validations.db +sudo chmod g+rw,o-rwx /var/lib/csaf/validations.db + +echo ' +remote_validator= { "url" = "http://localhost:3000", "presets" = ["mandatory"], "cache" = "/var/lib/csaf/validations.db" } +' | sudo tee --append /usr/lib/csaf/config.toml + +# Install nodejs +curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - +sudo apt-get install -y nodejs + +npm install pm2 -g + +pushd ~ +git clone https://github.com/secvisogram/csaf-validator-service.git +cd csaf-validator-service +npm ci +pm2 start npm -- run dev +popd From 847ca3d6af9385386005b8fe61e491500076a965 Mon Sep 17 00:00:00 2001 From: Fadi Abbud Date: Tue, 21 Jun 2022 16:52:19 +0200 Subject: [PATCH 2/7] Change permission for one script file --- docs/scripts/setupValidationService.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 docs/scripts/setupValidationService.sh diff --git a/docs/scripts/setupValidationService.sh b/docs/scripts/setupValidationService.sh old mode 100644 new mode 100755 From 36384ca942c254465c35d3189349e6f6c483cc53 Mon Sep 17 00:00:00 2001 From: Fadi Abbud Date: Wed, 22 Jun 2022 09:21:46 +0200 Subject: [PATCH 3/7] Add "sudo" to one command --- docs/scripts/setupValidationService.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/scripts/setupValidationService.sh b/docs/scripts/setupValidationService.sh index a8d7d13..ba6a43e 100755 --- a/docs/scripts/setupValidationService.sh +++ b/docs/scripts/setupValidationService.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -mkdir -p /var/lib/csaf +sudo mkdir -p /var/lib/csaf sudo chgrp www-data /var/lib/csaf/ sudo chmod g+s /var/lib/csaf/ sudo touch /var/lib/csaf/validations.db From e1966a57168a8991cce1b22a8130087cded987fb Mon Sep 17 00:00:00 2001 From: Fadi Abbud Date: Wed, 22 Jun 2022 11:14:22 +0200 Subject: [PATCH 4/7] Adjust "setupProviderForItest.sh" script * To wait for the validator-service to be started. --- docs/scripts/setupProviderForITest.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/scripts/setupProviderForITest.sh b/docs/scripts/setupProviderForITest.sh index 9c3a78a..88d33f1 100755 --- a/docs/scripts/setupProviderForITest.sh +++ b/docs/scripts/setupProviderForITest.sh @@ -107,6 +107,14 @@ popd # Setup validation service ./setupValidationService.sh +# Wait for the service to be started +for ((i = 1; i <= 10; i++)); do + if [ $(curl -IL http://localhost:3000/api/v1/tests | grep -c HTTP ) != "0" ]; then + break + fi + sleep 3 +done + # Upload files ./uploadToProvider.sh From 9a390e2bcc015c8311525ecf0be428f1b627f732 Mon Sep 17 00:00:00 2001 From: Fadi Abbud Date: Wed, 22 Jun 2022 11:47:09 +0200 Subject: [PATCH 5/7] Adjust script * Disable exiting from Script for the errors by checking if the validator-service is started. --- docs/scripts/setupProviderForITest.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/scripts/setupProviderForITest.sh b/docs/scripts/setupProviderForITest.sh index 88d33f1..ea69ba8 100755 --- a/docs/scripts/setupProviderForITest.sh +++ b/docs/scripts/setupProviderForITest.sh @@ -107,6 +107,9 @@ popd # Setup validation service ./setupValidationService.sh +# Disable exit for the next error as these is expected. +set +e + # Wait for the service to be started for ((i = 1; i <= 10; i++)); do if [ $(curl -IL http://localhost:3000/api/v1/tests | grep -c HTTP ) != "0" ]; then From bace61e0b3ae6fdf74a64c5a3e9de89ac7301aee Mon Sep 17 00:00:00 2001 From: "Sascha L. Teichmann" Date: Thu, 23 Jun 2022 19:48:02 +0200 Subject: [PATCH 6/7] Add forgotten validation for metadata --- csaf/models.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/csaf/models.go b/csaf/models.go index 683c4bd..d9197d5 100644 --- a/csaf/models.go +++ b/csaf/models.go @@ -318,6 +318,24 @@ func (a *Aggregator) Validate() error { return nil } +// UnmarshalText implements the encoding.TextUnmarshaller interface. +func (mdv *MetadataVersion) UnmarshalText(data []byte) error { + s, err := metadataVersionPattern(data) + if err == nil { + *mdv = MetadataVersion(s) + } + return err +} + +// UnmarshalText implements the encoding.TextUnmarshaller interface. +func (mdr *MetadataRole) UnmarshalText(data []byte) error { + s, err := metadataRolePattern(data) + if err == nil { + *mdr = MetadataRole(s) + } + return err +} + // UnmarshalText implements the encoding.TextUnmarshaller interface. func (ac *AggregatorCategory) UnmarshalText(data []byte) error { s, err := aggregatorCategoryPattern(data) From b95cd0db74209ee6c58418f96bb41e4ab5abcbe4 Mon Sep 17 00:00:00 2001 From: Bernhard Reiter Date: Mon, 27 Jun 2022 17:26:52 +0200 Subject: [PATCH 7/7] Fix minor typos in comments and bump (c) year --- cmd/csaf_provider/actions.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/csaf_provider/actions.go b/cmd/csaf_provider/actions.go index 1e46c2d..137283a 100644 --- a/cmd/csaf_provider/actions.go +++ b/cmd/csaf_provider/actions.go @@ -3,8 +3,8 @@ // // SPDX-License-Identifier: MIT // -// SPDX-FileCopyrightText: 2021 German Federal Office for Information Security (BSI) -// Software-Engineering: 2021 Intevation GmbH +// SPDX-FileCopyrightText: 2022 German Federal Office for Information Security (BSI) +// Software-Engineering: 2022 Intevation GmbH package main @@ -155,7 +155,7 @@ func (c *controller) upload(r *http.Request) (interface{}, error) { return nil, err } - // Validate againt JSON schema. + // Validate against JSON schema. if !c.cfg.NoValidation { validationErrors, err := csaf.ValidateCSAF(content) if err != nil { @@ -167,7 +167,7 @@ func (c *controller) upload(r *http.Request) (interface{}, error) { } } - // Validate against remote validator + // Validate against remote validator. if c.cfg.RemoteValidator != nil { validator, err := c.cfg.RemoteValidator.Open() if err != nil {