Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorYann Leboulanger <asterix@lagaule.org>2004-01-24 23:32:51 +0300
committerYann Leboulanger <asterix@lagaule.org>2004-01-24 23:32:51 +0300
commitf913e4cd0e65a7dc916bf2294d6dd148bd60530e (patch)
tree33ed0a44b914e0f4997fb73a32ef311ad5f327b8 /core
parentb2ec388e4bf936ad6e35ab4f9457d71d7ae6c498 (diff)
- new configuration File management
- bugfix : message from unknown personne
Diffstat (limited to 'core')
-rw-r--r--core/core.py122
1 files changed, 85 insertions, 37 deletions
diff --git a/core/core.py b/core/core.py
index 2d21b4c45..dcb4afd20 100644
--- a/core/core.py
+++ b/core/core.py
@@ -4,7 +4,6 @@
## Gajim Team:
## - Yann Le Boulanger <asterix@crans.org>
## - Vincent Hanquez <tab@tuxfamily.org>
-## - David Ferlier <david@yazzy.org>
##
## Copyright (C) 2003 Gajim Team
##
@@ -40,9 +39,16 @@ class GajimCore:
self.connected = 0
self.cfgParser = common.optparser.OptionsParser(CONFPATH)
self.hub = common.hub.GajimHub()
- self.cfgParser.parseCfgFile()
+ self.parse()
# END __init__
+ def parse(self):
+ self.cfgParser.parseCfgFile()
+ self.accounts = {}
+ accts = self.cfgParser.tab['Profile']['accounts']
+ for a in string.split(accts, ' '):
+ self.accounts[a] = self.cfgParser.tab[a]
+
def messageCB(self, con, msg):
"""Called when we recieve a message"""
self.hub.sendPlugin('MSG', (msg.getFrom().getBasic(), \
@@ -60,17 +66,20 @@ class GajimCore:
show = prs.getShow()
else:
show = 'online'
- self.hub.sendPlugin('NOTIFY', \
- (prs.getFrom().getBasic(), show, prs.getStatus(), prs.getFrom().getResource()))
+ self.hub.sendPlugin('NOTIFY', (prs.getFrom().getBasic(), \
+ show, prs.getStatus(), prs.getFrom().getResource()))
elif type == 'unavailable':
self.hub.sendPlugin('NOTIFY', \
- (prs.getFrom().getBasic(), 'offline', prs.getStatus(), prs.getFrom().getResource()))
+ (prs.getFrom().getBasic(), 'offline', prs.getStatus(), \
+ prs.getFrom().getResource()))
elif type == 'subscribe':
log.debug("subscribe request from %s" % who)
- if self.cfgParser.Core_alwaysauth == 1 or string.find(who, "@") <= 0:
+ if self.cfgParser.Core['alwaysauth'] == 1 or \
+ string.find(who, "@") <= 0:
self.con.send(common.jabber.Presence(who, 'subscribed'))
if string.find(who, "@") <= 0:
- self.hub.sendPlugin('NOTIFY', (who, 'offline', 'offline', prs.getFrom().getResource()))
+ self.hub.sendPlugin('NOTIFY', (who, 'offline', 'offline', \
+ prs.getFrom().getResource()))
else:
self.hub.sendPlugin('SUBSCRIBE', who)
elif type == 'subscribed':
@@ -79,7 +88,7 @@ class GajimCore:
'nom':jid.getNode(), 'ressource':jid.getResource()})
self.hub.queueIn.put(('UPDUSER', (jid.getBasic(), \
jid.getNode(), ['general'])))
-# self.con.updateRosterItem(jid=jid.getBasic(), name=jid.getNode(), groups=['general'])
+ #BE CAREFUL : no self.con.updateRosterItem() in a callback
log.debug("we are now subscribed to %s" % who)
elif type == 'unsubscribe':
log.debug("unsubscribe request from %s" % who)
@@ -87,17 +96,17 @@ class GajimCore:
log.debug("we are now unsubscribed to %s" % who)
self.hub.sendPlugin('UNSUBSCRIBED', prs.getFrom().getBasic())
elif type == 'error':
-# print "\n\n******** ERROR *******"
-# print "From : %s" % prs.getFrom()
-# print "To : %s" % prs.getTo()
-# print "Status : %s" % prs.getStatus()
-# print "Show : %s" % prs.getShow()
-# print "X : %s" % prs.getX()
-# print "XNode : %s" % prs.getXNode()
-# print "XPayload : %s" % prs.getXPayload()
-# print "_node : %s" % prs._node.getData()
-# print "kids : %s" % prs._node.kids[0].getData()
-# print "\n\n"
+ print "\n\n******** ERROR *******"
+ #print "From : %s" % prs.getFrom()
+ #print "To : %s" % prs.getTo()
+ #print "Status : %s" % prs.getStatus()
+ #print "Show : %s" % prs.getShow()
+ #print "X : %s" % prs.getX()
+ #print "XNode : %s" % prs.getXNode()
+ #print "XPayload : %s" % prs.getXPayload()
+ #print "_node : %s" % prs._node.getData()
+ #print "kids : %s" % prs._node.kids[0].getData()
+ #print "\n\n"
errmsg = prs._node.kids[0].getData()
# END presenceCB
@@ -112,14 +121,15 @@ class GajimCore:
def connect(self, account):
"""Connect and authentificate to the Jabber server"""
- self.cfgParser.parseCfgFile()
- hostname = self.cfgParser.__getattr__("%s" % account+"_hostname")
- name = self.cfgParser.__getattr__("%s" % account+"_name")
- password = self.cfgParser.__getattr__("%s" % account+"_password")
- ressource = self.cfgParser.__getattr__("%s" % account+"_ressource")
- self.con = common.jabber.Client(host = \
- hostname, debug = [common.jabber.DBG_ALWAYS], log = sys.stderr, connection=common.xmlstream.TCP, port=5222)
-# hostname, debug = [common.jabber.DBG_ALWAYS], log = sys.stderr, connection=common.xmlstream.TCP_SSL, port=5223)
+ hostname = self.cfgParser.tab[account]["hostname"]
+ name = self.cfgParser.tab[account]["name"]
+ password = self.cfgParser.tab[account]["password"]
+ ressource = self.cfgParser.tab[account]["ressource"]
+ self.con = common.jabber.Client(host = hostname, \
+ debug = [common.jabber.DBG_ALWAYS], log = sys.stderr, \
+ connection=common.xmlstream.TCP, port=5222)
+ #debug = [common.jabber.DBG_ALWAYS], log = sys.stderr, \
+ #connection=common.xmlstream.TCP_SSL, port=5223)
try:
self.con.connect()
except IOError, e:
@@ -151,12 +161,14 @@ class GajimCore:
else:
log.debug("Couldn't authentificate to %s" % hostname)
self.hub.sendPlugin('STATUS', 'offline')
- self.hub.sendPlugin('WARNING', 'Authentification failed, check your login and password')
+ self.hub.sendPlugin('WARNING', \
+ 'Authentification failed, check your login and password')
return 0
# END connect
def mainLoop(self):
- """Main Loop : Read the incomming queue to execute commands comming from plugins and process Jabber"""
+ """Main Loop : Read the incomming queue to execute commands comming from
+ plugins and process Jabber"""
while 1:
if not self.hub.queueIn.empty():
ev = self.hub.queueIn.get()
@@ -166,6 +178,31 @@ class GajimCore:
self.con.disconnect()
self.hub.sendPlugin('QUIT', ())
return
+ #('ASK_CONFIG', section)
+ elif ev[0] == 'ASK_CONFIG':
+ if ev[1] == 'accounts':
+ self.hub.sendPlugin('CONFIG', self.accounts)
+ else:
+ self.hub.sendPlugin('CONFIG', \
+ self.cfgParser.__getattr__(ev[1]))
+ #('CONFIG', (section, config))
+ elif ev[0] == 'CONFIG':
+ if ev[1][0] == 'accounts':
+ #Remove all old accounts
+ accts = string.split(self.cfgParser.tab\
+ ['Profile']['accounts'], ' ')
+ for a in accts:
+ del self.cfgParser.tab[a]
+ #Write all new accounts
+ accts = ev[1][1].keys()
+ self.cfgParser.tab['Profile']['accounts'] = \
+ string.join(accts)
+ for a in accts:
+ self.cfgParser.tab[a] = ev[1][1][a]
+ else:
+ self.cfgParser.tab[ev[1][0]] = ev[1][1]
+ self.cfgParser.writeCfgFile()
+ #TODO: tell the changes to other plugins
#('STATUS', (status, msg, account))
elif ev[0] == 'STATUS':
if (ev[1][0] != 'offline') and (self.connected == 0):
@@ -198,17 +235,22 @@ class GajimCore:
self.con.send(common.jabber.Presence(ev[1], 'unsubscribed'))
#('UNSUB', jid)
elif ev[0] == 'UNSUB':
- delauth = self.cfgParser.Core_delauth
- if not delauth: delauth = 1
- delroster = self.cfgParser.Core_delroster
- if not delroster: delroster = 1
+ if self.cfgParser.Core.has_key('delauth'):
+ delauth = self.cfgParser.Core['delauth']
+ else:
+ delauth = 1
+ if self.cfgParser.Core.has_key('delroster'):
+ delroster = self.cfgParser.Core['delroster']
+ else:
+ delroster = 1
if delauth:
self.con.send(common.jabber.Presence(ev[1], 'unsubscribe'))
if delroster:
self.con.removeRosterItem(ev[1])
#('UPDUSER', (jid, name, groups))
elif ev[0] == 'UPDUSER':
- self.con.updateRosterItem(jid=ev[1][0], name=ev[1][1], groups=ev[1][2])
+ self.con.updateRosterItem(jid=ev[1][0], name=ev[1][1], \
+ groups=ev[1][2])
elif ev[0] == 'REQ_AGENTS':
agents = self.con.requestAgents()
self.hub.sendPlugin('AGENTS', agents)
@@ -239,7 +281,7 @@ class GajimCore:
else:
self.hub.sendPlugin('ACC_OK', ev[1])
else:
- log.debug("Unknown Command")
+ log.debug("Unknown Command %s" % ev[0])
elif self.connected == 1:
self.con.process(1)
time.sleep(0.1)
@@ -247,8 +289,9 @@ class GajimCore:
# END GajimCore
def loadPlugins(gc):
- """Load defaults plugins : 'modules' option in section Core in ConfFile and register then to the hub"""
- modStr = gc.cfgParser.Core_modules
+ """Load defaults plugins : plugins in 'modules' option of Core section
+ in ConfFile and register them to the hub"""
+ modStr = gc.cfgParser.Core['modules']
if modStr:
mods = string.split (modStr, ' ')
@@ -266,6 +309,7 @@ def loadPlugins(gc):
gc.hub.register(mod, 'AGENT_INFO')
gc.hub.register(mod, 'QUIT')
gc.hub.register(mod, 'ACC_OK')
+ gc.hub.register(mod, 'CONFIG')
modObj.load()
# END loadPLugins
@@ -273,6 +317,10 @@ def start():
"""Start the Core"""
gc = GajimCore()
loadPlugins(gc)
+################ pr des tests ###########
+ gc.hub.sendPlugin('NOTIFY', ('aste@lagaule.org', 'online', 'online', 'oleron'))
+# gc.hub.sendPlugin('MSG', ('ate@lagaule.org', 'msg'))
+#########################################
try:
gc.mainLoop()
except KeyboardInterrupt: