Esempio n. 1
0
	def queueHandle(self):
		if self.dmb.queue_to_send:
			for rec in self.dmb.queue_to_send:
				sended = 0
				log.info(rec['jid'])
				for j in rec['jid']:
					if rec.get('send') or self.ui.getStatus(j):
						queue_output.put((j, rec.get('message'), rec.get('extra')))
						sended = 1
						break
				if not sended:
					post = rec.get('post')
					message = rec.get('message')
					comment = rec.get('comment')
					id_recommend = rec.get('id_recommend')
					try:
						self.dmb.addToSendQueue(login = rec['login'], post = post, comment = comment, id_recommend = id_recommend, message = message)
					except dmbError:
						log.debug('%d %s %s' % (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))
					except:
						log.error('%d %s %s' % (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))
			tick = time.time()
			self.dmb.queue_to_send = []
			tick = time.time() - tick
			log.debug('%s %s' % ('queueHandle', tick))
Esempio n. 2
0
 def queueHandle(self):
     if self.dmb.queue_to_send:
         for rec in self.dmb.queue_to_send:
             sended = 0
             log.info(rec['jid'])
             for j in rec['jid']:
                 if rec.get('send') or self.ui.getStatus(j):
                     queue_output.put(
                         (j, rec.get('message'), rec.get('extra')))
                     sended = 1
                     break
             if not sended:
                 post = rec.get('post')
                 message = rec.get('message')
                 comment = rec.get('comment')
                 id_recommend = rec.get('id_recommend')
                 try:
                     self.dmb.addToSendQueue(login=rec['login'],
                                             post=post,
                                             comment=comment,
                                             id_recommend=id_recommend,
                                             message=message)
                 except dmbError:
                     log.debug('%d %s %s' % (sys.exc_traceback.tb_lineno,
                                             sys.exc_type, sys.exc_value))
                 except:
                     log.error('%d %s %s' % (sys.exc_traceback.tb_lineno,
                                             sys.exc_type, sys.exc_value))
         tick = time.time()
         self.dmb.queue_to_send = []
         tick = time.time() - tick
         log.debug('%s %s' % ('queueHandle', tick))
Esempio n. 3
0
 def initDB(self):
     if not self.conn.params.find({'name': 'counter'}).count():
         self.conn.params.insert({'name': 'counter', 'value': 0})
     if not self.conn.params.find({'name': 's2s_in'}).count():
         self.conn.params.insert({'name': 's2s_in', 'value': s2s_in_allow})
     if not self.conn.params.find({'name': 's2s_reg'}).count():
         self.conn.params.insert({
             'name': 's2s_reg',
             'value': s2s_reg_allow
         })
     self.conn.users.create_index('login')
     self.conn.users.create_index([('jid', 1), ('priority', -1)])
     self.conn.users.params.create_index('login')
     self.conn.users.lists.create_index('login')
     self.conn.users.alias.create_index('login')
     self.conn.users.regexp.create_index('login')
     self.conn.posts.create_index('login')
     self.conn.posts.create_index('id')
     self.conn.comments.create_index('login')
     self.conn.comments.create_index([('post', 1), ('id', 1)])
     self.conn.recommends.create_index('login')
     self.conn.recommends.create_index([('post', 1), ('comment', 1)])
     self.conn.subscribes.create_index('login')
     self.conn.subscribes.create_index('post')
     self.conn.subscribes.create_index('user')
     self.conn.subscribes.create_index('tag')
     self.conn.send.queue.create_index('login')
     self.conn.send.history.create_index([('login', 1), ('post', 1),
                                          ('comment', 1)])
     log.info('create indexes')
     self.regUser('', 'anonymous')
Esempio n. 4
0
 def __init__(self, host, port=27017, base='dmb', user=None, passwd=None):
     try:
         self.conn = connection.Connection(host, port)[base]
         if self.conn:
             log.info('connected database')
     except:
         log.critical(
             '%d %s %s' %
             (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))
Esempio n. 5
0
 def send(self, jid, message, extra):
     try:
         if message:
             message = message.rstrip()
             if message.count("\n"):
                 message = "\n" + message
             msg = xmpp.protocol.Message(jid, message, "chat")
             if extra:
                 for k, v in extra.iteritems():
                     msg.setAttr(k, v)
             log.info("%s(%s) -> %s" % (jid, msg.getBody(), msg.getAttrs()))
             self.client.send(msg)
     except:
         log.error("%d %s %s" % (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))
Esempio n. 6
0
 def messageHandler(self, conn, msg):
     try:
         log.info("%s(%s) -> %s" % (msg.getFrom(), msg.getBody(), msg.getAttrs()))
         if msg.getAttrs().get("dmb") == "server":
             if self.s2sFunc:
                 login = msg.getAttrs().get("dmb_login")
                 self.s2sFunc(str(msg.getFrom()).split("/")[0], msg.getBody(), login)
         elif msg.getBody() and self.messageFunc:
             self.messageFunc(str(msg.getFrom()).split("/")[0], msg.getBody())
     except SystemExit:
         log.info("%s" % "system exit")
         sys.exit()
     except:
         log.error("%d %s %s" % (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))
Esempio n. 7
0
 def run(self):
     global is_run
     while is_run:
         try:
             jid, message, login = queue_input.get(timeout=10)
             log.info('%s %s' % (jid, message))
             if not login:
                 try:
                     login = self.dmb.getLogin(jid=jid)
                 except dmbErrorAuth:
                     login = '******'
             try:
                 self.dmb.def_locale = self.dmb.getUserParams(
                     login)['locale']
             except:
                 log.error('%d %s %s' % (sys.exc_traceback.tb_lineno,
                                         sys.exc_type, sys.exc_value))
             try:
                 tick = time.time()
                 if jid == config.admin:
                     mesg = adminParsing(self.dmb,
                                         login=unicode(login),
                                         text=unicode(message),
                                         jid=jid)
                 else:
                     mesg = parsing(self.dmb,
                                    login=unicode(login),
                                    text=unicode(message),
                                    jid=jid)
                 tick = time.time() - tick
                 log.debug('%s %s' % (message.split(' ')[0], tick))
             except SystemExit:
                 log.info('exit')
                 is_run = None
                 self.ui.is_run = None
                 sys.exit()
             except dmbError as exc:
                 log.error('%d %s %s' % (sys.exc_traceback.tb_lineno,
                                         sys.exc_type, sys.exc_value))
                 mesg = '%s %s' % (exc.getText(),
                                   self.dmb.getText(exc.getCode()))
             except:
                 log.error('%d %s %s' % (sys.exc_traceback.tb_lineno,
                                         sys.exc_type, sys.exc_value))
                 mesg = self.dmb.getText('ERR7')
             queue_output.put((jid, mesg, {}))
             self.queueHandle()
         except Queue.Empty:
             pass
Esempio n. 8
0
 def presenceHandler(self, conn, event):
     try:
         if event:
             log.info("%s %s" % (event.getFrom(), event.getAttrs()))
             if event.getAttrs().get("type") == "subscribe":
                 self.client.getRoster().Authorize(event.getFrom())
             jid = str(event.getFrom()).split("/")[0]
             status = self.getStatus(jid)
             if status and self.presenceFunc:
                 self.presenceFunc(jid, status)
     except SystemExit:
         log.info("%s" % "system exit")
         sys.exit()
     except:
         log.error("%d %s %s" % (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))
Esempio n. 9
0
 def send(self, jid, message, extra):
     try:
         if message:
             message = message.rstrip()
             if message.count('\n'):
                 message = '\n' + message
             msg = xmpp.protocol.Message(jid, message, 'chat')
             if extra:
                 for k, v in extra.iteritems():
                     msg.setAttr(k, v)
             log.info('%s(%s) -> %s' % (jid, msg.getBody(), msg.getAttrs()))
             self.client.send(msg)
     except:
         log.error(
             '%d %s %s' %
             (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))
Esempio n. 10
0
 def presenceHandler(self, conn, event):
     try:
         if event:
             log.info('%s %s' % (event.getFrom(), event.getAttrs()))
             if event.getAttrs().get('type') == 'subscribe':
                 self.client.getRoster().Authorize(event.getFrom())
             jid = str(event.getFrom()).split('/')[0]
             status = self.getStatus(jid)
             if status and self.presenceFunc:
                 self.presenceFunc(jid, status)
     except SystemExit:
         log.info('%s' % 'system exit')
         sys.exit()
     except:
         log.error(
             '%d %s %s' %
             (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))
Esempio n. 11
0
 def messageHandler(self, conn, msg):
     try:
         log.info('%s(%s) -> %s' %
                  (msg.getFrom(), msg.getBody(), msg.getAttrs()))
         if msg.getAttrs().get('dmb') == 'server':
             if self.s2sFunc:
                 login = msg.getAttrs().get('dmb_login')
                 self.s2sFunc(
                     str(msg.getFrom()).split('/')[0], msg.getBody(), login)
         elif msg.getBody() and self.messageFunc:
             self.messageFunc(
                 str(msg.getFrom()).split('/')[0], msg.getBody())
     except SystemExit:
         log.info('%s' % 'system exit')
         sys.exit()
     except:
         log.error(
             '%d %s %s' %
             (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))
Esempio n. 12
0
	def s2sHandler(self, jid, message, login = None):
		global dmb_servers
		log.info('***s2s*** %s %s' % (jid, message))
		if message == 'registry':
			log.info('servers: %s' % dmb_servers)
			if jid in dmb_servers:
				queue_output.put((jid, 'registry already exists', {}))
			else:
				if config.s2s_reg == s2s_reg_deny:
					queue_output.put((jid, 'deny registry', {}))
				elif config.s2s_reg == s2s_reg_allow_confirm:
					queue_output.put((config.admin, '%s want to register' % jid, {}))
				else:
					try:
						dmb_servers = self.dmb.addServer(jid)
						msg_out = 'ok'
					except dmbErrorRepeat:
						msg_out = 'already exists'
					queue_output.put((jid, msg_out, {'dmb': 'server'}))
		elif config.s2s_msg == s2s_msg_allow:
			queue_input.put((jid, message, '%s@%s' % (login, getServerName(jid))))
Esempio n. 13
0
	def run(self):
		global is_run
		while is_run:
			try:
				jid, message, login = queue_input.get(timeout = 10)
				log.info('%s %s' % (jid, message))
				if not login:
					try:
						login = self.dmb.getLogin(jid = jid)
					except dmbErrorAuth:
						login = '******'
				try:
					self.dmb.def_locale = self.dmb.getUserParams(login)['locale']
				except:
					log.error('%d %s %s' % (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))			
				try:
					tick = time.time()
					if jid == config.admin:
						mesg = adminParsing(self.dmb, login = unicode(login), text = unicode(message), jid = jid)
					else:
						mesg = parsing(self.dmb, login = unicode(login), text = unicode(message), jid = jid)
					tick = time.time() - tick
					log.debug('%s %s' % (message.split(' ')[0], tick))
				except SystemExit:
					log.info('exit')
					is_run = None
					self.ui.is_run = None
					sys.exit()
				except dmbError as exc:
					log.error('%d %s %s' % (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))			
					mesg = '%s %s' % (exc.getText(), self.dmb.getText(exc.getCode()))
				except:
					log.error('%d %s %s' % (sys.exc_traceback.tb_lineno, sys.exc_type, sys.exc_value))
					mesg = self.dmb.getText('ERR7')
				queue_output.put((jid, mesg, {}))
				self.queueHandle()
			except Queue.Empty:
				pass
Esempio n. 14
0
 def s2sHandler(self, jid, message, login=None):
     global dmb_servers
     log.info('***s2s*** %s %s' % (jid, message))
     if message == 'registry':
         log.info('servers: %s' % dmb_servers)
         if jid in dmb_servers:
             queue_output.put((jid, 'registry already exists', {}))
         else:
             if config.s2s_reg == s2s_reg_deny:
                 queue_output.put((jid, 'deny registry', {}))
             elif config.s2s_reg == s2s_reg_allow_confirm:
                 queue_output.put(
                     (config.admin, '%s want to register' % jid, {}))
             else:
                 try:
                     dmb_servers = self.dmb.addServer(jid)
                     msg_out = 'ok'
                 except dmbErrorRepeat:
                     msg_out = 'already exists'
                 queue_output.put((jid, msg_out, {'dmb': 'server'}))
     elif config.s2s_msg == s2s_msg_allow:
         queue_input.put(
             (jid, message, '%s@%s' % (login, getServerName(jid))))
Esempio n. 15
0
 def close(self):
     log.info('disconnected database')