def discoReceived(self, user, what, node): if 'info' == what: if node is None: ids = [{'category': 'gateway', 'type': 'bitcoin', 'name':LIB_DESCRIPTION}] return {'ids': ids, 'features': [NS_DISCO_INFO, NS_DISCO_ITEMS, NS_REGISTER, NS_VERSION, NS_GATEWAY, NS_LAST]} elif 'users' == node: ids = [{'category': 'directory', 'type': 'user', 'name': _(DISCO, 'user_list')}] return {'ids': ids, 'features': [NS_DISCO_INFO, NS_DISCO_ITEMS]} elif 'items' == what: items = [] if user.isRegistered(): if node is None: items.append({'jid': user.getLocalJID(), 'name': _(DISCO, 'your_addresses'), 'node': 'addresses'}) else: items.append({'jid': self.jid, 'name': LIB_DESCRIPTION}) if user.isAdmin(): if node is None: items.append({'jid': self.jid, 'name': 'Users', 'node': 'users'}) elif 'users' == node: for jid in UserAccount.getAllMembers(): member = UserAccount(JID(jid)) name = member.username items.append({'jid': member.getLocalJID(), 'name': name}) return items
def start(self, proxy=None): if not self.connect(None, proxy): raise Exception(_('Console', 'cannot_connect').format(server=self.Server, port=self.Port)) if not self.auth(self.jid, self.password): raise Exception(_('Console', 'cannot_auth').format(jid=self.jid)) self._RegisterHandlers() debug("Sending initial presence to all contacts...") for jid in UserAccount.getAllMembers(): self.send(Presence(to=jid, frm=self.jid, typ='probe')) user = UserAccount(JID(jid)) self.sendBitcoinPresence(self, user) for addr in user.getRoster(): Address(JID(addr)).sendBitcoinPresence(self, user)