Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/python-nbxmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'nbxmpp/features.py')
-rw-r--r--nbxmpp/features.py216
1 files changed, 0 insertions, 216 deletions
diff --git a/nbxmpp/features.py b/nbxmpp/features.py
deleted file mode 100644
index 69b8b6e..0000000
--- a/nbxmpp/features.py
+++ /dev/null
@@ -1,216 +0,0 @@
-## features.py
-##
-## Copyright (C) 2003-2004 Alexey "Snake" Nezhdanov
-## Copyright (C) 2007 Julien Pivotto <roidelapluie@gmail.com>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2, or (at your option)
-## any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-
-"""
-Different stuff that wasn't worth separating it into modules
-(Registration, Privacy Lists, ...)
-"""
-
-from .protocol import NS_REGISTER, NS_PRIVACY, NS_DATA, Iq, isResultNode, Node
-
-def _on_default_response(disp, iq, cb):
- def _on_response(_client, resp):
- if isResultNode(resp):
- if cb:
- cb(True)
- elif cb:
- cb(False)
- disp.SendAndCallForResponse(iq, _on_response)
-
-###############################################################################
-### Registration
-###############################################################################
-
-REGISTER_DATA_RECEIVED = 'REGISTER DATA RECEIVED'
-
-def getRegInfo(disp, host, info={}, sync=True):
- """
- Get registration form from remote host. Info dict can be prefilled
- :param disp: plugged dispatcher instance
- :param info: dict, like {'username':'joey'}.
-
- See JEP-0077 for details.
- """
- iq=Iq('get', NS_REGISTER, to=host)
- for i in info.keys():
- iq.setTagData(i, info[i])
- if sync:
- disp.SendAndCallForResponse(iq, lambda _client, resp:
- _ReceivedRegInfo(disp.Dispatcher, resp, host))
- else:
- disp.SendAndCallForResponse(iq, _ReceivedRegInfo, {'agent': host })
-
-def _ReceivedRegInfo(con, resp, agent):
- Iq('get', NS_REGISTER, to=agent)
- if not isResultNode(resp):
- error_msg = resp.getErrorMsg()
- con.Event(NS_REGISTER, REGISTER_DATA_RECEIVED, (agent, None, False, error_msg, ''))
- return
- tag=resp.getTag('query', namespace=NS_REGISTER)
- if not tag:
- error_msg = resp.getErrorMsg()
- con.Event(NS_REGISTER, REGISTER_DATA_RECEIVED, (agent, None, False, error_msg, ''))
- return
- df=tag.getTag('x', namespace=NS_DATA)
- if df:
- con.Event(NS_REGISTER, REGISTER_DATA_RECEIVED, (agent, df, True, '',
- tag))
- return
- df={}
- for i in resp.getQueryPayload():
- if not isinstance(i, Node):
- continue
- df[i.getName()] = i.getData()
- con.Event(NS_REGISTER, REGISTER_DATA_RECEIVED, (agent, df, False, '', ''))
-
-def register(disp, host, info, cb, args=None):
- """
- Perform registration on remote server with provided info
-
- If registration fails you can get additional info from the dispatcher's
- owner attributes lastErrNode, lastErr and lastErrCode.
- """
- iq=Iq('set', NS_REGISTER, to=host)
- if not isinstance(info, dict):
- info=info.asDict()
- for i in info.keys():
- iq.setTag('query').setTagData(i, info[i])
- disp.SendAndCallForResponse(iq, cb, args)
-
-def unregister(disp, host, cb):
- """
- Unregisters with host (permanently removes account). Returns true on success
- """
- iq = Iq('set', NS_REGISTER, to=host, payload=[Node('remove')])
- _on_default_response(disp, iq, cb)
-
-def changePasswordTo(disp, newpassword, host=None, cb = None):
- """
- Changes password on specified or current (if not specified) server. Returns
- true on success.
- """
- if not host:
- host = disp._owner.Server
- iq = Iq('set', NS_REGISTER, to=host, payload=[Node('username',
- payload=[disp._owner.Server]), Node('password', payload=[newpassword])])
- _on_default_response(disp, iq, cb)
-
-###############################################################################
-### Privacy List
-###############################################################################
-
-PL_TYPE_JID = 'jid'
-PL_TYPE_GROUP = 'group'
-PL_TYPE_SUBC = 'subscription'
-PL_ACT_ALLOW = 'allow'
-PL_ACT_DENY = 'deny'
-
-PRIVACY_LISTS_RECEIVED = 'PRIVACY LISTS RECEIVED'
-PRIVACY_LIST_RECEIVED = 'PRIVACY LIST RECEIVED'
-PRIVACY_LISTS_ACTIVE_DEFAULT = 'PRIVACY LISTS ACTIVE DEFAULT'
-
-def getPrivacyLists(disp):
- """
- Request privacy lists from connected server. Returns dictionary of existing
- lists on success.
- """
- iq = Iq('get', NS_PRIVACY)
- def _on_response(_client, resp):
- dict_ = {'lists': []}
- if not isResultNode(resp):
- disp.Event(NS_PRIVACY, PRIVACY_LISTS_RECEIVED, False)
- return
- for list_ in resp.getQueryPayload():
- if list_.getName()=='list':
- dict_['lists'].append(list_.getAttr('name'))
- else:
- dict_[list_.getName()]=list_.getAttr('name')
- disp.Event(NS_PRIVACY, PRIVACY_LISTS_RECEIVED, dict_)
- disp.SendAndCallForResponse(iq, _on_response)
-
-def getActiveAndDefaultPrivacyLists(disp):
- iq = Iq('get', NS_PRIVACY)
- def _on_response(_client, resp):
- dict_ = {'active': '', 'default': ''}
- if not isResultNode(resp):
- disp.Event(NS_PRIVACY, PRIVACY_LISTS_ACTIVE_DEFAULT, False)
- return
- for list_ in resp.getQueryPayload():
- if list_.getName() == 'active':
- dict_['active'] = list_.getAttr('name')
- elif list_.getName() == 'default':
- dict_['default'] = list_.getAttr('name')
- disp.Event(NS_PRIVACY, PRIVACY_LISTS_ACTIVE_DEFAULT, dict_)
- disp.SendAndCallForResponse(iq, _on_response)
-
-def getPrivacyList(disp, listname):
- """
- Request specific privacy list listname. Returns list of XML nodes (rules)
- taken from the server responce.
- """
- def _on_response(_client, resp):
- if not isResultNode(resp):
- disp.Event(NS_PRIVACY, PRIVACY_LIST_RECEIVED, False)
- return
- disp.Event(NS_PRIVACY, PRIVACY_LIST_RECEIVED, resp)
- iq = Iq('get', NS_PRIVACY, payload=[Node('list', {'name': listname})])
- disp.SendAndCallForResponse(iq, _on_response)
-
-def setActivePrivacyList(disp, listname=None, typ='active', cb=None):
- """
- Switch privacy list 'listname' to specified type. By default the type is
- 'active'. Returns true on success.
- """
- if listname:
- attrs={'name':listname}
- else:
- attrs={}
- iq = Iq('set', NS_PRIVACY, payload=[Node(typ, attrs)])
- _on_default_response(disp, iq, cb)
-
-def setDefaultPrivacyList(disp, listname=None):
- """
- Set the default privacy list as 'listname'. Returns true on success
- """
- return setActivePrivacyList(disp, listname, 'default')
-
-def setPrivacyList(disp, listname, tags):
- """
- Set the ruleset
-
- 'list' should be the simpleXML node formatted according to RFC 3921
- (XMPP-IM) I.e. Node('list',{'name':listname},payload=[...]).
-
- Returns true on success.
- """
- iq = Iq('set', NS_PRIVACY, xmlns = '')
- list_query = iq.getTag('query').setTag('list', {'name': listname})
- for item in tags:
- if 'type' in item and 'value' in item:
- item_tag = list_query.setTag('item', {'action': item['action'],
- 'order': item['order'], 'type': item['type'],
- 'value': item['value']})
- else:
- item_tag = list_query.setTag('item', {'action': item['action'],
- 'order': item['order']})
- if 'child' in item:
- for child_tag in item['child']:
- item_tag.setTag(child_tag)
- _on_default_response(disp, iq, None)
-
-def delPrivacyList(disp, listname, cb=None):
- """ Deletes privacy list 'listname'. Returns true on success. """
- iq = Iq('set', NS_PRIVACY, payload=[Node('list', {'name':listname})])
- _on_default_response(disp, iq, cb)