def notify_status(self, addr, is_afk=True): tag = c.IPMSG_BR_ABSENCE | c.IPMSG_FILEATTACHOPT | c.IPMSG_ENCRYPTOPT if is_afk: tag |= c.IPMSG_ABSENCEOPT msg = self.get_name_ext() if self.supports_utf8(addr) or settings['always_use_utf8']: tag |= c.IPMSG_UTF8OPT else: msg = util.utf8_to_sjis(msg) raw = self.make_msg(addr, tag, msg) self.server.send_immediate(raw, addr)
def rsps_entry(self, p, contact): if not status.is_invisible() and not status.is_off() and contact.addr[0] not in engine.block_ips: tag = c.IPMSG_ANSENTRY if status.is_afk(): tag |= c.IPMSG_ABSENCEOPT msg = engine.get_name_ext() if engine.supports_utf8(p.addr) or settings['always_use_utf8']: tag |= c.IPMSG_UTF8OPT else: msg = util.utf8_to_sjis(msg) engine.send(contact.addr, tag, msg) if not engine.is_self(contact.addr): self.events.add(contact) self.req_pubkey(contact.addr)
def hello(self, addr, is_afk=False, is_secret=False): tag = c.IPMSG_BR_ENTRY | c.IPMSG_FILEATTACHOPT | c.IPMSG_ENCRYPTOPT if is_secret: tag |= c.IPMSG_NOADDLISTOPT if is_afk: tag |= c.IPMSG_ABSENCEOPT msg = self.get_name_ext() if self.supports_utf8(addr) or settings['always_use_utf8']: tag |= c.IPMSG_UTF8OPT else: msg = util.utf8_to_sjis(msg) raw = self.make_msg(addr, tag, msg) self.server.send_immediate(raw, addr) if not is_secret: self.notify_status(addr, is_afk)
def make_msg(self, addr, tag, msg=''): extra = '' if tag & 0xFF in (c.IPMSG_BR_ENTRY, c.IPMSG_ANSENTRY, c.IPMSG_BR_ABSENCE): if settings['use_status_as_group']: gname = settings['stat_msg'][1] else: gname = settings['group_name'] if gname: if tag & c.IPMSG_UTF8OPT or self.supports_utf8(addr): tag |= c.IPMSG_UTF8OPT extra = "%s\0" % gname else: extra = "%s\0" % util.utf8_to_sjis(gname) raw = self.make_raw(tag, msg) logger.debug('make msg:' + raw) return raw + extra
def rsps_getinfo(self, p, contact): tag = c.IPMSG_SENDINFO msg = util.utf8_to_sjis(c.PROTOCOL_VERSION) engine.send(contact.addr, tag, msg)