def recv_subscribed(self, conn, pres): roster = self.get(conn) contact = xml.jid(pres.get('from')).bare self.confirm(conn, roster, roster.subscribe(contact, 'to')) pres.set('from', contact) pres.set('to', conn.authJID.bare) return conn.write(pres)
def unregister_conn(self, conn): key = conn.get_loginid() if (key in self._conns): del self._conns[key] if (conn.authJID.bare in self._rosters): try: self._resources.routes(xml.jid(conn.authJID.bare)) except NoRoute: # last connection: remove from rosters del self._rosters[conn.authJID.bare] else: Log.warn("Rosters: conn not found in unregister_conn()")
def allow_login(self, jid): '''sessions = self.get_bbs_online(jid) count = 0 for session in sessions: if (session._userinfo.mode == modes.XMPP): count += 1''' try: count = len(self._resources.routes(xml.jid(jid))) - 1 except NoRoute: count = 0 if count >= Config.Config.GetInt("XMPP_TOTAL_LOGIN_LIMIT", 5): return False # may add other checks here return True
def send(self, conn, to, elem): """Send a subscription request or response.""" method = getattr(self, 'send_%s' % elem.get('type'), None) return method and method(conn, xml.jid(to).bare, elem)
def routes(self, jid): return self._resources.routes(xml.jid(jid))