#!/usr/bin/env python3 """ Script for creating a variable number of VAPs. """ import sys import os import importlib import argparse import pprint if sys.version_info[0] != 3: print("This script requires Python 3") exit(1) sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../"))) lfcli_base = importlib.import_module("py-json.LANforge.lfcli_base") LFCliBase = lfcli_base.LFCliBase LFUtils = importlib.import_module("py-json.LANforge.LFUtils") realm = importlib.import_module("py-json.realm") Realm = realm.Realm class CreateVAP(Realm): def __init__(self, _ssid=None, _security=None, _password=None, _mac=None, _host=None, _port=None, _vap_list=None, _resource=None, _vap_flags=None, _mode=None, _number_template="00000", _radio=None, _channel=36, _country_code=0, _nss=False, _bridge=False, _proxy_str=None, _debug_on=False, _exit_on_error=False, _exit_on_fail=False, _dhcp=True): super().__init__(_host, _port) self.host = _host self.port = _port self.ssid = _ssid self.security = _security self.password = _password self.vap_list = _vap_list self.resource = _resource if _vap_flags is None: self.vap_flags = [ "wpa2_enable", "80211u_enable", "create_admin_down"] else: self.vap_flags = _vap_flags self.mode = _mode self.radio = _radio self.channel = _channel self.country_code = _country_code self.timeout = 120 self.number_template = _number_template self.debug = _debug_on self.dhcp = _dhcp self.bridge = _bridge self.vap_profile = self.new_vap_profile() self.vap_profile.vap_name = self.vap_list self.vap_profile.ssid = self.ssid self.vap_profile.security = self.security self.vap_profile.ssid_pass = self.password self.vap_profile.dhcp = self.dhcp self.vap_profile.mode = self.mode self.vap_profile.desired_add_vap_flags = self.vap_flags + \ ["wpa2_enable", "80211u_enable", "create_admin_down"] self.vap_profile.desired_add_vap_flags_mask = self.vap_flags + \ ["wpa2_enable", "80211u_enable", "create_admin_down"] if self.debug: print("----- VAP List ----- ----- ----- ----- ----- ----- \n") pprint.pprint(self.vap_list) print("---- ~VAP List ----- ----- ----- ----- ----- ----- \n") def build(self): # Build VAPs self.vap_profile.use_security( self.security, self.ssid, passwd=self.password) print("Creating VAPs") self.vap_profile.create(resource=self.resource, radio=self.radio, channel=self.channel, up_=True, debug=False, use_ht40=True, use_ht80=True, use_ht160=False, suppress_related_commands_=True, use_radius=False, hs20_enable=False, bridge=self.bridge) self._pass("PASS: VAP build finished") def main(): parser = LFCliBase.create_basic_argparse( prog='create_vap.py', formatter_class=argparse.RawTextHelpFormatter, epilog='''\ Create VAPs ''', description='''\ create_vap.py -------------------- Command example: ./create_vap.py --upstream_port eth1 --radio wiphy0 --num_vaps 3 --security open --ssid netgear --passwd BLANK --debug ''') optional = parser.add_argument_group('optional arguments') optional.add_argument( '--num_vaps', help='Number of VAPs to Create', required=False, default=1) optional.add_argument( '--vap_flag', help='VAP flags to add', required=False, default=None, action='append') optional.add_argument( '--bridge', help='Create a bridge connecting the VAP to a port', required=False, default=False) optional.add_argument( '--mac', help='Custom mac address', default="xx:xx:xx:xx:*:xx") optional.add_argument('--mode', default='AUTO') optional.add_argument('--channel', default=36) optional.add_argument('--country_code', default=0) optional.add_argument('--nss', default=False) optional.add_argument('--resource', default=1) optional.add_argument('--start_id', default=0) optional.add_argument('--vap_name', default=None) args = parser.parse_args() # if args.debug: # pprint.pprint(args) # time.sleep(5) if args.radio is None: raise ValueError("--radio required") num_vap = int(args.num_vaps) vap_list = LFUtils.port_name_series(prefix="vap", start_id=int(args.start_id), end_id=num_vap - 1, padding_number=10000, radio=args.radio) # print(args.passwd) # print(args.ssid) if args.vap_name is None: for vap in vap_list: create_vap = CreateVAP(_host=args.mgr, _port=args.mgr_port, _ssid=args.ssid, _password=args.passwd, _security=args.security, _mode=args.mode, _vap_list=vap, _resource=args.resource, _vap_flags=args.vap_flag, _radio=args.radio, _channel=args.channel, _country_code=args.country_code, _nss=args.nss, _proxy_str=args.proxy, _bridge=args.bridge, _debug_on=args.debug) print('Creating VAP') create_vap.build() else: vap_name = "vap" + args.vap_name create_vap = CreateVAP(_host=args.mgr, _port=args.mgr_port, _ssid=args.ssid, _password=args.passwd, _security=args.security, _mode=args.mode, _vap_list=vap_name, _resource=args.resource, _vap_flags=args.vap_flag, _radio=args.radio, _channel=args.channel, _country_code=args.country_code, _nss=args.nss, _proxy_str=args.proxy, _bridge=args.bridge, _debug_on=args.debug) print('Creating VAP') create_vap.build() if __name__ == "__main__": main()