#!/usr/bin/env python3 # # Copyright 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 . import re import sys allowedChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', '+', '*', '?', '^', '$', '(', ')', '[', ']', '{', '}', '|', '\\', ':', '-', '_', ' ' } if __name__ == '__main__': if len(sys.argv) != 2: sys.exit(1) value = sys.argv[1] # Require at least one well-formed large-community tuple in the pattern. tmp = value.split(':') if len(tmp) < 3: sys.exit(1) # Simple guard against invalid community & 1003.2 pattern chars if not set(value).issubset(allowedChars): sys.exit(1) # Don't feed FRR badly formed regex try: re.compile(value) except re.error: sys.exit(1) sys.exit(0)