This commit is contained in:
glenux 2006-02-13 22:07:08 +00:00
parent a44d1e61b7
commit a8f1be436e
2 changed files with 126 additions and 110 deletions

View file

@ -18,6 +18,9 @@ class Account:
self._transport2proto={} self._transport2proto={}
self._cnx=None self._cnx=None
def getDesc(self):
return (self._hlogin + "@" + self._host)
def setHost(self,hostName): def setHost(self,hostName):
self._host=hostName self._host=hostName

View file

@ -1,4 +1,5 @@
#!/usr/bin/env python #!/usr/bin/env python
# vim: set sw=4 ts=4 si et:
import sys import sys
import os import os
@ -20,12 +21,13 @@ from xml.dom.ext import *
from xml.dom.ext.reader.Sax import * from xml.dom.ext.reader.Sax import *
class Answer: class Answer:
def __init__(self,question,answerlist): def __init__(self, question, answerlist):
self._answer=None self._answer = None
while not self._answer: while not self._answer:
sys.stderr.write(question) sys.stderr.write(question)
tmp_ans=raw_input() tmp_ans = raw_input()
if tmp_ans in (answerlist): self._answer=tmp_ans if tmp_ans in (answerlist):
self._answer = tmp_ans
def get(self): def get(self):
return self._answer; return self._answer;
@ -34,52 +36,57 @@ class Answer:
class JabSync: class JabSync:
def __init__(self): def __init__(self):
# init des var # init des var
self._commonJIDs={} self._commonJIDs = {}
self._commonTransports={} self._commonTransports = {}
self._configFile=None self._configFile = None
self._config=None self._config = None
self._accountList=None self._accountList = None
self._jabservers={} self._jabservers = {}
def parseCmdLine(self): def parseCmdLine(self):
parser=OptionParser() parser = OptionParser()
parser.add_option("-c","--config",\ parser.add_option(\
action="store", type="string", dest="filename",\ "-c","--config",\
help="Use file a configuration file",metavar="config") action="store", \
type="string", \
dest="filename",\
help="Use file a configuration file",\
metavar="config")
(options,args)=parser.parse_args() (options,args)=parser.parse_args()
if options.filename: if options.filename:
self._configFile=options.filename self._configFile=options.filename
else: else:
self._configFile=os.path.join(os.path.expanduser("~"),".jabsync") self._configFile=os.path.join(os.path.expanduser("~"),".jabsync")
print "Configuration file: " + self._configFile print "Configuration file: " + self._configFile
def init(self): def init(self):
self._config=Config() self._config = Config()
self._config.loadFromFile(self._configFile) self._config.loadFromFile(self._configFile)
self._accountList=self._config.getAccounts() self._accountList = self._config.getAccounts()
for account in self._accountList: for account in self._accountList:
account.connect() account.connect()
agents=account.getAgents() agents = account.getAgents()
self._commonTransports.update(agents) self._commonTransports.update(agents)
for transport in self._commonTransports.keys(): for transport in self._commonTransports.keys():
print "Transport: "+transport print "Transport: "+transport
def giveTransport(self,hostName): def giveTransport(self, hostName):
if self._jabservers.has_key(hostName): if self._jabservers.has_key(hostName):
trans_proto=hostName trans_proto = hostName
return trans_proto return trans_proto
else: else:
if self._commonTransports.has_key(hostName): if self._commonTransports.has_key(hostName):
trans_proto=self._commonTransports[hostName] trans_proto = self._commonTransports[hostName]
return trans_proto return trans_proto
else: else:
# TODO: ask user input # TODO: ask user input
is_jabber=Answer(\ is_jabber = Answer(\
"# ERR : is "+hostName+" a jabber server ? [y/n]\n",\ "# ERR : is "+hostName+" a jabber server ? [y/n]\n",\
["y","n"]).get() ["y","n"]).get()
if is_jabber == "y": if is_jabber == "y":
self._jabservers[hostName]=1 self._jabservers[hostName] = 1
else: else:
what_tp_ans={\ what_tp_ans = {\
"a" : "aim",\ "a" : "aim",\
"i" : "icq",\ "i" : "icq",\
"r" : "irc",\ "r" : "irc",\
@ -89,7 +96,7 @@ class JabSync:
"v" : "private",\ "v" : "private",\
"y" : "yahoo",\ "y" : "yahoo",\
"-" : "forget"} "-" : "forget"}
what_transport=Answer(\ what_transport = Answer(\
" Select transport type :\n"+\ " Select transport type :\n"+\
" [a]im"+\ " [a]im"+\
" [i]cq"+\ " [i]cq"+\
@ -101,32 +108,38 @@ class JabSync:
" [y]ahoo"+\ " [y]ahoo"+\
" [-] Forget JIDs using this host",\ " [-] Forget JIDs using this host",\
what_tp_ans.keys()) what_tp_ans.keys())
trans_proto=what_tp_ans[what_transport] trans_proto = what_tp_ans[what_transport.get()]
print "Selected : " + trans_proto
if trans_proto == "forget": if trans_proto == "forget":
# TODO: ajouter regles d'exclusion # TODO: ajouter regles d'exclusion
zero=0 zero = 0
else: else:
# TODO: ajouter transport a la config XML # TODO: ajouter transport a la config XML
zero=0 self._commonTransports[hostName] = trans_proto
zero = 0
return self.giveTransport(hostName) return self.giveTransport(hostName)
def get(self): def get(self):
print "jabsync::get\n"
#get Roster #get Roster
for account in self._accountList: for account in self._accountList:
roster=account.getRoster() roster = account.getRoster()
# fusionner les roster # fusionner les roster
jid_list=roster.getJIDs() jid_list = roster.getJIDs()
for jid in jid_list: for jid in jid_list:
transport=jid.getDomain() print "Getting... "
trans_proto=self.giveTransport(transport) print jid
transport = jid.getDomain()
trans_proto = self.giveTransport(transport)
if not self._commonJIDs.has_key(trans_proto): if not self._commonJIDs.has_key(trans_proto):
self._commonJIDs[trans_proto]={} self._commonJIDs[trans_proto]={}
jid_name=roster.getName(jid) jid_name = roster.getName(jid)
jid_groups=roster.getGroups(jid) jid_groups = roster.getGroups(jid)
if not jid_name: jid_name=jid.getNode() if not jid_name: jid_name = jid.getNode()
if not self._commonJIDs[trans_proto].has_key(jid.getNode()): if not self._commonJIDs[trans_proto].has_key(jid.getNode()):
self._commonJIDs[trans_proto][jid.getNode()]=(jid_name,jid_groups) self._commonJIDs[trans_proto][jid.getNode()] = \
# print " <- "+jid.getNode()+" @ "+trans_proto+" = "+jid_name (jid_name,jid_groups)
print "\x1B[G <- "+jid.getNode()+" @ "+trans_proto+" = "+jid_name print "\x1B[G <- "+jid.getNode()+" @ "+trans_proto+" = "+jid_name
#upload rosters #upload rosters