Package spade :: Package xmppd :: Package modules :: Module config
[hide private]
[frames] | no frames]

Source Code for Module spade.xmppd.modules.config

  1  # Distributed under the terms of GPL version 2 or any later 
  2  # Copyright (C) Alexey Nezhdanov 2004 
  3  # Configuration reader for xmppd.py 
  4   
  5  # $Id: config.py,v 1.3 2004/10/03 17:47:50 snakeru Exp $ 
  6   
  7  from xmpp import * 
  8  #import ConfigParser 
  9   
 10  #cfgfile='xmppd.cfg' 
 11   
 12  from string import * 
 13  from xml.sax import ContentHandler 
 14  from xml.sax import parseString 
 15  from xml.sax import make_parser 
 16  from xml.sax.handler import * 
 17  import os 
 18  import copy 
 19   
 20  servernames = [] 
 21  administrators = {} 
 22  certificatefile = '' 
 23  spoolpath = '' 
 24  sslkeyfile = '' 
 25  #mucjid = '' 
 26  #mucname = '' 
 27  plugins = {} 
 28  components = {}  # Core agents like AMS, DF, ... 
 29   
30 -class xmppdXML:
31 '''XML streams parser for xmppd'''
32 - def __init__(self):
33 self.ch = xmppdXMLHandler()
34
35 - def parseString(self, xmlstream, tag_attr, chars):
36 self.ch.tag_attr = tag_attr 37 parseString(xmlstream, self.ch) 38 return self.ch.tag_name, self.ch.message
39
40 -class xmppdXMLHandler(ContentHandler):
41 - def __init__(self):
42 self.chars = "" 43 self.message = "" 44 self.section = "" 45 self.current_tag = "" 46 self.current_server = "" 47 self.current_admins = []
48
49 - def startElement(self, name, attrs):
50 global certificatefile 51 global spoolpath 52 global administrators 53 global plugins 54 global components 55 self.chars = "" 56 self.tag_name = name 57 if self.section == "components": 58 try: 59 d = dict() 60 for k, v in attrs.items(): 61 d[str(k)] = str(v) # De-unicodize 62 components[name.lower()] = d 63 except: 64 pass 65 elif self.section == "plugins": # Server plugins 66 try: 67 d = dict() 68 for k, v in attrs.items(): 69 d[str(k)] = str(v) # De-unicodize 70 plugins[name] = d 71 except: 72 pass 73 elif name == "plugins": 74 self.section = "plugins" 75 elif name == "components": 76 self.section = "components" 77 elif name == "server": 78 self.section = "server" 79 #print "Current Tag: " + name 80 elif name == "servernames": 81 self.section = "servernames" 82 #print "Current Tag: " + name 83 elif name == "name": 84 self.current_tag = "name" 85 #print "Current Tag: " + name 86 elif name == "certificate": 87 self.section = "certificate" 88 try: 89 certificatefile = attrs['file'] 90 except: 91 certificatefile = '' 92 #print "Current Tag: " + name 93 elif name == "administrators": 94 self.section = "administrators" 95 #print "Current Tag: " + name 96 try: 97 self.current_server = attrs['server'] 98 except: 99 self.current_server = '' 100 elif name == "admin": 101 self.current_tag = "admin" 102 try: 103 self.current_admins.append(attrs['name']) 104 except: 105 pass 106 else: 107 self.chars = "" 108 self.tag_name = name
109
110 - def characters(self, ch):
111 self.chars = str(self.chars + ch)
112
113 - def endElement(self, name):
114 global mucjid 115 global administrators 116 #print 'Final de: ' + name + ' con current_tag: ' + self.current_tag 117 #print 'Caracteres : ' + self.chars 118 if name == "components": 119 self.section = "" 120 if name == "plugins": 121 self.section = "" 122 elif name == "name": 123 servernames.append(self.chars) 124 #elif name == "server": 125 # Try to guess muc jid 126 #try: 127 # mucjid = "muc." + servernames[0] 128 #except: 129 # print "ERROR: Could not find suitable JID for MUC component." 130 elif name == "administrators": 131 try: 132 administrators[self.current_server] = self.current_admins 133 except: 134 pass 135 self.current_admins = [] 136 self.current_server = "" 137 self.section = "" 138 self.message = self.chars
139 140
141 -class Config(PlugIn):
142 NS=''
143 - def __init__(self):
144 PlugIn.__init__(self) 145 self.DBG_LINE='config'
146
147 - def plugin(self,server):
148 global plugins 149 global components 150 #configfile = ConfigParser.ConfigParser() 151 #configfile.add_section('server') 152 #configfile.readfp(open('xmppd.cfg','r')) 153 154 #server names 155 server.servernames=[] 156 #server admins 157 server.administrators={} 158 try: server.sqlite_db = configfile.get('server','sqlite_file') 159 except: server.sqlite_db = None 160 161 parser = make_parser() 162 parser.setFeature(feature_namespaces, 0) 163 dh = xmppdXMLHandler() 164 parser.setContentHandler(dh) 165 parser.parse(server.cfgfile) 166 #parser.parse('../etc/xmppd.xml') 167 168 for name in servernames: 169 server.DEBUG('server','Added new server (%s) from config!'%name.split(),'info') 170 server.servernames.append(name.strip()) 171 server.administrators.update({name:[]}) 172 #for admin in configfile.get(name,'admins').split(','): 173 174 for name,v in administrators.items(): 175 for admin in v: 176 server.administrators[name].append(admin.strip()) 177 server.DEBUG('server','Added new admin (%s) for server (%s) from config!'%(admin.strip(),name),'info') 178 179 server.plugins = copy.copy(plugins) 180 server.DEBUG('server','Added plugins list: %s'%(str(server.plugins)),'ok') 181 server.components = components 182 server.DEBUG('server','Added components list: '+str(server.components),'ok') 183 184 if certificatefile == '': server.sslcertfile = None 185 else: server.sslcertfile = certificatefile 186 if sslkeyfile == '': server.sslkeyfile = server.sslcertfile 187 else: server.sslkeyfile = sslkeyfile 188 189 server.spoolpath = os.environ['HOME'] + os.sep + '.xmppd'
190