Mercurial > libervia-backend
diff sat/plugins/plugin_xep_0100.py @ 2624:56f94936df1e
code style reformatting using black
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 27 Jun 2018 20:14:46 +0200 |
parents | 26edcf3a30eb |
children | 003b8b4b56a7 |
line wrap: on
line diff
--- a/sat/plugins/plugin_xep_0100.py Wed Jun 27 07:51:29 2018 +0200 +++ b/sat/plugins/plugin_xep_0100.py Wed Jun 27 20:14:46 2018 +0200 @@ -22,6 +22,7 @@ from sat.core import exceptions from sat.tools import xml_tools from sat.core.log import getLogger + log = getLogger(__name__) from twisted.words.protocols.jabber import jid from twisted.internet import reactor, defer @@ -33,37 +34,58 @@ C.PI_PROTOCOLS: ["XEP-0100"], C.PI_DEPENDENCIES: ["XEP-0077"], C.PI_MAIN: "XEP_0100", - C.PI_DESCRIPTION: _("""Implementation of Gateways protocol""") + C.PI_DESCRIPTION: _("""Implementation of Gateways protocol"""), } -WARNING_MSG = D_(u"""Be careful ! Gateways allow you to use an external IM (legacy IM), so you can see your contact as XMPP contacts. -But when you do this, all your messages go throught the external legacy IM server, it is a huge privacy issue (i.e.: all your messages throught the gateway can be monitored, recorded, analysed by the external server, most of time a private company).""") +WARNING_MSG = D_( + u"""Be careful ! Gateways allow you to use an external IM (legacy IM), so you can see your contact as XMPP contacts. +But when you do this, all your messages go throught the external legacy IM server, it is a huge privacy issue (i.e.: all your messages throught the gateway can be monitored, recorded, analysed by the external server, most of time a private company).""" +) GATEWAY_TIMEOUT = 10 # time to wait before cancelling a gateway disco info, in seconds -TYPE_DESCRIPTIONS = {'irc': D_("Internet Relay Chat"), - 'xmpp': D_("XMPP"), - 'qq': D_("Tencent QQ"), - 'simple': D_("SIP/SIMPLE"), - 'icq': D_("ICQ"), - 'yahoo': D_("Yahoo! Messenger"), - 'gadu-gadu': D_("Gadu-Gadu"), - 'aim': D_("AOL Instant Messenger"), - 'msn': D_("Windows Live Messenger"), - } +TYPE_DESCRIPTIONS = { + "irc": D_("Internet Relay Chat"), + "xmpp": D_("XMPP"), + "qq": D_("Tencent QQ"), + "simple": D_("SIP/SIMPLE"), + "icq": D_("ICQ"), + "yahoo": D_("Yahoo! Messenger"), + "gadu-gadu": D_("Gadu-Gadu"), + "aim": D_("AOL Instant Messenger"), + "msn": D_("Windows Live Messenger"), +} class XEP_0100(object): - def __init__(self, host): log.info(_("Gateways plugin initialization")) self.host = host self.__gateways = {} # dict used to construct the answer to findGateways. Key = target jid - host.bridge.addMethod("findGateways", ".plugin", in_sign='ss', out_sign='s', method=self._findGateways) - host.bridge.addMethod("gatewayRegister", ".plugin", in_sign='ss', out_sign='s', method=self._gatewayRegister) + host.bridge.addMethod( + "findGateways", + ".plugin", + in_sign="ss", + out_sign="s", + method=self._findGateways, + ) + host.bridge.addMethod( + "gatewayRegister", + ".plugin", + in_sign="ss", + out_sign="s", + method=self._gatewayRegister, + ) self.__menu_id = host.registerCallback(self._gatewaysMenu, with_data=True) - self.__selected_id = host.registerCallback(self._gatewaySelectedCb, with_data=True) - host.importMenu((D_("Service"), D_("Gateways")), self._gatewaysMenu, security_limit=1, help_string=D_("Find gateways")) + self.__selected_id = host.registerCallback( + self._gatewaySelectedCb, with_data=True + ) + host.importMenu( + (D_("Service"), D_("Gateways")), + self._gatewaysMenu, + security_limit=1, + help_string=D_("Find gateways"), + ) def _gatewaysMenu(self, data, profile): """ XMLUI activated by menu: return Gateways UI @@ -72,24 +94,31 @@ """ client = self.host.getClient(profile) try: - jid_ = jid.JID(data.get(xml_tools.formEscape('external_jid'), client.jid.host)) + jid_ = jid.JID( + data.get(xml_tools.formEscape("external_jid"), client.jid.host) + ) except RuntimeError: raise exceptions.DataError(_("Invalid JID")) d = self.findGateways(jid_, profile) d.addCallback(self._gatewaysResult2XMLUI, jid_) - d.addCallback(lambda xmlui: {'xmlui': xmlui.toXml()}) + d.addCallback(lambda xmlui: {"xmlui": xmlui.toXml()}) return d def _gatewaysResult2XMLUI(self, result, entity): - xmlui = xml_tools.XMLUI(title=_('Gateways manager (%s)') % entity.full()) + xmlui = xml_tools.XMLUI(title=_("Gateways manager (%s)") % entity.full()) xmlui.addText(_(WARNING_MSG)) - xmlui.addDivider('dash') - adv_list = xmlui.changeContainer('advanced_list', columns=3, selectable='single', callback_id=self.__selected_id) + xmlui.addDivider("dash") + adv_list = xmlui.changeContainer( + "advanced_list", + columns=3, + selectable="single", + callback_id=self.__selected_id, + ) for success, gateway_data in result: if not success: fail_cond, disco_item = gateway_data xmlui.addJid(disco_item.entity) - xmlui.addText(_('Failed (%s)') % fail_cond) + xmlui.addText(_("Failed (%s)") % fail_cond) xmlui.addEmpty() else: jid_, data = gateway_data @@ -100,22 +129,22 @@ xmlui.addText(name) xmlui.addText(self._getIdentityDesc(identity)) adv_list.end() - xmlui.addDivider('blank') - xmlui.changeContainer('advanced_list', columns=3) - xmlui.addLabel(_('Use external XMPP server')) - xmlui.addString('external_jid') - xmlui.addButton(self.__menu_id, _(u'Go !'), fields_back=('external_jid',)) + xmlui.addDivider("blank") + xmlui.changeContainer("advanced_list", columns=3) + xmlui.addLabel(_("Use external XMPP server")) + xmlui.addString("external_jid") + xmlui.addButton(self.__menu_id, _(u"Go !"), fields_back=("external_jid",)) return xmlui def _gatewaySelectedCb(self, data, profile): try: - target_jid = jid.JID(data['index']) + target_jid = jid.JID(data["index"]) except (KeyError, RuntimeError): log.warning(_("No gateway index selected")) return {} d = self.gatewayRegister(target_jid, profile) - d.addCallback(lambda xmlui: {'xmlui': xmlui.toXml()}) + d.addCallback(lambda xmlui: {"xmlui": xmlui.toXml()}) return d def _getIdentityDesc(self, identity): @@ -124,8 +153,13 @@ """ category, type_ = identity - if category != 'gateway': - log.error(_(u'INTERNAL ERROR: identity category should always be "gateway" in _getTypeString, got "%s"') % category) + if category != "gateway": + log.error( + _( + u'INTERNAL ERROR: identity category should always be "gateway" in _getTypeString, got "%s"' + ) + % category + ) try: return _(TYPE_DESCRIPTIONS[type_]) except KeyError: @@ -145,8 +179,10 @@ def gatewayRegister(self, target_jid, profile_key=C.PROF_KEY_NONE): """Register gateway using in-band registration, then log-in to gateway""" profile = self.host.memory.getProfileName(profile_key) - assert(profile) - d = self.host.plugins["XEP-0077"].inBandRegister(target_jid, self._registrationSuccessful, profile) + assert profile + d = self.host.plugins["XEP-0077"].inBandRegister( + target_jid, self._registrationSuccessful, profile + ) return d def _infosReceived(self, dl_result, items, target, client): @@ -165,12 +201,27 @@ ret.append((success, (msg, items[idx]))) else: entity = items[idx].entity - gateways = [(identity, result.identities[identity]) for identity in result.identities if identity[0] == 'gateway'] + gateways = [ + (identity, result.identities[identity]) + for identity in result.identities + if identity[0] == "gateway" + ] if gateways: - log.info(_(u"Found gateway [%(jid)s]: %(identity_name)s") % {'jid': entity.full(), 'identity_name': ' - '.join([gateway[1] for gateway in gateways])}) + log.info( + _(u"Found gateway [%(jid)s]: %(identity_name)s") + % { + "jid": entity.full(), + "identity_name": " - ".join( + [gateway[1] for gateway in gateways] + ), + } + ) ret.append((success, (entity, gateways))) else: - log.info(_(u"Skipping [%(jid)s] which is not a gateway") % {'jid': entity.full()}) + log.info( + _(u"Skipping [%(jid)s] which is not a gateway") + % {"jid": entity.full()} + ) return ret def _itemsReceived(self, disco, target, client): @@ -185,7 +236,9 @@ log.debug(_(u"item found: %s") % item.entity) _defers.append(client.disco.requestInfo(item.entity)) dl = defer.DeferredList(_defers) - dl.addCallback(self._infosReceived, items=disco._items, target=target, client=client) + dl.addCallback( + self._infosReceived, items=disco._items, target=target, client=client + ) reactor.callLater(GATEWAY_TIMEOUT, dl.cancel) return dl @@ -203,7 +256,10 @@ """Find gateways in the target JID, using discovery protocol """ client = self.host.getClient(profile) - log.debug(_(u"find gateways (target = %(target)s, profile = %(profile)s)") % {'target': target.full(), 'profile': profile}) + log.debug( + _(u"find gateways (target = %(target)s, profile = %(profile)s)") + % {"target": target.full(), "profile": profile} + ) d = client.disco.requestItems(target) d.addCallback(self._itemsReceived, target=target, client=client) return d