All pastes #1042071 Raw Edit

k

public text v1 · immutable
#1042071 ·published 2008-06-08 15:15 UTC
rendered paste body
Index: gajim.py===================================================================--- gajim.py	(Revision 9768)+++ gajim.py	(Arbeitskopie)@@ -287,26 +287,36 @@ 	widget.destroy()  class OtrlMessageAppOps:-	def gajim_log(self, msg, account, fjid, no_print=False):+	def gajim_log(self, msg, account, fjid, no_print=False,+	is_status_message=True, thread_id=None): 		if not isinstance(fjid, unicode): 			fjid = unicode(fjid) 		if not isinstance(account, unicode): 			account = unicode(account)-		resource=gajim.get_resource_from_jid(fjid)+		resource = gajim.get_resource_from_jid(fjid)+		jid = gajim.get_jid_without_resource(fjid) 		tim = time.localtime() -		if not no_print:-			ctrl = self.get_control(fjid, account)-			if ctrl:-				ctrl.print_conversation_line(u'[OTR] %s' % \-					msg, 'status', '', None)-		id = gajim.logger.write('chat_msg_recv', fjid,-			message='[OTR: %s]' % msg, tim=tim)-		# gajim.logger.write() only marks a message as unread-		# (and so only returns an id) when fjid is a real contact-		# (NOT if it's a GC private chat)-		if id:-			gajim.logger.set_read_messages([id])+		if is_status_message is True:+			if not no_print:+				ctrl = self.get_control(fjid, account)+				if ctrl:+					ctrl.print_conversation_line(u'[OTR] %s' % \+						msg, 'status', '', None)+			id = gajim.logger.write('chat_msg_recv', fjid,+				message='[OTR: %s]' % msg, tim=tim)+			# gajim.logger.write() only marks a message as unread+			# (and so only returns an id) when fjid is a real contact+			# (NOT if it's a GC private chat)+			if id:+				gajim.logger.set_read_messages([id])+		else:+			session = gajim.connections[account].\+					get_or_create_session(fjid, thread_id)+			session.roster_message(jid, msg, tim=tim,+				msg_type="chat", resource=resource)+			id = gajim.logger.write('chat_msg_recv', fjid,+				message='[OTR: %s]' % msg, tim=tim)  	def get_control(self, fjid, account): 		# first try to get the window with the full jid@@ -414,7 +424,8 @@  	def display_otr_message(self, opdata=None, username="", msg="", **kwargs): 		self.gajim_log('OTR Message: ' + msg, opdata['account'],-			username)+			username, is_status_message=False,+			thread_id=opdata['thread_id']) 		return 0  	def update_context_list(self, **kwargs):Index: common/connection_handlers.py===================================================================--- common/connection_handlers.py	(Revision 9768)+++ common/connection_handlers.py	(Arbeitskopie)@@ -1705,24 +1705,19 @@ 			receipt.setThread(thread_id) 			con.send(receipt) -		# We don't trust libotr, that's why we only pass the message-		# to it if necessary. otrl_proto_message_type does this check. 		if gajim.otr_module and not xep_200_encrypted \-		and isinstance(msgtxt, unicode) and \-		gajim.otr_module.otrl_proto_message_type(msgtxt.encode()) != \-		gajim.otr_module.OTRL_MSGTYPE_NOTOTR:-			# set to encrypted if it's really encrypted.-			if gajim.otr_module.otrl_proto_message_type(-			msgtxt.encode()) != \-			gajim.otr_module.OTRL_MSGTYPE_TAGGEDPLAINTEXT:-				encrypted = True+		and isinstance(msgtxt, unicode):+			## set to encrypted if it's really encrypted.+			#if gajim.otr_module.otrl_proto_message_type(+			#msgtxt.encode()) != \+			#gajim.otr_module.OTRL_MSGTYPE_TAGGEDPLAINTEXT:+			#	encrypted = True -			# TODO: Do we really need .encode()?-			# yes we do. OTR can't handle unicode. 			otr_msg_tuple = \ 				gajim.otr_module.otrl_message_receiving( 				self.otr_userstates,-				(gajim.otr_ui_ops, {'account': self.name}),+				(gajim.otr_ui_ops, {'account': self.name, +				'thread_id':thread_id}), 				gajim.get_jid_from_account(self.name).encode(), 				gajim.OTR_PROTO, 				frm.encode(),@@ -1764,8 +1759,6 @@ 			if msgtxt == '': 				return 		elif msgtxt != None and msgtxt != '':-			gajim.otr_dont_append_tag[frm] = True- 			# We're also here if we just don't 			# support OTR. Thus, we should strip 			# the tags from plaintext messagesIndex: common/gajim.py===================================================================--- common/gajim.py	(Revision 9768)+++ common/gajim.py	(Arbeitskopie)@@ -169,9 +169,6 @@ otr_userstates = {} otr_policy = {} -# list of (full) jids not to attempt OTR with-otr_dont_append_tag = {}- gajim_identity = {'type': 'pc', 'category': 'client', 'name': 'Gajim'} gajim_common_features = [xmpp.NS_BYTESTREAM, xmpp.NS_SI, 	xmpp.NS_FILE, xmpp.NS_MUC, xmpp.NS_MUC_USER,Index: chat_control.py===================================================================--- chat_control.py	(Revision 9768)+++ chat_control.py	(Arbeitskopie)@@ -1662,15 +1662,6 @@ 						'NOT encrypted') 					ChatControlBase.print_conversation_line( 						self, msg, 'status', '', tim)-			elif gajim.otr_module and self.get_otr_status() > 0:-				# OTR-				# TODO: This is not shown when the window-				#       isn't open - needs fixing!-				if not encrypted and frm == '':-					msg = _('The following message was ' + \-						'NOT encrypted')-					ChatControlBase.print_conversation_line(-						self, msg, 'status', '', tim) 			else: 				# GPG encryption 				if encrypted and not self.gpg_is_active:Index: message_control.py===================================================================--- message_control.py	(Revision 9768)+++ message_control.py	(Arbeitskopie)@@ -165,7 +165,7 @@  		xep_200 = bool(self.session) and self.session.enable_encryption -		if gajim.otr_module and not xep_200 and (jid not in gajim.otr_dont_append_tag):+		if gajim.otr_module and not xep_200: 			if type == 'chat' and isinstance(message, unicode): 				d = {'kwargs': {'keyID': keyID, 'type': type, 					'chatstate': chatstate,@@ -175,7 +175,8 @@ 					'user_nick': user_nick, 					'session': self.session, 					'original_message': original_message},-					'account': self.account}+					'account': self.account,+					'thread_id':self.session.thread_id}  				new_msg = gajim.otr_module.otrl_message_sending( 					self.session.conn.otr_userstates,