コード例 #1
0
ファイル: glue.py プロジェクト: fritteli/pyicqt
	def sendMessage(self, target, resource, message, noerror, xhtml, autoResponse=0):
		LogEvent(INFO, self.session.jabberID)
		from glue import jid2icq
		try:
			self.session.pytrans.serviceplugins['Statistics'].stats['OutgoingMessages'] += 1
			self.session.pytrans.serviceplugins['Statistics'].sessionUpdate(self.session.jabberID, 'OutgoingMessages', 1)
			uin = jid2icq(target)
			wantIcon = 0
			if self.bos.requesticon.has_key(uin):
				LogEvent(INFO, self.session.jabberID, "Going to ask for target's icon.")
				wantIcon = 1
				del self.bos.requesticon[uin]
			offline = 1
			try:
				if self.legacyList.ssicontacts[uin]['presence'] != "unavailable":
					offline = 0
			except:
				# well then they're online in some way
				pass

			iconSum = None
			iconLen = None
			iconStamp = None
			if hasattr(self, "myavatar"):
				iconSum = oscar.getIconSum(self.myavatar)
				iconLen = len(self.myavatar)
				iconStamp = time.time()
				LogEvent(INFO, self.session.jabberID, "Going to send info about our icon, length %d, cksum %d" % (iconLen, iconSum))

			LogEvent(INFO, self.session.jabberID)
			if uin[0].isdigit():
				encoding = config.encoding
				charset = "iso-8859-1"
				if self.legacyList.hasCapability(uin, "unicode"):
					encoding = "utf-16be"
					charset = "unicode"
				LogEvent(INFO, self.session.jabberID, "Encoding %r" % encoding)
				self.bos.sendMessage(uin, [[message,charset]], offline=offline, wantIcon=wantIcon, autoResponse=autoResponse, iconSum=iconSum, iconLen=iconLen, iconStamp=iconStamp)
				self.session.sendArchive(target, self.session.jabberID, message)
			else:
				if xhtml and not config.disableXHTML:
					xhtml = utils.xhtml_to_aimhtml(xhtml)
					self.bos.sendMessage(uin, xhtml, wantIcon=wantIcon, autoResponse=autoResponse, iconSum=iconSum, iconLen=iconLen, iconStamp=iconStamp)
					self.session.sendArchive(target, self.session.jabberID, message)
				else:
					htmlized = oscar.html(message)
					self.bos.sendMessage(uin, htmlized, wantIcon=wantIcon, autoResponse=autoResponse, iconSum=iconSum, iconLen=iconLen, iconStamp=iconStamp)
					self.session.sendArchive(target, self.session.jabberID, message)
		except AttributeError:
			self.alertUser(lang.get("sessionnotactive", config.jid))
コード例 #2
0
    def sendMessage(self,
                    target,
                    resource,
                    message,
                    noerror,
                    xhtml,
                    autoResponse=0):
        LogEvent(INFO, self.session.jabberID)
        from glue import jid2aim
        try:
            self.session.pytrans.serviceplugins['Statistics'].stats[
                'OutgoingMessages'] += 1
            self.session.pytrans.serviceplugins['Statistics'].sessionUpdate(
                self.session.jabberID, 'OutgoingMessages', 1)
            scrnname = jid2aim(target)
            wantIcon = 0
            if self.bos.requesticon.has_key(scrnname):
                LogEvent(INFO, self.session.jabberID,
                         "Going to ask for target's icon.")
                wantIcon = 1
                del self.bos.requesticon[scrnname]
            offline = 1
            try:
                if self.legacyList.ssicontacts[scrnname][
                        'presence'] != "unavailable":
                    offline = 0
            except:
                # well then they're online in some way
                pass

            iconSum = None
            iconLen = None
            iconStamp = None
            if hasattr(self, "myavatar"):
                iconSum = oscar.getIconSum(self.myavatar)
                iconLen = len(self.myavatar)
                iconStamp = time.time()
                LogEvent(
                    INFO, self.session.jabberID,
                    "Going to send info about our icon, length %d, cksum %d" %
                    (iconLen, iconSum))

            LogEvent(INFO, self.session.jabberID)
            if scrnname[0].isdigit():
                encoding = "iso-8859-1"
                charset = "iso-8859-1"
                if self.legacyList.hasCapability(scrnname, "unicode"):
                    encoding = "utf-16be"
                    charset = "unicode"
                LogEvent(INFO, self.session.jabberID, "Encoding %r" % encoding)
                self.bos.sendMessage(scrnname, [[message, charset]],
                                     offline=offline,
                                     wantIcon=wantIcon,
                                     autoResponse=autoResponse,
                                     iconSum=iconSum,
                                     iconLen=iconLen,
                                     iconStamp=iconStamp)
                self.session.sendArchive(target, self.session.jabberID,
                                         message)
            else:
                if xhtml and not config.disableXHTML:
                    xhtml = utils.xhtml_to_aimhtml(xhtml)
                    self.bos.sendMessage(scrnname,
                                         xhtml,
                                         wantIcon=wantIcon,
                                         autoResponse=autoResponse,
                                         iconSum=iconSum,
                                         iconLen=iconLen,
                                         iconStamp=iconStamp)
                    self.session.sendArchive(target, self.session.jabberID,
                                             message)
                else:
                    htmlized = oscar.html(message)
                    self.bos.sendMessage(scrnname,
                                         htmlized,
                                         wantIcon=wantIcon,
                                         autoResponse=autoResponse,
                                         iconSum=iconSum,
                                         iconLen=iconLen,
                                         iconStamp=iconStamp)
                    self.session.sendArchive(target, self.session.jabberID,
                                             message)
        except AttributeError:
            self.alertUser(lang.get("sessionnotactive", config.jid))
コード例 #3
0
	def sendMessage(self, target, resource, message, noerror, xhtml, autoResponse=0, jabber_mid=None):
		LogEvent(INFO, self.session.jabberID)
		from glue import jid2icq
		try:
			self.session.pytrans.serviceplugins['Statistics'].stats['OutgoingMessages'] += 1
			self.session.pytrans.serviceplugins['Statistics'].sessionUpdate(self.session.jabberID, 'OutgoingMessages', 1)
			uin = jid2icq(target)
			wantIcon = 0
			if self.bos.requesticon.has_key(uin):
				LogEvent(INFO, self.session.jabberID, "Going to ask for target's icon.")
				wantIcon = 1
				del self.bos.requesticon[uin]
			offline = 1
			try:
				if self.legacyList.ssicontacts[uin]['presence'] != "unavailable":
					offline = 0
			except:
				# well then they're online in some way
				pass

			iconSum = None
			iconLen = None
			iconStamp = None
			if hasattr(self, "myavatar"):
				iconSum = oscar.getIconSum(self.myavatar)
				iconLen = len(self.myavatar)
				iconStamp = time.time()
				LogEvent(INFO, self.session.jabberID, "Going to send info about our icon, length %d, cksum %d" % (iconLen, iconSum))

			LogEvent(INFO, self.session.jabberID)
			if uin[0].isdigit(): # ICQ users
				if jabber_mid and int(self.bos.selfSettings['msgconfirm_recvmode']) == 1 and  self.legacyList.hasCapability(uin, 'serv_rel'):
					cookie = ''.join([chr(random.randrange(0, 127)) for i in xrange(8)]) # cookie
					c_time = int(time.time())
					uvars = {}
					msg_query = self.getUserVarValue(uin, 'wait_for_confirm_msg_query')
					if len(msg_query) == 0:
						msg_query = dict([])
					elif len(msg_query) > 4: # query already too long
						del_msg_query = dict([])
						for every in msg_query:
							e_id, e_res, e_time = msg_query[every]
							if int(c_time) > int(e_time) + 60: # sent more than 60 second ago and receiving not confirmed
								del_msg_query[every] = msg_query[every] # message was lost
						if len(del_msg_query):
							for every in del_msg_query:
								del msg_query[every]
					msg_query[cookie] = (jabber_mid, resource, c_time)
					uvars['wait_for_confirm_msg_query'] = msg_query # update query
					self.legacyList.setUserVars(uin, uvars)
					log.msg('Waiting for confirmations msg query: %s' % msg_query)
				else:
					cookie = None
				        
				# if contact uses utf-8 via serv_rel and necessary see on it
				# or if contact has unicode & serl_rel caps and utf-8 via serv_rel preferred
				if (str(self.getUserVarValue(uin, 'utf8_msg_using')) == '1' and int(self.bos.selfSettings['utf8_messages_sendmode']) == 1) or (self.legacyList.hasCapability(uin, 'serv_rel') and self.legacyList.hasCapability(uin, 'unicode') and int(self.bos.selfSettings['utf8_messages_sendmode']) == 2 and not offline):
					self.bos.sendMessageType2(uin, message, cookie=cookie) # send as type-2 message
				else: # send as usual message, choose encoding
					if offline and int(self.bos.settingsOptionValue('offline_messages_sendenc')) == 0: # Unicode for offline messages
					    charset = 'unicode' # utf-16be
					elif offline and int(self.bos.settingsOptionValue('offline_messages_sendenc')) == 1: # local encoding for offline messages
					    charset = 'custom' # single-byte encoding
					else: # autodetect (both for offline and online messages)
					    if self.legacyList.hasCapability(uin, 'unicode'): # contact has unicode cap
						charset = 'unicode' # utf-16be
					    else:
						charset = 'custom' # single-byte encoding
					self.bos.sendMessage(uin, [[message,charset]], offline=offline, wantIcon=wantIcon, autoResponse=autoResponse, iconSum=iconSum, iconLen=iconLen, iconStamp=iconStamp, cookie=cookie)
				self.session.sendArchive(target, self.session.jabberID, message)
			else: # AIM users
				if xhtml and not config.disableXHTML:
					xhtml = utils.xhtml_to_aimhtml(xhtml)
					self.bos.sendMessage(uin, xhtml, wantIcon=wantIcon, autoResponse=autoResponse, iconSum=iconSum, iconLen=iconLen, iconStamp=iconStamp)
					self.session.sendArchive(target, self.session.jabberID, message)
				else:
					htmlized = oscar.html(message)
					self.bos.sendMessage(uin, htmlized, wantIcon=wantIcon, autoResponse=autoResponse, iconSum=iconSum, iconLen=iconLen, iconStamp=iconStamp)
					self.session.sendArchive(target, self.session.jabberID, message)
		except AttributeError:
			self.alertUser(lang.get("sessionnotactive", config.jid))