fix some bad merge
This commit is contained in:
		
							parent
							
								
									b47248f09d
								
							
						
					
					
						commit
						f7b0659c04
					
				
					 2 changed files with 1 additions and 308 deletions
				
			
		| 
						 | 
					@ -2128,310 +2128,3 @@ ConnectionJingle, ConnectionIBBytestream):
 | 
				
			||||||
        con.RegisterHandler('iq', self._PubkeyGetCB, 'get', common.xmpp.NS_PUBKEY_PUBKEY)
 | 
					        con.RegisterHandler('iq', self._PubkeyGetCB, 'get', common.xmpp.NS_PUBKEY_PUBKEY)
 | 
				
			||||||
        con.RegisterHandler('iq', self._PubkeyResultCB, 'result', common.xmpp.NS_PUBKEY_PUBKEY)
 | 
					        con.RegisterHandler('iq', self._PubkeyResultCB, 'result', common.xmpp.NS_PUBKEY_PUBKEY)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HelperEvent:
 | 
					 | 
				
			||||||
    def get_jid_resource(self):
 | 
					 | 
				
			||||||
        if self.id_ in self.conn.groupchat_jids:
 | 
					 | 
				
			||||||
            self.fjid = self.conn.groupchat_jids[self.id_]
 | 
					 | 
				
			||||||
            del self.conn.groupchat_jids[self.id_]
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            self.fjid = helpers.get_full_jid_from_iq(self.iq_obj)
 | 
					 | 
				
			||||||
        self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_id(self):
 | 
					 | 
				
			||||||
        self.id_ = self.iq_obj.getID()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class HttpAuthReceivedEvent(nec.NetworkIncomingEvent):
 | 
					 | 
				
			||||||
    name = 'http-auth-received'
 | 
					 | 
				
			||||||
    base_network_events = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def generate(self):
 | 
					 | 
				
			||||||
        if not self.conn:
 | 
					 | 
				
			||||||
            self.conn = self.base_event.conn
 | 
					 | 
				
			||||||
        if not self.iq_obj:
 | 
					 | 
				
			||||||
            self.iq_obj = self.base_event.xmpp_iq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.opt = gajim.config.get_per('accounts', self.conn.name, 'http_auth')
 | 
					 | 
				
			||||||
        self.iq_id = self.iq_obj.getTagAttr('confirm', 'id')
 | 
					 | 
				
			||||||
        self.method = self.iq_obj.getTagAttr('confirm', 'method')
 | 
					 | 
				
			||||||
        self.url = self.iq_obj.getTagAttr('confirm', 'url')
 | 
					 | 
				
			||||||
        # In case it's a message with a body
 | 
					 | 
				
			||||||
        self.msg = self.iq_obj.getTagData('body')
 | 
					 | 
				
			||||||
        return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class LastResultReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
 | 
					 | 
				
			||||||
    name = 'last-result-received'
 | 
					 | 
				
			||||||
    base_network_events = []
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    def generate(self):
 | 
					 | 
				
			||||||
        if not self.conn:
 | 
					 | 
				
			||||||
            self.conn = self.base_event.conn
 | 
					 | 
				
			||||||
        if not self.iq_obj:
 | 
					 | 
				
			||||||
            self.iq_obj = self.base_event.xmpp_iq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.get_id()
 | 
					 | 
				
			||||||
        self.get_jid_resource()
 | 
					 | 
				
			||||||
        if self.id_ in self.conn.last_ids:
 | 
					 | 
				
			||||||
            self.conn.last_ids.remove(self.id_)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.status = ''
 | 
					 | 
				
			||||||
        self.seconds = -1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if self.iq_obj.getType() == 'error':
 | 
					 | 
				
			||||||
            return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        qp = self.iq_obj.getTag('query')
 | 
					 | 
				
			||||||
        sec = qp.getAttr('seconds')
 | 
					 | 
				
			||||||
        self.status = qp.getData()
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            self.seconds = int(sec)
 | 
					 | 
				
			||||||
        except Exception:
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class VersionResultReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
 | 
					 | 
				
			||||||
    name = 'version-result-received'
 | 
					 | 
				
			||||||
    base_network_events = []
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    def generate(self):
 | 
					 | 
				
			||||||
        if not self.conn:
 | 
					 | 
				
			||||||
            self.conn = self.base_event.conn
 | 
					 | 
				
			||||||
        if not self.iq_obj:
 | 
					 | 
				
			||||||
            self.iq_obj = self.base_event.xmpp_iq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.get_id()
 | 
					 | 
				
			||||||
        self.get_jid_resource()
 | 
					 | 
				
			||||||
        if self.id_ in self.conn.version_ids:
 | 
					 | 
				
			||||||
            self.conn.version_ids.remove(self.id_)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.client_info = ''
 | 
					 | 
				
			||||||
        self.os_info = ''
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if self.iq_obj.getType() == 'error':
 | 
					 | 
				
			||||||
            return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        qp = self.iq_obj.getTag('query')
 | 
					 | 
				
			||||||
        if qp.getTag('name'):
 | 
					 | 
				
			||||||
            self.client_info += qp.getTag('name').getData()
 | 
					 | 
				
			||||||
        if qp.getTag('version'):
 | 
					 | 
				
			||||||
            self.client_info += ' ' + qp.getTag('version').getData()
 | 
					 | 
				
			||||||
        if qp.getTag('os'):
 | 
					 | 
				
			||||||
            self.os_info += qp.getTag('os').getData()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class TimeResultReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
 | 
					 | 
				
			||||||
    name = 'time-result-received'
 | 
					 | 
				
			||||||
    base_network_events = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def generate(self):
 | 
					 | 
				
			||||||
        if not self.conn:
 | 
					 | 
				
			||||||
            self.conn = self.base_event.conn
 | 
					 | 
				
			||||||
        if not self.iq_obj:
 | 
					 | 
				
			||||||
            self.iq_obj = self.base_event.xmpp_iq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.get_id()
 | 
					 | 
				
			||||||
        self.get_jid_resource()
 | 
					 | 
				
			||||||
        if self.id_ in self.conn.entity_time_ids:
 | 
					 | 
				
			||||||
            self.conn.entity_time_ids.remove(self.id_)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.time_info = ''
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if self.iq_obj.getType() == 'error':
 | 
					 | 
				
			||||||
            return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        qp = self.iq_obj.getTag('time')
 | 
					 | 
				
			||||||
        if not qp:
 | 
					 | 
				
			||||||
            # wrong answer
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
        tzo = qp.getTag('tzo').getData()
 | 
					 | 
				
			||||||
        if tzo.lower() == 'z':
 | 
					 | 
				
			||||||
            tzo = '0:0'
 | 
					 | 
				
			||||||
        tzoh, tzom = tzo.split(':')
 | 
					 | 
				
			||||||
        utc_time = qp.getTag('utc').getData()
 | 
					 | 
				
			||||||
        ZERO = datetime.timedelta(0)
 | 
					 | 
				
			||||||
        class UTC(datetime.tzinfo):
 | 
					 | 
				
			||||||
            def utcoffset(self, dt):
 | 
					 | 
				
			||||||
                return ZERO
 | 
					 | 
				
			||||||
            def tzname(self, dt):
 | 
					 | 
				
			||||||
                return "UTC"
 | 
					 | 
				
			||||||
            def dst(self, dt):
 | 
					 | 
				
			||||||
                return ZERO
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        class contact_tz(datetime.tzinfo):
 | 
					 | 
				
			||||||
            def utcoffset(self, dt):
 | 
					 | 
				
			||||||
                return datetime.timedelta(hours=int(tzoh), minutes=int(tzom))
 | 
					 | 
				
			||||||
            def tzname(self, dt):
 | 
					 | 
				
			||||||
                return "remote timezone"
 | 
					 | 
				
			||||||
            def dst(self, dt):
 | 
					 | 
				
			||||||
                return ZERO
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            t = datetime.datetime.strptime(utc_time, '%Y-%m-%dT%H:%M:%SZ')
 | 
					 | 
				
			||||||
            t = t.replace(tzinfo=UTC())
 | 
					 | 
				
			||||||
            self.time_info = t.astimezone(contact_tz()).strftime('%c')
 | 
					 | 
				
			||||||
        except ValueError, e:
 | 
					 | 
				
			||||||
            log.info('Wrong time format: %s' % str(e))
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class GMailQueryReceivedEvent(nec.NetworkIncomingEvent):
 | 
					 | 
				
			||||||
    name = 'gmail-notify'
 | 
					 | 
				
			||||||
    base_network_events = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def generate(self):
 | 
					 | 
				
			||||||
        if not self.conn:
 | 
					 | 
				
			||||||
            self.conn = self.base_event.conn
 | 
					 | 
				
			||||||
        if not self.iq_obj:
 | 
					 | 
				
			||||||
            self.iq_obj = self.base_event.xmpp_iq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if not self.iq_obj.getTag('mailbox'):
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
        mb = self.iq_obj.getTag('mailbox')
 | 
					 | 
				
			||||||
        if not mb.getAttr('url'):
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
        self.conn.gmail_url = mb.getAttr('url')
 | 
					 | 
				
			||||||
        if mb.getNamespace() != common.xmpp.NS_GMAILNOTIFY:
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
        self.newmsgs = mb.getAttr('total-matched')
 | 
					 | 
				
			||||||
        if not self.newmsgs:
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
        if self.newmsgs == '0':
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
        # there are new messages
 | 
					 | 
				
			||||||
        self.gmail_messages_list = []
 | 
					 | 
				
			||||||
        if mb.getTag('mail-thread-info'):
 | 
					 | 
				
			||||||
            gmail_messages = mb.getTags('mail-thread-info')
 | 
					 | 
				
			||||||
            for gmessage in gmail_messages:
 | 
					 | 
				
			||||||
                unread_senders = []
 | 
					 | 
				
			||||||
                for sender in gmessage.getTag('senders').getTags(
 | 
					 | 
				
			||||||
                'sender'):
 | 
					 | 
				
			||||||
                    if sender.getAttr('unread') != '1':
 | 
					 | 
				
			||||||
                        continue
 | 
					 | 
				
			||||||
                    if sender.getAttr('name'):
 | 
					 | 
				
			||||||
                        unread_senders.append(sender.getAttr('name') + \
 | 
					 | 
				
			||||||
                            '< ' + sender.getAttr('address') + '>')
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        unread_senders.append(sender.getAttr('address'))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if not unread_senders:
 | 
					 | 
				
			||||||
                    continue
 | 
					 | 
				
			||||||
                gmail_subject = gmessage.getTag('subject').getData()
 | 
					 | 
				
			||||||
                gmail_snippet = gmessage.getTag('snippet').getData()
 | 
					 | 
				
			||||||
                tid = int(gmessage.getAttr('tid'))
 | 
					 | 
				
			||||||
                if not self.conn.gmail_last_tid or \
 | 
					 | 
				
			||||||
                tid > self.conn.gmail_last_tid:
 | 
					 | 
				
			||||||
                    self.conn.gmail_last_tid = tid
 | 
					 | 
				
			||||||
                self.gmail_messages_list.append({
 | 
					 | 
				
			||||||
                    'From': unread_senders,
 | 
					 | 
				
			||||||
                    'Subject': gmail_subject,
 | 
					 | 
				
			||||||
                    'Snippet': gmail_snippet,
 | 
					 | 
				
			||||||
                    'url': gmessage.getAttr('url'),
 | 
					 | 
				
			||||||
                    'participation': gmessage.getAttr('participation'),
 | 
					 | 
				
			||||||
                    'messages': gmessage.getAttr('messages'),
 | 
					 | 
				
			||||||
                    'date': gmessage.getAttr('date')})
 | 
					 | 
				
			||||||
            self.conn.gmail_last_time = int(mb.getAttr('result-time'))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.jid = gajim.get_jid_from_account(self.name)
 | 
					 | 
				
			||||||
        log.debug(('You have %s new gmail e-mails on %s.') % (self.newmsgs,
 | 
					 | 
				
			||||||
            self.jid))
 | 
					 | 
				
			||||||
        return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class RosterItemExchangeEvent(nec.NetworkIncomingEvent, HelperEvent):
 | 
					 | 
				
			||||||
    name = 'roster-item-exchange-received'
 | 
					 | 
				
			||||||
    base_network_events = []
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    def generate(self):
 | 
					 | 
				
			||||||
        if not self.conn:
 | 
					 | 
				
			||||||
            self.conn = self.base_event.conn
 | 
					 | 
				
			||||||
        if not self.iq_obj:
 | 
					 | 
				
			||||||
            self.iq_obj = self.base_event.xmpp_iq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.get_id()
 | 
					 | 
				
			||||||
        self.get_jid_resource()
 | 
					 | 
				
			||||||
        self.exchange_items_list = {}
 | 
					 | 
				
			||||||
        items_list = self.iq_obj.getTag('x').getChildren()
 | 
					 | 
				
			||||||
        if not items_list:
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
        self.action = items_list[0].getAttr('action')
 | 
					 | 
				
			||||||
        if self.action is None:
 | 
					 | 
				
			||||||
            self.action = 'add'
 | 
					 | 
				
			||||||
        for item in self.iq_obj.getTag('x', namespace=common.xmpp.NS_ROSTERX).\
 | 
					 | 
				
			||||||
        getChildren():
 | 
					 | 
				
			||||||
            try:
 | 
					 | 
				
			||||||
                jid = helpers.parse_jid(item.getAttr('jid'))
 | 
					 | 
				
			||||||
            except common.helpers.InvalidFormat:
 | 
					 | 
				
			||||||
                log.warn('Invalid JID: %s, ignoring it' % item.getAttr('jid'))
 | 
					 | 
				
			||||||
                continue
 | 
					 | 
				
			||||||
            name = item.getAttr('name')
 | 
					 | 
				
			||||||
            contact = gajim.contacts.get_contact(self.conn.name, jid)
 | 
					 | 
				
			||||||
            groups = []
 | 
					 | 
				
			||||||
            same_groups = True
 | 
					 | 
				
			||||||
            for group in item.getTags('group'):
 | 
					 | 
				
			||||||
                groups.append(group.getData())
 | 
					 | 
				
			||||||
                # check that all suggested groups are in the groups we have for this
 | 
					 | 
				
			||||||
                # contact
 | 
					 | 
				
			||||||
                if not contact or group not in contact.groups:
 | 
					 | 
				
			||||||
                    same_groups = False
 | 
					 | 
				
			||||||
            if contact:
 | 
					 | 
				
			||||||
                # check that all groups we have for this contact are in the
 | 
					 | 
				
			||||||
                # suggested groups
 | 
					 | 
				
			||||||
                for group in contact.groups:
 | 
					 | 
				
			||||||
                    if group not in groups:
 | 
					 | 
				
			||||||
                        same_groups = False
 | 
					 | 
				
			||||||
                if contact.sub in ('both', 'to') and same_groups:
 | 
					 | 
				
			||||||
                    continue
 | 
					 | 
				
			||||||
            self.exchange_items_list[jid] = []
 | 
					 | 
				
			||||||
            self.exchange_items_list[jid].append(name)
 | 
					 | 
				
			||||||
            self.exchange_items_list[jid].append(groups)
 | 
					 | 
				
			||||||
        if exchange_items_list:
 | 
					 | 
				
			||||||
            return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class VersionRequestEvent(nec.NetworkIncomingEvent):
 | 
					 | 
				
			||||||
    name = 'version-request-received'
 | 
					 | 
				
			||||||
    base_network_events = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def generate(self):
 | 
					 | 
				
			||||||
        if not self.conn:
 | 
					 | 
				
			||||||
            self.conn = self.base_event.conn
 | 
					 | 
				
			||||||
        if not self.iq_obj:
 | 
					 | 
				
			||||||
            self.iq_obj = self.base_event.xmpp_iq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return True
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
class LastRequestEvent(nec.NetworkIncomingEvent):
 | 
					 | 
				
			||||||
    name = 'last-request-received'
 | 
					 | 
				
			||||||
    base_network_events = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def generate(self):
 | 
					 | 
				
			||||||
        if not self.conn:
 | 
					 | 
				
			||||||
            self.conn = self.base_event.conn
 | 
					 | 
				
			||||||
        if not self.iq_obj:
 | 
					 | 
				
			||||||
            self.iq_obj = self.base_event.xmpp_iq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return True
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
class TimeRequestEvent(nec.NetworkIncomingEvent):
 | 
					 | 
				
			||||||
    name = 'time-request-received'
 | 
					 | 
				
			||||||
    base_network_events = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def generate(self):
 | 
					 | 
				
			||||||
        if not self.conn:
 | 
					 | 
				
			||||||
            self.conn = self.base_event.conn
 | 
					 | 
				
			||||||
        if not self.iq_obj:
 | 
					 | 
				
			||||||
            self.iq_obj = self.base_event.xmpp_iq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class TimeRevisedRequestEvent(nec.NetworkIncomingEvent):
 | 
					 | 
				
			||||||
    name = 'time-revised-request-received'
 | 
					 | 
				
			||||||
    base_network_events = []
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def generate(self):
 | 
					 | 
				
			||||||
        if not self.conn:
 | 
					 | 
				
			||||||
            self.conn = self.base_event.conn
 | 
					 | 
				
			||||||
        if not self.iq_obj:
 | 
					 | 
				
			||||||
            self.iq_obj = self.base_event.xmpp_iq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return True
 | 
					 | 
				
			||||||
| 
						 | 
					@ -154,7 +154,7 @@ class ConnectionJingle(object):
 | 
				
			||||||
            jingle.on_session_state_changed(c)
 | 
					            jingle.on_session_state_changed(c)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            jingle = JingleSession(self, weinitiate=True, jid=jid)
 | 
					            jingle = JingleSession(self, weinitiate=True, jid=jid)
 | 
				
			||||||
            self.__sessions__[jingle.sid] = jingle
 | 
					            self._sessions[jingle.sid] = jingle
 | 
				
			||||||
            file_props['sid'] = jingle.sid
 | 
					            file_props['sid'] = jingle.sid
 | 
				
			||||||
            c = JingleFileTransfer(jingle, file_props=file_props,
 | 
					            c = JingleFileTransfer(jingle, file_props=file_props,
 | 
				
			||||||
                use_security=use_security)
 | 
					                use_security=use_security)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue