def test_connection_limit_g01(self): """ connection_limit_g01 """ if "json" == ml_system.CFG_TYPE: shutil.copyfile(os.path.join("unittest", "connection_limit-g01.json"), os.path.join("running", "connection_limit.txt")) if "jcfg" == ml_system.CFG_TYPE: shutil.copyfile(os.path.join("unittest", "connection_limit-g01.jcfg"), os.path.join("running", "connection_limit.txt")) if "pickle" == ml_system.CFG_TYPE: return self.maxDiff = None e = ml_w_connection_limit.get(None, threading.RLock()) self.assertEqual(e, (True, { "ipv4": [ { "source_ip": "10.10.10.1", "destination_ip": "10.10.10.2", "protocol": "TCP", "limit_rate": 5, "limit_rate_unit": "second", "limit_burst": 5 }, { "source_ip": "10.10.10.1", "destination_ip": "10.10.10.2", "protocol": "UDP", "limit_rate": 5, "limit_rate_unit": "minute", "limit_burst": 5 } ], "ipv6": [ { "source_ip": "2001::1", "destination_ip": "2001::2", "protocol": "TCP", "limit_rate": 5, "limit_rate_unit": "second", "limit_burst": 5 }, { "source_ip": "2001::1", "destination_ip": "2001::2", "protocol": "UDP", "limit_rate": 5, "limit_rate_unit": "minute", "limit_burst": 5 } ] }))
def connect(self, **kwargs): ''' connection limit getter and setter format: { "ipv4": [ { "source_ip": "ANY", "destination_ip": "ANY", "protocol": "TCP", "application_port": 80, "limit_rate": 5, "limit_rate_unit": "second", "limit_burst": 5 }, { "source_ip": "ANY", "destination_ip": "ANY", "protocol": "UDP", "application_port": 80, "limit_rate": 5, "limit_rate_unit": "minute", "limit_burst": 5 }, ... ], "ipv6": [ { "source_ip": "ANY", "destination_ip": "ANY", "protocol": "TCP", "application_port": 80, "limit_rate": 5, "limit_rate_unit": "second", "limit_burst": 5 }, { "source_ip": "ANY", "destination_ip": "ANY", "protocol": "UDP", "application_port": 80, "limit_rate": 5, "limit_rate_unit": "minute", "limit_burst": 5 }, ... ] } ''' import libs.login if False == libs.login.cklogin(): raise _.HTTPRedirect('/') import ml_w_connection_limit as wcl import json import libs.tools if "connect" in kwargs: # setter dat = kwargs res = {} opt = [] goptTmp = [] nopt = {} for k in dat: if "@@" in k: kk = k.split("@@") if "list" == type(kk).__name__ and len(kk) > 1: goptTmp = self._unstructDict(dat, "@@") gopt = {} for k in goptTmp: if not "connect" == k: gopt[k] = goptTmp[k] for k in gopt: nopt[k] = [] res = self._unstructDict(gopt[k], "@@") dd = {} for kk in res: dd = self._unstructDict(res[kk], "@@") nopt[k].append(dd) res = wcl.set(user = self.getUser(), cfg = nopt) if False == res[0]: return json.dumps([res[0], libs.tools.translateMessage(res[1])]) else: return json.dumps(res) else: # getter data = wcl.get() return json.dumps(data)