1
2
3
4 from string import *
5
6 from xml.sax import ContentHandler
7 from xml.sax import parseString
8 from xml.sax import make_parser
9 from xml.sax.handler import *
10
11 """
12 spade = dict()
13 domain = dict()
14 acc = dict()
15 acc["mtp"] = dict()
16 ams = dict()
17 df = dict()
18 jabber = dict()
19 simba = dict()
20 """
21
24
26 '''SPADE XML analyzer'''
29
31 self.ch.tag_attr = tag_attr
32 parseString(xmlstream, self.ch)
33 return self.ch.tag_name, self.ch.message
34
35
38 self.chars = ""
39 self.message = ""
40 self.current_tag = ""
41 self.current_mtp = ""
42
46
76
78 '''Characters included in a node'''
79 self.chars = str(self.chars + ch)
80
82 '''Called when a node ends'''
83 if name == "hostname":
84 if self.current_tag == "platform":
85 self.content.platform['hostname'] = self.chars
86 elif self.current_tag == "ams":
87 self.content.ams['hostname'] = self.chars
88 elif self.current_tag == "df":
89 self.content.df['hostname'] = self.chars
90 elif self.current_tag == "acc":
91 self.content.acc['hostname'] = self.chars
92
93 elif name == "password":
94 if self.current_tag == "ams":
95 self.content.ams['password'] = self.chars
96 elif self.current_tag == "df":
97 self.content.df['password'] = self.chars
98 elif self.current_tag == "acc":
99 self.content.acc['password'] = self.chars
100
101 elif name == "port":
102 if self.current_tag == "platform":
103 self.content.platform['port'] = self.chars
104 elif self.current_tag == "ams":
105 self.content.ams['port'] = self.chars
106 elif self.current_tag == "df":
107 self.content.df['port'] = self.chars
108 elif self.current_tag == "acc":
109 self.content.acc['port'] = self.chars
110 else:
111 self.content.acc[self.current_tag]['port'] = self.chars
112
113 elif name == "mtp":
114 self.current_mtp = ""
115
116 elif name == "protocol":
117 self.content.acc["mtp"][self.current_mtp]['protocol'] = self.chars
118
119
120
121
122 elif name == "instance":
123 self.content.acc["mtp"][self.current_mtp]['instance'] = self.chars
124
125 elif name == "path":
126 self.content.platform["path"] = self.chars
127
128 elif name == "adminpasswd":
129 self.content["adminpasswd"] = self.chars
130
132
133 """def get(self, section, keyword):
134 answer = ""
135 try:
136 d = spade[section]
137 answer = d[keyword]
138 except:
139 print "Section %s does not have keyword %s" % (str(section), keyword)
140 return answer"""
141
143
144 self.parser = make_parser()
145
146
147 self.parser.setFeature(feature_namespaces, 0)
148
149
150 self.dh = spadeXMLHandler()
151
152
153 self.parser.setContentHandler(self.dh)
154
156
157
158 self.parser.parse(fn)
159
160 return self.dh.content
161
162 """
163 # Manage the results
164 spade['domain'] = domain
165 spade['acc'] = acc
166 spade['ams'] = ams
167 spade['df'] = df
168 spade['jabber'] = jabber
169 spade['simba'] = simba
170 #print spade
171 """
172