#!/usr/bin/env python3 # Copyright 2019-2023 VyOS maintainers and contributors <maintainers@vyos.io> # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library. If not, see <http://www.gnu.org/licenses/>. from argparse import ArgumentParser from sys import exit from vyos.template import is_ipv4 COMM_MAX_2_OCTET: int = 65535 COMM_MAX_4_OCTET: int = 4294967295 if __name__ == '__main__': # add an argument with community parser: ArgumentParser = ArgumentParser() parser.add_argument('community', type=str) args = parser.parse_args() for community in args.community.split(): if community.count(':') != 1: print("Invalid community format") exit(1) try: # try to extract community parts from an argument comm_left: str = community.split(':')[0] comm_right: int = int(community.split(':')[1]) # check if left part is an IPv4 address if is_ipv4(comm_left) and 0 <= comm_right <= COMM_MAX_2_OCTET: continue # check if a left part is a number if 0 <= int(comm_left) <= COMM_MAX_2_OCTET \ and 0 <= comm_right <= COMM_MAX_4_OCTET: continue raise Exception() except Exception: # fail if something was wrong print("Invalid community format") exit(1)