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))
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))
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))