new plugin gestion

This commit is contained in:
Yann Leboulanger 2003-11-30 15:50:23 +00:00
parent 57f0b11a38
commit 6234777d45
6 changed files with 29 additions and 121 deletions

View File

@ -22,7 +22,10 @@ import threading
import socket
import sys
import time
import plugins
sys.path.append("..")
import plugins.sock
class GajimThread(threading.Thread):
def __init__(self, name = None, queueIn = None, queueOut = None):
@ -34,10 +37,8 @@ class GajimThread(threading.Thread):
# END __init__
def run(self):
#This is VERY bad
if self.getName() == 'gtkgui':
plugins.gtkgui.plugin(self.queueIn, self.queueOut)
elif self.getName() == 'logger':
plugins.logger.plugin(self.queueIn, self.queueOut)
mod = compile("import plugins.%s" % self.getName(), \
self.getName(), "exec")
res = eval(mod)
# END run
# END GajimThread

View File

@ -18,19 +18,20 @@
## GNU General Public License for more details.
##
import socket
import sys
sys.path.append("..")
import time
import string
import logging
import plugins
import common.hub
import common.jabber
import common.optparser
log = logging.getLogger('core.core')
log.setLevel(logging.DEBUG)
CONFPATH = "~/.gajimrc"
class GajimCore:
@ -180,21 +181,24 @@ class GajimCore:
# END main
# END GajimCore
def loadPlugins(gc):
modStr = gc.cfgParser.Core_modules
mods = string.split (modStr, ' ')
for mod in mods:
modObj = gc.hub.newPlugin(mod)
gc.hub.register(mod, 'ROSTER')
gc.hub.register(mod, 'NOTIFY')
gc.hub.register(mod, 'MSG')
gc.hub.register(mod, 'SUBSCRIBED')
gc.hub.register(mod, 'SUBSCRIBE')
gc.hub.register(mod, 'AGENTS')
gc.hub.register(mod, 'AGENT_INFO')
modObj.load()
# END loadPLugins
def start():
gc = GajimCore()
guiPl = gc.hub.newPlugin('gtkgui')
gc.hub.register('gtkgui', 'ROSTER')
gc.hub.register('gtkgui', 'NOTIFY')
gc.hub.register('gtkgui', 'MSG')
gc.hub.register('gtkgui', 'SUBSCRIBED')
gc.hub.register('gtkgui', 'SUBSCRIBE')
gc.hub.register('gtkgui', 'AGENTS')
gc.hub.register('gtkgui', 'AGENT_INFO')
guiPl.load()
logPl = gc.hub.newPlugin('logger')
gc.hub.register('logger', 'MSG')
gc.hub.register('logger', 'MSGSENT')
gc.hub.register('logger', 'NOTIFY')
gc.hub.register('logger', 'QUIT')
logPl.load()
loadPlugins(gc)
gc.mainLoop()
# END start

View File

@ -1,2 +1 @@
import gtkgui
import logger
import sock

View File

@ -1,96 +0,0 @@
#!/usr/bin/env python
## plugins/logger.py
##
## Gajim Team:
## - Yann Le Boulanger <asterix@crans.org>
## - Vincent Hanquez <tab@tuxfamily.org>
## - David Ferlier <david@yazzy.org>
##
## Copyright (C) 2003 Gajim Team
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published
## by the Free Software Foundation; version 2 only.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
import os
import string
import time
import common.optparser
CONFPATH = "~/.gajimrc"
LOGPATH = os.path.expanduser("~/.gajim/logs/")
class plugin:
def read_queue(self):
while 1:
while self.queueIN.empty() == 0:
lognotsep = self.cfgParser.Logger_lognotsep
if lognotsep:
lognotsep = string.atoi(lognotsep)
else:
#default
lognotsep = 1
lognotusr = self.cfgParser.Logger_lognotusr
if lognotusr:
lognotusr = string.atoi(lognotusr)
else:
#default
lognotusr = 1
# tim = time.strftime("%d%m%y%H%M%S")
tim = time.time()
ev = self.queueIN.get()
if ev[0] == 'QUIT':
return
elif ev[0] == 'NOTIFY':
status = ev[1][2]
if not status:
status = ""
if lognotsep == 1:
fic = open(LOGPATH + "notify.log", "a")
fic.write("%s:%s:%s:%s\n" % (tim, ev[1][0], \
ev[1][1], status))
fic.close()
if lognotusr == 1:
fic = open(LOGPATH + ev[1][0], "a")
fic.write("%s:%s:%s:%s\n" % (tim, ev[1][0], \
ev[1][1], status))
fic.close()
elif ev[0] == 'MSG':
fic = open(LOGPATH + ev[1][0], "a")
fic.write("%s:recv:%s\n" % (tim, ev[1][1]))
fic.close()
elif ev[0] == 'MSGSENT':
fic = open(LOGPATH + ev[1][0], "a")
fic.write("%s:sent:%s\n" % (tim, ev[1][1]))
fic.close()
time.sleep(0.5)
def __init__(self, quIN, quOUT):
self.cfgParser = common.optparser.OptionsParser(CONFPATH)
self.cfgParser.parseCfgFile()
self.queueIN = quIN
self.queueOUT = quOUT
#create ~/.gajim/logs if it doesn't exist
try:
os.stat(os.path.expanduser("~/.gajim"))
except OSError:
os.mkdir(os.path.expanduser("~/.gajim"))
print "creating ~/.gajim/"
try:
os.stat(LOGPATH)
except OSError:
os.mkdir(LOGPATH)
print "creating ~/.gajim/logs/"
self.read_queue()
if __name__ == "__main__":
plugin(None, None)
print "plugin logger loaded"