source: n4d/trunk/fuentes/install-files/usr/share/n4d/xmlrpc-server/ConfigurationManager.py @ 105

Last change on this file since 105 was 103, checked in by hectorgh, 5 years ago

adding files

File size: 4.5 KB
Line 
1# -*- coding: utf-8 -*-
2import ConfigParser
3import os
4
5
6class PluginInfo:
7       
8        def __init__(self):
9               
10                self.path=None
11                self.type=None
12                #PYTHON TYPE
13                self.class_name=None
14                self.function={}
15                #BASH TYPE
16                self.bin_name=None
17                self.args=None
18                #REMOTE TYPE
19                self.remoteip=None
20                self.order=None
21                self.functionremote=[]
22                self.standalone=True
23                self.user_secured_functions=[]
24                self.ip_secured_functions=[]
25                self.secure_order=[(self.user_secured_functions,"user"),(self.ip_secured_functions,"client_address")]
26               
27        #def init
28       
29#class PluginInfo
30
31class ConfigurationManager:
32       
33        def __init__(self,base_dir):
34               
35                base_dir+="/"
36                self.plugins = []
37                file_list=os.listdir(base_dir)
38                file_list.sort()
39               
40                self.python_path="/usr/share/n4d/python-plugins/"
41                self.bash_path="/usr/share/n4d/binary-plugins/"
42                self.perl_path="/usr/share/n4d/perl-plugins/"           
43               
44                for file in file_list:
45                        #print file
46                        plugin=self.load_plugin(base_dir+file)
47                        if plugin!=None:
48                                self.plugins.append(plugin)
49               
50                #self.print_plugins()
51                #print ""
52               
53               
54        #def init
55       
56        def load_plugin(self,file):
57
58                plugin=PluginInfo()
59                config = ConfigParser.ConfigParser()
60                config.optionxform=str
61                config.read(file)
62                       
63               
64                if config.has_section("SETUP") and config.has_option("SETUP","type"):
65               
66                        ok=True
67                       
68                               
69                        try:
70                       
71                                if config.get("SETUP","type")=="python":
72                                        plugin.type="python"
73                                        if config.has_option("SETUP","path") and config.has_option("SETUP","class"):
74                                                plugin.path=self.python_path + config.get("SETUP","path")
75                                                plugin.class_name=config.get("SETUP","class")
76                                                if config.has_section("METHODS"):
77                                                        options=config.options("METHODS")
78                                                        for option in options:
79                                                                tmp=config.get("METHODS",option)
80                                                                tmp=tmp.replace(' ','')
81                                                                perm_list=tmp.split(",")
82                                                               
83                                                                if option.find("(")==0:
84                                                                        first=option.find("(")+1
85                                                                        last=option.find(")")
86                                                                        secure_options=option[first:last].split(",")
87                                                                        option=option[last+1:]
88                                                                               
89                                                                        if "us" in secure_options:
90                                                                                plugin.user_secured_functions.append(option)
91                                                                        if "ip" in secure_options:
92                                                                                plugin.ip_secured_functions.append(option)
93                                                                                       
94                                                                       
95                                                                               
96                                                                plugin.function[option]=perm_list
97                                                else:
98                                                        ok=False
99                                        else:
100                                                ok=False
101                                               
102                                if config.get("SETUP","type")=="binary":
103                                        plugin.type="binary"
104                                        if config.has_option("SETUP","path") and config.has_option("SETUP","class"):
105                                                plugin.path=self.bash_path + config.get("SETUP","path")
106                                                plugin.bin_name=config.get("SETUP","path")
107                                                plugin.class_name=config.get("SETUP","class")
108                                                       
109                                                                                                               
110                                                if config.has_section("METHODS"):
111                                                        plugin.standalone=False
112                                                        options=config.options("METHODS")
113                                                        for option in options:
114                                                                tmp=config.get("METHODS",option)
115                                                                tmp=tmp.replace(' ','')
116                                                                perm_list=tmp.split(",")
117                                                                plugin.function[option]=perm_list
118                                                else:
119                                                        if config.has_option("SETUP","perms"):
120                                                                tmp=config.get("SETUP","perms")
121                                                                tmp=tmp.replace(' ','')
122                                                                perm_list=tmp.split(",")
123                                                                plugin.standalone=True
124                                                                plugin.function[config.get("SETUP","path")]=perm_list
125                                                        else:
126                                                                ok=False
127                                                       
128                                        else:
129                                               
130                                                ok=False
131                                       
132                                if config.get("SETUP","type")=="remote":
133                                        plugin.type="remote"
134                                        if config.has_option("SETUP","remoteip") and config.has_option("SETUP","order"):
135                                                plugin.remoteip=config.get("SETUP","remoteip")
136                                                plugin.order=config.get("SETUP","order")
137                                                plugin.functionremote=config.options("METHODS")
138                                        else:
139                                                ok=False
140                                       
141                                if config.get("SETUP","type")=="perl":
142                                        plugin.type="perl"
143                                        if config.has_option("SETUP","path") and config.has_option("SETUP","class"):
144                                                plugin.path=self.perl_path + config.get("SETUP","path")
145                                                plugin.class_name=config.get("SETUP","class")
146                                                if config.has_section("METHODS"):
147                                                        options=config.options("METHODS")
148                                                        for option in options:
149                                                                tmp=config.get("METHODS",option)
150                                                                tmp=tmp.replace(' ','')
151                                                                perm_list=tmp.split(",")
152                                                                plugin.function[option]=perm_list
153                                                else:
154                                                        ok=False
155                                        else:
156                                                ok=False
157
158                                if ok:
159                                        return plugin
160                                else:
161                                        return None
162
163                                               
164                        except Exception as e:
165                                print e
166                                return None
167               
168        #def load_plugin
169
170        def print_plugins(self):
171                 
172                print "[==========]"
173               
174                for plugin in self.plugins:
175                        print "["+plugin.class_name + "]"
176                        print plugin.path
177                        print plugin.function
178                       
179                print "[==========]"
180               
181        #def print plugins
182
183       
184#
185
186if __name__=="__main__":
187       
188        cm=ConfigurationManager("/etc/lliurex-navel")
189
190
Note: See TracBrowser for help on using the repository browser.