def __privmsg(self, nick, cmd, message): log.debug('>>privmsg ' + 'nick=' + nick + ' cmd=' + cmd + ' msg=' + message) # should we encrypt? box, encrypt = self.__get_encryption_box(cmd, nick) # encrypt before chunking if encrypt: if not box: log.debug('error, dont have encryption box object for ' + nick + ', dropping message') return message = encrypt_encode(message, box) header = "PRIVMSG " + nick + " :" max_chunk_len = MAX_PRIVMSG_LEN - len(header) - len(cmd) - 4 # 1 for command prefix 1 for space 2 for trailer if len(message) > max_chunk_len: message_chunks = chunks(message, max_chunk_len) else: message_chunks = [message] for m in message_chunks: trailer = ' ~' if m == message_chunks[-1] else ' ;' if m == message_chunks[0]: m = COMMAND_PREFIX + cmd + ' ' + m self.send_raw(header + m + trailer)
def privmsg(self, nick, cmd, message): log.debug('>>privmsg ' + 'nick=' + nick + ' cmd=' + cmd + ' msg=' + message) # should we encrypt? box, encrypt = self.get_encryption_box(cmd, nick) if encrypt: if not box: log.debug('error, dont have encryption box object for ' + nick + ', dropping message') return message = encrypt_encode(message, box) #forward to the implementation class (use single _ for polymrphsm to work) self._privmsg(nick, cmd, message)
def privmsg(self, nick, cmd, message): log.debug('>>privmsg ' + 'nick=' + nick + ' cmd=' + cmd + ' msg=' + message) # should we encrypt? box, encrypt = self.get_encryption_box(cmd, nick) if encrypt: if not box: log.debug('error, dont have encryption box object for ' + nick + ', dropping message') return message = encrypt_encode(message, box) #Anti-replay measure: append the message channel identifier #to the signature; this prevents cross-channel replay but NOT #same-channel replay (in case of snooper after dropped connection #on this channel). msg_to_be_signed = message + str(self.hostid) sig = btc.ecdsa_sign(msg_to_be_signed, self.nick_priv) message += ' ' + self.nick_pubkey + ' ' + sig #forward to the implementation class (use single _ for polymrphsm to work) self._privmsg(nick, cmd, message)