diff options
| -rw-r--r-- | interface-definitions/include/certificate-ca.xml.i | 2 | ||||
| -rw-r--r-- | interface-definitions/include/certificate-key.xml.i | 2 | ||||
| -rw-r--r-- | interface-definitions/include/certificate.xml.i | 2 | ||||
| -rw-r--r-- | interface-definitions/protocols-rpki.xml.in | 6 | ||||
| -rwxr-xr-x | src/validators/file-exists | 61 | 
5 files changed, 6 insertions, 67 deletions
| diff --git a/interface-definitions/include/certificate-ca.xml.i b/interface-definitions/include/certificate-ca.xml.i index b97378658..3cde2a48d 100644 --- a/interface-definitions/include/certificate-ca.xml.i +++ b/interface-definitions/include/certificate-ca.xml.i @@ -7,7 +7,7 @@        <description>File in /config/auth directory</description>      </valueHelp>      <constraint> -      <validator name="file-exists" argument="--directory /config/auth"/> +      <validator name="file-path" argument="--strict --parent-dir /config/auth"/>      </constraint>    </properties>  </leafNode> diff --git a/interface-definitions/include/certificate-key.xml.i b/interface-definitions/include/certificate-key.xml.i index 1db9dd069..2c4d81fbb 100644 --- a/interface-definitions/include/certificate-key.xml.i +++ b/interface-definitions/include/certificate-key.xml.i @@ -7,7 +7,7 @@        <description>File in /config/auth directory</description>      </valueHelp>      <constraint> -      <validator name="file-exists" argument="--directory /config/auth"/> +      <validator name="file-path" argument="--strict --parent-dir /config/auth"/>      </constraint>    </properties>  </leafNode> diff --git a/interface-definitions/include/certificate.xml.i b/interface-definitions/include/certificate.xml.i index fb5be45cc..6a5b2936c 100644 --- a/interface-definitions/include/certificate.xml.i +++ b/interface-definitions/include/certificate.xml.i @@ -7,7 +7,7 @@        <description>File in /config/auth directory</description>      </valueHelp>      <constraint> -      <validator name="file-exists" argument="--directory /config/auth"/> +      <validator name="file-path" argument="--strict --parent-dir /config/auth"/>      </constraint>    </properties>  </leafNode> diff --git a/interface-definitions/protocols-rpki.xml.in b/interface-definitions/protocols-rpki.xml.in index 4535d3990..0098cacb6 100644 --- a/interface-definitions/protocols-rpki.xml.in +++ b/interface-definitions/protocols-rpki.xml.in @@ -51,7 +51,7 @@                      <properties>                        <help>RPKI SSH known hosts file</help>                        <constraint> -                        <validator name="file-exists"/> +                        <validator name="file-path"/>                        </constraint>                      </properties>                    </leafNode> @@ -59,7 +59,7 @@                      <properties>                        <help>RPKI SSH private key file</help>                        <constraint> -                        <validator name="file-exists"/> +                        <validator name="file-path"/>                        </constraint>                      </properties>                    </leafNode> @@ -67,7 +67,7 @@                      <properties>                        <help>RPKI SSH public key file path</help>                        <constraint> -                        <validator name="file-exists"/> +                        <validator name="file-path"/>                        </constraint>                      </properties>                    </leafNode> diff --git a/src/validators/file-exists b/src/validators/file-exists deleted file mode 100755 index 5cef6b199..000000000 --- a/src/validators/file-exists +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2019 VyOS maintainers and contributors -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 or later as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program.  If not, see <http://www.gnu.org/licenses/>. -# -# Description: -# Check if a given file exists on the system. Used for files that -# are referenced from the CLI and need to be preserved during an image upgrade. -# Warn the user if these aren't under /config - -import os -import sys -import argparse - - -def exit(strict, message): -    if strict: -        sys.exit(f'ERROR: {message}') -    print(f'WARNING: {message}', file=sys.stderr) -    sys.exit() - - -if __name__ == '__main__': -    parser = argparse.ArgumentParser() -    parser.add_argument("-d", "--directory", type=str, help="File must be present in this directory.") -    parser.add_argument("-e", "--error", action="store_true", help="Tread warnings as errors - change exit code to '1'") -    parser.add_argument("file", type=str, help="Path of file to validate") - -    args = parser.parse_args() - -    # -    # Always check if the given file exists -    # -    if not os.path.exists(args.file): -        exit(args.error, f"File '{args.file}' not found") - -    # -    # Optional check if the file is under a certain directory path -    # -    if args.directory: -        # remove directory path from path to verify -        rel_filename = args.file.replace(args.directory, '').lstrip('/') - -        if not os.path.exists(args.directory + '/' + rel_filename): -            exit(args.error, -                f"'{args.file}' lies outside of '{args.directory}' directory.\n" -                  "It will not get preserved during image upgrade!" -            ) - -    sys.exit() | 
