Пример #1
0
def _prepareUserInfo(user_prefix=_user_prefix,
                    user_range=_user_range,
                    mail_postfix=_mail_postfix,
                    password=_password):
    res = []
    for i in user_range:
        d = MyDict()
        d.nickname = "%s%05d" % (user_prefix, i)
        d.username = "******" % (user_prefix, i, mail_postfix) 
        d.email = "%s%05d%s" % (user_prefix, i, mail_postfix)
        d.password = password
        res.append(d)
    return res
Пример #2
0
class Tree:
    branches=MyDict()
    def __init__(self,root):
        self.root=root
        self.branches[self.root]=root.getTag()+"_"+str(root.num_children())
        #self.add_branches(root)
    def treeTraversal(self,traverse="search",printing=False):
        #count=0
        if traverse=="search":
            pass
    def printTree(self):
        #doing this
        #print self.getRoot(True)
        for k,v in self.branches.iteritems():
            if k.is_root():
                print v
                for i in range(k.num_children()):
                    print "|"
                    print "--"+str(i)
    def printSubTree(self,node="root"):
        if node in Node.NodeIndex.keys():
            print "I am new branch"
            print node
            print "My children are" 
            for i in Node.NodeIndex[node].get_child():
                print i.getTag()
            if len(Node.NodeIndex[node].get_child())==0:
                    print "No children"
    def getRoot(self,tag=False):
        if tag:
            return self.root.getTag()
        else:
            return self.root
    def add_branches(self,parent):
        def addit(parent):
                for i in parent.get_child():
                    self.branches[i]=i.getTag()+"_"+str(i.num_children())
        if not isinstance(parent, Node):
            return
        if parent.has_children():
            addit(parent)
            for i in parent.get_child():
                if isinstance(i, Node):
                    if i.has_children():
                        addit(i)
                    else:
                        self.add_branches(i)
        else:
            self.branches[parent]=parent.getTag()+"_"+str(parent.num_children())
    def addMyBranches(self,parent):
        if not isinstance(parent,Node):
            return
        if parent.has_children():
            for i in parent.get_child():
                    self.branches[i]=i.getTag()+"_"+str(i.num_children())
        else:
            self.branches[parent]=parent.getTag()+"_"+str(parent.num_children())
Пример #3
0
 def _readConfig(self):
     """Load App configuration"""
     if self._configFile!=None:
         self._config = XMLParser()
         self._config.readfile(self._configFile)
         
         for section in self._config.xsd7config[0].xsection:
             for option in section.xoption:
                 if not self._options.has_key(section.pname):
                     self._options[section.pname] = MyDict()
                 self._options[section.pname][option.pname] = option.pvalue
     
     self._setConfigDefaults()
Пример #4
0
def isSuperSet(A, B):
    d1 = MyDict()
    d2 = MyDict()

    for a in A:
        d1[a] = d1.get(a, 0) + 1

    for b in B:
        d2[b] = d2.get(b, 0) + 1

    for key in d2.keys():
        if d2[key] > d1.get(key, 0):
            return False

    return True
Пример #5
0
class Tree:
    branches=MyDict()
    def __init__(self,root):
        self.root=root
        self.branches[self.root]=root.getTag()+"_"+root.getTag()+"_"+str(root.num_children())
        #self.add_branches(root)
    def treeTraversal(self,traverse="search",printing=False):
        #count=0
        if traverse=="search":
            pass
    def printTree(self):
        #doing this
        print self.getRoot(True)
        for k,v in self.branches.iteritems():
            if k.is_root():
                print v
                for i in range(k.num_children()):
                    print "|"
                    print "--"+str(i)
    def getRoot(self,tag=False):
        if tag:
            return self.root.getTag()
        else:
            return self.root
    def add_branches(self,parent):
        def addit(parent):
                for i in parent.get_child():
                    self.branches[i]=parent.getTag()+"_"+i.getTag()+"_"+str(i.num_children())
        if not isinstance(parent, Node):
            return
        if parent.has_children():
            addit(parent)
            for i in parent.get_child():
                if isinstance(i, Node):
                    if i.has_children():
                        addit(i)
                    else:
                        self.add_branches(i)
        else:
            self.branches[parent]=parent.get_parent().getTag()+"_"+parent.getTag()+"_"+str(parent.num_children())
    def addMyBranches(self,parent):
        if not isinstance(parent,Node):
            return
        if parent.has_children():
            for i in parent.get_child():
                    self.branches[i]=parent.getTag()+"_"+i.getTag()+"_"+str(i.num_children())
        else:
            self.branches[parent]=parent.get_parent().getTag()+"_"+parent.getTag()+"_"+str(parent.num_children())
Пример #6
0
 def _parseArgs(self,argv):
     n=len(argv)-1
     i = 1
     while i <= n:
         param=argv[i]
         if param.startswith("-"):
             if param=="-c" and i<n:
                 i+=1
                 self._configFile=argv[i]
             elif param=="-o" and i<n-1:
                 i+=1
                 if not self._options.has_key("cmd"):
                     self._options["cmd"] = MyDict()
                 self._options["cmd"][argv[i]]=argv[i+1]
                 i+=1
             else:
                 i = self._parseArgument(argv,i,n)
         else:
             i = self._parseArgument(argv,i,n)
         i = i+1
Пример #7
0
 def test_key(self):
     d = MyDict()
     d['key'] = 'value'
     self.assertEqual(d['key'], 'value')
Пример #8
0
 def test_init(self):
     d = MyDict(a=1, b='c')
     self.assertEqual(d.a, 1)
     self.assertEqual(d.b, 'c')
     self.assertIsInstance(d, MyDict)
Пример #9
0
class Node:
    NodeIndex=MyDict()
    rootset=False
    def __init__(self,tag,value=None,parent=None,data=None,root=False,level=0):
        self.tag=tag  #originally commented
        self.value=value
        self.data=data
        self.parent=parent
        self.root=root
        self.child=[]
        self.level=level
        #if self.parent==None and self.root==False:
        #    raise NoParentException
        if root:
	    self.NodeIndex[self.tag]=self
            self.tag=tag
            if Node.rootset:
                raise DuplicateRootNode
            self.level=0
            Node.rootset=True
        else:
            #self.tag=self.parent.getTag()+"_"+tag
            #self.level=self.parent.getLevel()+1
	    pass       
    def set_parent(self,parentnode):
        self.parent=parentnode
	if self.parent==None and self.root==False:
            raise NoParentException
	self.tag=self.parent.getTag()+"_"+self.tag
        self.level=self.parent.getLevel()+1
	if self.parent is not None:
            self.parent.add_child(self)
        self.NodeIndex[self.tag]=self
	
    def add_child(self,children,*args):
        self.child.append(children)
        if len(args)>0:
            for i in args:
                self.child.append(i)
    def num_children(self):
        return len(self.child)
    def get_child(self):
        return self.child
    def changeParent(self,parent):
        self.parent.remove_child(self)
        self.tag=parent.getTag()+self.tag.split("_")[-1]
        self.parent=parent
        self.parent.add_child(self)
    def has_children(self):
        return True if len(self.child)!=0 else False
    def remove_child(self,children):
        if children in self.child:
            self.child.remove(children)
    def move_child(self,children,index):
        if children in self.child:
            self.child.remove(children)
            self.child.insert(index,children)
    def get_parent(self):
        return self.parent
    def is_leaf(self):
        if len(self.child)==0:
            return True
        else:
            return False
    def is_root(self):
        if self.parent==None:
            return True
        else:
            return False
    def getData(self):
        return self.data
    def getTag(self):
        return self.tag
    def getValue(self):
        return self.value
    def getLevel(self):
        return self.level
    def getAll(self):
        return self.tag,self.value,self.parent,self.child,self.data
Пример #10
0
from MyDict import MyDict

d = MyDict()

d['a'] = 1
print(d['a'])
print(d.get('b', 0))
print(d['b'])
Пример #11
0
'''
Created on 21-Jun-2016
@author: tcs
'''
#from collections import namedtuple
from MyDict import MyDict
ff=open("rules2.csv")
treeDict=MyDict()
for i in ff.readlines()[1:]:
    spl=i.split(",")
    src_ip,dest_ip,dest_port,action=spl[0],spl[1],str(spl[2]),spl[3]
    if '\r\n' in action:
	action=action[:-2]
    if '\n' in action:
	action=action[:-1]
    if treeDict.has_key(dest_ip):
        if treeDict[dest_ip].has_key(dest_port):
            if treeDict[dest_ip][dest_port].has_key(src_ip):
                pass
            else:
                treeDict[dest_ip][dest_port][src_ip]=action
        else:
            if (src_ip=="*" or src_ip=="*.*.*.*" or src_ip=="any"):
		treeDict[dest_ip][dest_port]=action 
            else:
		treeDict[dest_ip][dest_port]={src_ip:action}
    else:
        treeDict[dest_ip]={dest_port:{src_ip:action}}
#print "Dest_ip"
#print treeDict.keys()
def printTree():
Пример #12
0
 def setCfg(self,section,key,value):
     if not self._options.has_key(section):
         self._options[section] = MyDict()
     self._options[section][key] = value
Пример #13
0
 def test_keyerror_failed(self):
     d = MyDict(**{'empty': 'empty'})
     with self.assertRaises(KeyError):
         value = d['empty']
Пример #14
0
 def test_attr(self):
     d = MyDict()
     d.key = 'value'
     self.assertTrue('key' in d)
     self.assertEqual(d['key'], 'value')
Пример #15
0
 def test_attr(self):
     d = MyDict()
     d.key = 'value'
     self.assertTrue('key' in d)
     self.assertEqual(d['key'], 'value')
Пример #16
0
class Tree:
    branches = MyDict()
    treeDict = MyDict()

    def __init__(self, root):
        self.root = root
        self.branches[self.root] = root.getTag() + "_" + str(
            root.num_children())
        self.treeDict[root.getTag()] = self.root
        #self.add_branches(root)
    def treeTraversal(self, traverse="search", printing=False):
        #count=0
        if traverse == "search":
            pass

    def buildTree(self):
        for v in Node.NodeIndex.values():
            self.addMyBranches(v)

    def printTree(self):
        for k in Node.NodeIndex.keys():
            self.printSubTree(k)

    def printSubTree(self, node="root"):
        if node in Node.NodeIndex.keys():
            if Node.NodeIndex[node].has_children():
                print "-----" * len(Node.NodeIndex[node].getTag().split(
                    "_")) + Node.NodeIndex[node].getTag().split("_")[-1]
                for i in Node.NodeIndex[node].get_child():
                    print "-----" * len(
                        i.getTag().split("_")) + i.getTag().split("_")[-1]

    def getRoot(self, tag=False):
        if tag:
            return self.root.getTag()
        else:
            return self.root

    #DO this
    def BuildTreeDict(self):
        for j in range(self.treeDict.getSize()):
            temp1 = self.treeDict.getKeyByIndex(j)
            ucount = len(temp1.split("_"))
            count = j
            for i in range(self.treeDict.getSize()):
                if temp1 == "".join(
                        self.treeDict.getKeyByIndex(i).split("_"))[:ucount]:
                    count += 1
                    self.treeDict.insert(self.treeDict.getKeyByIndex(i),
                                         self.treeDict.getValueByIndex(i),
                                         index=count)

    def add_branches(self, parent):
        def addit(parent):
            for i in parent.get_child():
                self.branches[i] = i.getTag() + "_" + str(i.num_children())

        if not isinstance(parent, Node):
            return
        if parent.has_children():
            addit(parent)
            for i in parent.get_child():
                if isinstance(i, Node):
                    if i.has_children():
                        addit(i)
                    else:
                        self.add_branches(i)
        else:
            self.branches[parent] = parent.getTag() + "_" + str(
                parent.num_children())

    def addMyBranches(self, parent):
        if not isinstance(parent, Node):
            return
        if parent.has_children():
            for i in parent.get_child():
                self.branches[i] = i.getTag() + "_" + str(i.num_children())
                self.treeDict[i.getTag()] = i
        else:
            self.branches[parent] = parent.getTag() + "_" + str(
                parent.num_children())
            self.treeDict[parent.getTag()] = parent
Пример #17
0
 def test_init(self):
     md = MyDict(a=1, b="bbb")
     self.assertEqual(md.a, 1)
     self.assertEqual(md.b, "bbb")
     self.assertTrue(isinstance(md, dict))
Пример #18
0
 def test_attr(self):
     d = MyDict()
     d.key = "value"
     self.assertTrue("key" in d)
     self.assertEqual(d["key"], "value")
Пример #19
0
 def test_error(self):
     md = MyDict()
     with self.assertRaises(AttributeError):  # 测试是否引发异常的断言语法
         v = md.empty
Пример #20
0
 def test_keyerror(self):
     d = MyDict()
     with self.assertRaises(KeyError):
         value = d['empty']
Пример #21
0
n2=Node("in",parent=n1)
n3=Node("out",parent=n1)
n4=Node("any",parent=n1)
n5=Node("tcp",parent=n2)
n6=Node("tcp",parent=n3)
n7=Node("tcp",parent=n4)
n8=Node("udp",parent=n2)
n9=Node("udp",parent=n3)
n10=Node("udp",parent=n4)
n11=Node("hello",parent=n10)
n12=Node("world",parent=n11)
tr=Tree(n1)
#tr.printSubTree(i)
tr.buildTree()
#tr.printTree()
#print tr.branches.values()
#print tr.branches.getValueByIndex(0)
tempDict=MyDict()
for k,v in tr.treeDict.iteritems():
    tempDict[k]=v
#print tempDict.keys()
for i in range(tempDict.getSize()):
    temp1=tempDict.getKeyByIndex(i)
    ucount=len(temp1.split("_"))-1
    if not ucount:
        print temp1+":"+str(ucount)
        continue
    temp2="_".join(temp1.split("_")[:-1])
    
    print temp1+":"+str(ucount)
    print temp2
Пример #22
0
 def test_attrerror(self):
     d = MyDict()
     with self.assertRaises(AttributeError):
         value = d.empty
Пример #23
0
'''
Created on 21-Jun-2016
@author: tcs
'''
#from collections import namedtuple
from MyDict import MyDict
ff = open("rules2.csv")
treeDict = MyDict()
for i in ff.readlines()[1:]:
    spl = i.split(",")
    src_ip, dest_ip, dest_port, action = spl[0], spl[1], str(spl[2]), spl[3]
    if '\r\n' in action:
        action = action[:-2]
    if '\n' in action:
        action = action[:-1]
    if treeDict.has_key(dest_ip):
        if treeDict[dest_ip].has_key(dest_port):
            if treeDict[dest_ip][dest_port].has_key(src_ip):
                pass
            else:
                treeDict[dest_ip][dest_port][src_ip] = action
        else:
            if (src_ip == "*" or src_ip == "*.*.*.*" or src_ip == "any"):
                treeDict[dest_ip][dest_port] = action
            else:
                treeDict[dest_ip][dest_port] = {src_ip: action}
    else:
        treeDict[dest_ip] = {dest_port: {src_ip: action}}


#print "Dest_ip"
Пример #24
0
 def test_init(self):
     d = MyDict(a=2, b="3")
     self.assertEqual(d.a, 2)
     self.assertEqual(d.b, '3')
Пример #25
0
class Tree:
    branches=MyDict()
    treeDict=MyDict()
    isBuild=False
    def __init__(self,root):
        self.root=root
        self.branches[self.root]=root.getTag()
        self.treeDict[root.getTag()]=self.root
        #self.add_branches(root)
    #Need To Do method
    def treeTraversal(self,traverse="search",printing=False):
        #count=0
        if traverse=="search":
            pass
    def buildTree(self):
        for v in Node.NodeIndex.values():
            self.addMyBranches(v)
        self.BuildTreeDict()
    def printTree(self,onlyvalues=False):
        if not self.isBuild:
            self.BuildTreeDict()
        if not onlyvalues:
            for i in self.treeDict.keys():
                print "   "*(len(i.split("_"))-1)+i
        else:
            for i in self.treeDict.keys():
                print "   "*(len(i.split("_"))-1)+i.split("_")[-1]
        
    def getRoot(self,tag=False):
        if tag:
            return self.root.getTag()
        else:
            return self.root
    def printOnlyChilds(self,subkey):
        if not self.isBuild:
            self.BuildTreeDict()
        index=self.treeDict.indexofkey(subkey)
        print subkey
        if not self.treeDict[subkey].has_children():
            return
        for j in range(index+1,self.treeDict.getSize()):
            if subkey=="_".join(self.treeDict.getKeyByIndex(j).split("_")[:-1]):
                print "    "+self.treeDict.getKeyByIndex(j)
    def printSubTree(self,subkey):
        if not self.isBuild:
            self.BuildTreeDict()
        index=self.treeDict.indexofkey(subkey)
        print subkey
        length=len(subkey.split("_"))
        for j in range(index+1,self.treeDict.getSize()):
            if self.treeDict.getKeyByIndex(j).startswith(subkey):
                print "   "*(len(self.treeDict.getKeyByIndex(j).split("_"))-length)+self.treeDict.getKeyByIndex(j)
    def BuildTreeDict(self):
        self.isBuild=True
        for i in range(self.treeDict.getSize()):
            temp1=self.treeDict.getKeyByIndex(i)
            indexcount=i+1
            for j in range(self.treeDict.getSize()):
                if j<=i:
                    continue
                if "_".join(self.treeDict.getKeyByIndex(j).split("_")[:-1])==temp1:
                    self.treeDict.insert(self.treeDict.getKeyByIndex(j), self.treeDict.getValueByIndex(j), indexcount)
                    indexcount+=1
    #Duplicate method and waste can delete
    def add_branches(self,parent):
        def addit(parent):
                for i in parent.get_child():
                    self.branches[i]=i.getTag()
        if not isinstance(parent, Node):
            return
        if parent.has_children():
            addit(parent)
            for i in parent.get_child():
                if isinstance(i, Node):
                    if i.has_children():
                        addit(i)
                    else:
                        self.add_branches(i)
        else:
            self.branches[parent]=parent.getTag()
    def addMyBranches(self,parent):
        if not isinstance(parent,Node):
            return
        if parent.has_children():
            for i in parent.get_child():
                    self.branches[i]=i.getTag()
                    self.treeDict[i.getTag()]=i
        else:
            self.branches[parent]=parent.getTag()
            self.treeDict[parent.getTag()]=parent
Пример #26
0
class BaseApplication(object):
    """
    Base Aplication, with configuration stuff, etc...
    Intended to be used with any type of GUI framework
    (Gtk, Qt, wxPython, Tk, CEGUI, etc...)
    """
    
    _options = MyDict() #: Defines app options
    _configFile = "config/config.xml" #: Defines the config file path
    _old_stdout = None
    _old_stderr = None
    _logdir = 'log'
    _log = None
    _logerr = None

    def __init__(self,args = None,redirect=True):
        """
        Init app
        @param args: App Args
        @param redirect: Redirects stdout/stderr to log file
        """
        if args!=None:
            self._parseArgs(args)
        if os.path.isfile(self._configFile):
            self._readConfig()
        self._setCmdConfig()
        self._logdir = self.getCfg('global','system.logdir')
        if self._logdir==None:
            self._logdir="log"
        if not os.path.exists(self._logdir):
            os.mkdir(self._logdir)
        if redirect:
            self._log = Mlog(sys.stdout,self._logdir + '/stdout.log','w')
            self._logerr = Mlog(sys.stderr,self._logdir + '/stderr.log','w')
            self._old_stdout = sys.stdout
            self._old_stderr = sys.stderr
            sys.stdout = self._log
            sys.stderr = self._logerr
        else:
            self._log = sys.stdout
            self._logerr = sys.stderr
        
        self._installGettext()
    
    def __del__(self):
        self._saveConfig()
        if self._old_stdout is not None:
            sys.stdout = self._old_stdout
            self._log.close()
        if self._old_stderr is not None:
            sys.stderr = self._old_stderr
            self._logerr.close()
    
    def _parseArgs(self,argv):
        n=len(argv)-1
        i = 1
        while i <= n:
            param=argv[i]
            if param.startswith("-"):
                if param=="-c" and i<n:
                    i+=1
                    self._configFile=argv[i]
                elif param=="-o" and i<n-1:
                    i+=1
                    if not self._options.has_key("cmd"):
                        self._options["cmd"] = MyDict()
                    self._options["cmd"][argv[i]]=argv[i+1]
                    i+=1
                else:
                    i = self._parseArgument(argv,i,n)
            else:
                i = self._parseArgument(argv,i,n)
            i = i+1

    def _parseArgument(self,argv,i,n):
        print "Ignoring Unknown Parameter %s" %(argv[i],)
        return i

    def _readConfig(self):
        """Load App configuration"""
        if self._configFile!=None:
            self._config = XMLParser()
            self._config.readfile(self._configFile)
            
            for section in self._config.xsd7config[0].xsection:
                for option in section.xoption:
                    if not self._options.has_key(section.pname):
                        self._options[section.pname] = MyDict()
                    self._options[section.pname][option.pname] = option.pvalue
        
        self._setConfigDefaults()
    
    def _setConfigDefaults(self):
        """ Set the default configuration values """
        if self.getCfg('global','app.gettext.locales') == None:
            self.setCfg('global','app.gettext.locales','data/system/locales')
        if self.getCfg('global','app.gettext.domain') == None:
            self.setCfg('global','app.gettext.domain',self._getGettextDomain())
        if self.getCfg('global','system.logdir') == None:
            self.setCfg('global','system.logdir','log')
    
    def _getGettextDomain(self):
        return "Undefined"

    def _setCmdConfig(self):
        """
        Command line passed args, are more prioritary
        """
        if self._options.has_key("cmd"):
            for opt in self._options["cmd"]:
                self._options["global"][opt] = self._options["cmd"][opt]

    def _saveConfig(self, cfg = None):
        """Save App configuration"""
        if cfg == None:
            cfg = self._configFile
            try:
                os.makedirs(os.path.dirname(self._configFile))
            except OSError:
                pass
        if cfg != None:
            out = file(cfg,'w')
            out.write("""<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE sd7config SYSTEM "http://7d7.almlys.org/spec/draft/sd7Config.dtd">
<sd7config>

""")
        for section in self._options:
            if section == "cmd":
                # Hide command line options
                continue
            out.write("\t<section name='%s'>\n" %(section,))
            for option in self._options[section]:
                if option.startswith("_"):
                    continue
                out.write("\t\t<option name='%s' value='%s' />\n" %(option,self._options[section][option]))
            out.write("\t</section>\n\n")
        out.write("</sd7config>")
        out.close()

    def setCfg(self,section,key,value):
        if not self._options.has_key(section):
            self._options[section] = MyDict()
        self._options[section][key] = value

    def getCfg(self,section,key):
        """ Gets a configuration value """
        if self._options.has_key(section) and self._options[section].has_key(key):
            return self._options[section][key]
        return None

    def _installGettext(self,lang=None):
        """Installs GetText"""
        import gettext
        if lang == None:
            gettext.install(self.getCfg("global","app.gettext.domain"),
                            self.getCfg("global","app.gettext.locales"),True)
        else:
            gettext.translation(self.getCfg("global","app.gettext.domain"),
                                self.getCfg("global","app.gettext.locales"),
                                (lang,)).install(True)

    def getLanguages(self):
        """ Returns all available languages """
        try:
            return self.__Languages
        except:
            import dircache
            self.__Languages={}
            # Dirty hardcoded ugly LangDict
            _ = lambda x : x
            LangDict={"en":_("English"),"es":_("Spanish"),"ca":_("Catalan")}
            for lan in dircache.listdir(self.getCfg("global","app.gettext.locales")):
                if lan in LangDict:
                    self.__Languages[lan]=LangDict[lan]
                else:
                    self.__Languages[lan]=lan
            return self.__Languages

    def setLanguage(self,lang):
        """ Sets the application language """
        #import locale
        #locale.setlocale(locale.LC_ALL, (lang,"utf-8"))
        self.__Language=lang
        self._installGettext(lang)

    def getLanguage(self):
        """ Returns current application language """
        try:
            return self.__Language
        except:
            import locale
            self.__Language=locale.getdefaultlocale()[0][:2]
            return self.__Language

    def getAppVersion(self):
        """ Returns thea application version """
        return "$Revision$"
Пример #27
0
    def test_init(self):

        d = MyDict(a=1, b='test')
        # self.assertEqual(d.a,1)
        # self.assertEqual(d.b,'test')
        self.assertTrue(isinstance(d, dict))
Пример #28
0
'''
Created on 21-Jun-2016
@author: tcs
'''
from collections import Counter
from MyDict import MyDic,MyDict
from netaddr import IPNetwork,IPAddress
ff=open("rules.csv")
treeDict=MyDict()
def convertIP(ipadd):
    if ("/" in ipadd) or ("*" not in ipadd):
        return ipadd
    if ipadd=="*":
        return "0.0.0.0/0"
    count=0
    temp=""
    for i in ipadd.split("."):
        if '*'==i:
            count+=1
            temp+="0."
        else:
            temp+=i+"."
    return temp[:-1]+"/"+str(32-count*8)
def checkMatch(ipadr,ipnet):
    if IPAddress(convertIP(ipadr)) in IPNetwork(convertIP(ipnet)):
        return True
    else:
        return False

def buildTree():
    for i in ff.readlines()[1:]:
Пример #29
0
class Node:
    NodeIndex = MyDict()

    def __init__(self, tag, value=None, parent=None, data=None, root=False):
        self.tag = tag
        self.value = value
        self.data = data
        self.parent = parent
        self.root = root
        self.child = []
        if self.parent is not None:
            parent.add_child(self)
        self.NodeIndex[tag] = self

    def add_child(self, children, *args):
        self.child.append(children)
        if len(args) > 0:
            for i in args:
                self.child.append(i)

    def num_children(self):
        return len(self.child)

    def get_child(self):
        return self.child

    def has_children(self):
        return True if len(self.child) != 0 else False

    def remove_child(self, children):
        if children in self.child:
            self.child.remove(children)

    def move_child(self, children, index):
        if children in self.child:
            self.child.remove(children)
            self.child.insert(index, children)

    def set_parent(self, parentnode):
        self.parent = parentnode

    def get_parent(self):
        return self.parent

    def is_leaf(self):
        if len(self.child) == 0:
            return True
        else:
            return False

    def is_root(self):
        if self.parent == None:
            return True
        else:
            return False

    def getData(self):
        return self.data

    def getTag(self):
        return self.tag

    def getValue(self):
        return self.value

    def getAll(self):
        return self.tag, self.value, self.parent, self.child, self.data
Пример #30
0
def main():
    f = pandas.read_csv("rules.csv", header=0)
    global root
    global root_in
    global root_out
    global root_any
    global tree
    global levels
    levels = 1
    root_any = copy.deepcopy(f)
    root_any.drop('inout', axis=1, inplace=True)
    root_in = f.groupby('inout').get_group('in')
    root_out = f.groupby('inout').get_group('out')
    levels += 1

    def createNew(df, dfname, grp):
        global levels
        levels += 1
        for i in df.groupby(grp).groups.keys():
            if i == "any":
                continue
            globals().update({dfname + "_" + i: df.groupby(grp).get_group(i)})
        temp = copy.deepcopy(df)
        temp.drop(grp, axis=1, inplace=True)
        globals().update({dfname + "_any": copy.deepcopy(temp)})

    createNew(root_in, "root_in", "protocol")
    createNew(root_out, "root_out", "protocol")
    createNew(root_any, "root_any", "protocol")
    for k in globals().keys():
        if k.startswith('root_in_') or k.startswith(
                'root_out_') or k.startswith('root_any_'):
            createNew(globals()[k], k, 'dstip')
    for k in globals().keys():
        if k.startswith('root_') and len(k.split("_")) == 4:
            createNew(globals()[k], str(k), 'srcport')
    for k in globals().keys():
        if k.startswith('root_'):
            globals()[k] = globals()[k].values
    root = Node("root", root=True)
    for k in globals().keys():
        try:
            if k.startswith('root_'):
                globals().update({
                    "$".join(k.split("_")):
                    Node(k.split("_")[-1], value=globals()[k])
                })
        except KeyError:
            print "error occured for ", k
    tempdict = MyDict()
    tempdict = globals()
    templist = ['root']
    count = 2
    while (True):
        if count == levels:
            break
        for k in tempdict.keys():
            if k.startswith('root$') and len(k.split("$")) == count:
                templist.append(k)
            else:
                continue
        count += 1
    for k in templist[1:]:
        try:
            globals()[k].set_parent(globals()["$".join(k.split("$")[:-1])])
        except KeyError:
            print "error occured for ", k
    tree = Tree(root)
    tree.buildTree()
    tree.printTree()
Пример #31
0
def main():
	f=pandas.read_csv("rules.csv",header=0)
	global root
	global root_in
	global root_out
	global root_any
	global tree
	global levels
	levels=1
	root_any=copy.deepcopy(f)
	root_any.drop('inout',axis=1,inplace=True)
	root_in=f.groupby('inout').get_group('in')
	root_out=f.groupby('inout').get_group('out')
	levels+=1
	def createNew(df,dfname,grp):
		global levels
		levels+=1
		for i in df.groupby(grp).groups.keys():
			if i=="any":
				continue
			globals().update({dfname+"_"+i:df.groupby(grp).get_group(i)})
		temp=copy.deepcopy(df)
		temp.drop(grp,axis=1,inplace=True)
		globals().update({dfname+"_any":copy.deepcopy(temp)})
	createNew(root_in,"root_in","protocol")
	createNew(root_out,"root_out","protocol")
	createNew(root_any,"root_any","protocol")
	for k in globals().keys():
		if k.startswith('root_in_') or k.startswith('root_out_') or k.startswith('root_any_'):
			createNew(globals()[k],k,'dstip')
	for k in globals().keys():
		if k.startswith('root_') and len(k.split("_"))==4:
			createNew(globals()[k],str(k),'srcport')
	for k in globals().keys():
		if k.startswith('root_'):
			globals()[k]=globals()[k].values
	root=Node("root",root=True)
	for k in globals().keys():
		try:
			if k.startswith('root_'):
				globals().update({"$".join(k.split("_")):Node(k.split("_")[-1],value=globals()[k])})
		except KeyError:
			print "error occured for ",k
	tempdict=MyDict()
	tempdict=globals()
	templist=['root']
	count=2
	while(True):
		if count==levels:
			break
		for k in tempdict.keys():
			if k.startswith('root$') and len(k.split("$"))==count:
				templist.append(k)
			else:
				continue
		count+=1					
	for k in templist[1:]:
		try:
			globals()[k].set_parent(globals()["$".join(k.split("$")[:-1])])
		except KeyError:
			print "error occured for ",k
	tree=Tree(root)
	tree.buildTree()
	tree.printTree()