def test_connection_limit_g02(self): """ connection_limit_g02 """ connection_limit = { "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 } ] } self.maxDiff = None e = ml_w_connection_limit.set(None, connection_limit) self.assertTrue(e[0], e[1]) f = open(os.path.join("running", "connection_limit.txt"), "r") e = f.readlines() f.close() if "json" == ml_system.CFG_TYPE: self.assertEqual(e, ['{"br": [{"STP": true, "name": "s0b1", "hello_time": 5, "interface": ["s0e2"], "max_message_age": 5, "forward_delay": 5}]}']) if "jcfg" == ml_system.CFG_TYPE: self.assertEqual(e, ['connection_limit {\n', ' ipv4-array {\n', ' ipv4 { #1\n', ' source_ip 10.10.10.1\n', ' destination_ip 10.10.10.2\n', ' protocol TCP\n', ' limit_rate 5\n', ' limit_rate_unit second\n', ' }\n', ' ipv4 { #2\n', ' source_ip 10.10.10.1\n', ' destination_ip 10.10.10.2\n', ' protocol UDP\n', ' limit_rate 5\n', ' limit_rate_unit minute\n', ' }\n', ' }\n', ' ipv6-array {\n', ' ipv6 { #1\n', ' source_ip 2001::1\n', ' destination_ip 2001::2\n', ' protocol TCP\n', ' limit_rate 5\n', ' limit_rate_unit second\n', ' }\n', ' ipv6 { #2\n', ' source_ip 2001::1\n', ' destination_ip 2001::2\n', ' protocol UDP\n', ' limit_rate 5\n', ' limit_rate_unit minute\n', ' }\n', ' }\n', '}\n'])
def run(self): e = ml_w_connection_limit.set(None, connection_limit, threading.RLock())
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)