Package common :: Package xmpp :: Module commands
[hide private]
[frames] | no frames]

Module commands

This module is a ad-hoc command processor for xmpppy. It uses the plug-in mechanism like most of the core library. It depends on a DISCO browser manager.

There are 3 classes here, a command processor Commands like the Browser, and a command template plugin Command, and an example command.

To use this module:

Instansiate the module with the parent transport and disco browser manager as parameters. 'Plug in' commands using the command template. The command feature must be added to existing disco replies where neccessary.

What it supplies:

Automatic command registration with the disco browser manager. Automatic listing of commands in the public command list. A means of handling requests, by redirection though the command manager.
Classes [hide private]
  Command_Handler_Prototype
and execute method you can implement it any way you like, however this is my first attempt at making a generic handler that you can hang process stages on too.
  Commands
Commands is an ancestor of PlugIn and can be attached to any session.
  TestCommand
Example class.
Variables [hide private]
  DBG_COMMANDS = 'commands'
  ERRORS = {'urn:ietf:params:xml:ns:xmpp-sasl aborted': ['', '',...
  ERR_BAD_REQUEST = 'urn:ietf:params:xml:ns:xmpp-stanzas bad-req...
  ERR_CONFLICT = 'urn:ietf:params:xml:ns:xmpp-stanzas conflict'
  ERR_FEATURE_NOT_IMPLEMENTED = 'urn:ietf:params:xml:ns:xmpp-sta...
  ERR_FORBIDDEN = 'urn:ietf:params:xml:ns:xmpp-stanzas forbidden'
  ERR_GONE = 'urn:ietf:params:xml:ns:xmpp-stanzas gone'
  ERR_INTERNAL_SERVER_ERROR = 'urn:ietf:params:xml:ns:xmpp-stanz...
  ERR_ITEM_NOT_FOUND = 'urn:ietf:params:xml:ns:xmpp-stanzas item...
  ERR_JID_MALFORMED = 'urn:ietf:params:xml:ns:xmpp-stanzas jid-m...
  ERR_NOT_ACCEPTABLE = 'urn:ietf:params:xml:ns:xmpp-stanzas not-...
  ERR_NOT_ALLOWED = 'urn:ietf:params:xml:ns:xmpp-stanzas not-all...
  ERR_NOT_AUTHORIZED = 'urn:ietf:params:xml:ns:xmpp-stanzas not-...
  ERR_PAYMENT_REQUIRED = 'urn:ietf:params:xml:ns:xmpp-stanzas pa...
  ERR_RECIPIENT_UNAVAILABLE = 'urn:ietf:params:xml:ns:xmpp-stanz...
  ERR_REDIRECT = 'urn:ietf:params:xml:ns:xmpp-stanzas redirect'
  ERR_REGISTRATION_REQUIRED = 'urn:ietf:params:xml:ns:xmpp-stanz...
  ERR_REMOTE_SERVER_NOT_FOUND = 'urn:ietf:params:xml:ns:xmpp-sta...
  ERR_REMOTE_SERVER_TIMEOUT = 'urn:ietf:params:xml:ns:xmpp-stanz...
  ERR_RESOURCE_CONSTRAINT = 'urn:ietf:params:xml:ns:xmpp-stanzas...
  ERR_SERVICE_UNAVAILABLE = 'urn:ietf:params:xml:ns:xmpp-stanzas...
  ERR_SUBSCRIPTION_REQUIRED = 'urn:ietf:params:xml:ns:xmpp-stanz...
  ERR_UNDEFINED_CONDITION = 'urn:ietf:params:xml:ns:xmpp-stanzas...
  ERR_UNEXPECTED_REQUEST = 'urn:ietf:params:xml:ns:xmpp-stanzas ...
  NS_ACTIVITY = 'http://jabber.org/protocol/activity'
  NS_ADDRESS = 'http://jabber.org/protocol/address'
  NS_AGENTS = 'jabber:iq:agents'
  NS_AMP = 'http://jabber.org/protocol/amp'
  NS_AMP_ERRORS = 'http://jabber.org/protocol/amp#errors'
  NS_AUTH = 'jabber:iq:auth'
  NS_AVATAR = 'http://www.xmpp.org/extensions/xep-0084.html#ns-m...
  NS_BIND = 'urn:ietf:params:xml:ns:xmpp-bind'
  NS_BROWSE = 'jabber:iq:browse'
  NS_BROWSING = 'http://jabber.org/protocol/browsing'
  NS_BYTESTREAM = 'http://jabber.org/protocol/bytestreams'
  NS_CAPS = 'http://jabber.org/protocol/caps'
  NS_CHATSTATES = 'http://jabber.org/protocol/chatstates'
  NS_CHATTING = 'http://jabber.org/protocol/chatting'
  NS_CLIENT = 'jabber:client'
  NS_COMMANDS = 'http://jabber.org/protocol/commands'
  NS_COMPONENT_1 = 'http://jabberd.jabberstudio.org/ns/component...
  NS_COMPONENT_ACCEPT = 'jabber:component:accept'
  NS_COMPRESS = 'http://jabber.org/protocol/compress'
  NS_CONFERENCE = 'jabber:x:conference'
  NS_DATA = 'jabber:x:data'
  NS_DATA_LAYOUT = 'http://jabber.org/protocol/xdata-layout'
  NS_DATA_VALIDATE = 'http://jabber.org/protocol/xdata-validate'
  NS_DELAY = 'jabber:x:delay'
  NS_DELAY2 = 'urn:xmpp:delay'
  NS_DIALBACK = 'jabber:server:dialback'
  NS_DISCO = 'http://jabber.org/protocol/disco'
  NS_DISCO_INFO = 'http://jabber.org/protocol/disco#info'
  NS_DISCO_ITEMS = 'http://jabber.org/protocol/disco#items'
  NS_ENCRYPTED = 'jabber:x:encrypted'
  NS_ESESSION = 'http://www.xmpp.org/extensions/xep-0116.html#ns'
  NS_ESESSION_INIT = 'http://www.xmpp.org/extensions/xep-0116.ht...
  NS_EVENT = 'jabber:x:event'
  NS_FEATURE = 'http://jabber.org/protocol/feature-neg'
  NS_FILE = 'http://jabber.org/protocol/si/profile/file-transfer'
  NS_GAMING = 'http://jabber.org/protocol/gaming'
  NS_GEOLOC = 'http://jabber.org/protocol/geoloc'
  NS_GMAILNOTIFY = 'google:mail:notify'
  NS_GROUPCHAT = 'gc-1.0'
  NS_GTALKSETTING = 'google:setting'
  NS_HTTP_AUTH = 'http://jabber.org/protocol/http-auth'
  NS_HTTP_BIND = 'http://jabber.org/protocol/httpbind'
  NS_IBB = 'http://jabber.org/protocol/ibb'
  NS_INVISIBLE = 'presence-invisible'
  NS_IQ = 'iq'
  NS_LAST = 'jabber:iq:last'
  NS_MESSAGE = 'message'
  NS_MOOD = 'http://jabber.org/protocol/mood'
  NS_MUC = 'http://jabber.org/protocol/muc'
  NS_MUC_ADMIN = 'http://jabber.org/protocol/muc#admin'
  NS_MUC_CONFIG = 'http://jabber.org/protocol/muc#roomconfig'
  NS_MUC_OWNER = 'http://jabber.org/protocol/muc#owner'
  NS_MUC_UNIQUE = 'http://jabber.org/protocol/muc#unique'
  NS_MUC_USER = 'http://jabber.org/protocol/muc#user'
  NS_NICK = 'http://jabber.org/protocol/nick'
  NS_OFFLINE = 'http://www.jabber.org/jeps/jep-0030.html'
  NS_PHYSLOC = 'http://jabber.org/protocol/physloc'
  NS_PING = 'urn:xmpp:ping'
  NS_PRESENCE = 'presence'
  NS_PRIVACY = 'jabber:iq:privacy'
  NS_PRIVATE = 'jabber:iq:private'
  NS_PROFILE = 'http://jabber.org/protocol/profile'
  NS_PUBSUB = 'http://jabber.org/protocol/pubsub'
  NS_PUBSUB_OWNER = 'http://jabber.org/protocol/pubsub#owner'
  NS_RECEIPTS = 'urn:xmpp:receipts'
  NS_REGISTER = 'jabber:iq:register'
  NS_ROSTER = 'jabber:iq:roster'
  NS_ROSTERX = 'http://jabber.org/protocol/rosterx'
  NS_RPC = 'jabber:iq:rpc'
  NS_SASL = 'urn:ietf:params:xml:ns:xmpp-sasl'
  NS_SEARCH = 'jabber:iq:search'
  NS_SERVER = 'jabber:server'
  NS_SESSION = 'urn:ietf:params:xml:ns:xmpp-session'
  NS_SI = 'http://jabber.org/protocol/si'
  NS_SIGNED = 'jabber:x:signed'
  NS_SI_PUB = 'http://jabber.org/protocol/sipub'
  NS_SSN = 'urn:xmpp:ssn'
  NS_STANZAS = 'urn:ietf:params:xml:ns:xmpp-stanzas'
  NS_STANZA_CRYPTO = 'http://www.xmpp.org/extensions/xep-0200.ht...
  NS_STREAM = 'http://affinix.com/jabber/stream'
  NS_STREAMS = 'http://etherx.jabber.org/streams'
  NS_TIME = 'jabber:iq:time'
  NS_TIME_REVISED = 'urn:xmpp:time'
  NS_TLS = 'urn:ietf:params:xml:ns:xmpp-tls'
  NS_TUNE = 'http://jabber.org/protocol/tune'
  NS_VACATION = 'http://jabber.org/protocol/vacation'
  NS_VCARD = 'vcard-temp'
  NS_VCARD_UPDATE = 'vcard-temp:x:update'
  NS_VERSION = 'jabber:iq:version'
  NS_VIEWING = 'http://jabber.org/protocol/viewing'
  NS_WAITINGLIST = 'http://jabber.org/protocol/waitinglist'
  NS_XHTML = 'http://www.w3.org/1999/xhtml'
  NS_XHTML_IM = 'http://jabber.org/protocol/xhtml-im'
  NS_XMPP_STREAMS = 'urn:ietf:params:xml:ns:xmpp-streams'
  SASL_ABORTED = 'urn:ietf:params:xml:ns:xmpp-sasl aborted'
  SASL_INCORRECT_ENCODING = 'urn:ietf:params:xml:ns:xmpp-sasl in...
  SASL_INVALID_AUTHZID = 'urn:ietf:params:xml:ns:xmpp-sasl inval...
  SASL_INVALID_MECHANISM = 'urn:ietf:params:xml:ns:xmpp-sasl inv...
  SASL_MECHANISM_TOO_WEAK = 'urn:ietf:params:xml:ns:xmpp-sasl me...
  SASL_NOT_AUTHORIZED = 'urn:ietf:params:xml:ns:xmpp-sasl not-au...
  SASL_TEMPORARY_AUTH_FAILURE = 'urn:ietf:params:xml:ns:xmpp-sas...
  STREAM_BAD_FORMAT = 'urn:ietf:params:xml:ns:xmpp-streams bad-f...
  STREAM_BAD_NAMESPACE_PREFIX = 'urn:ietf:params:xml:ns:xmpp-str...
  STREAM_CONFLICT = 'urn:ietf:params:xml:ns:xmpp-streams conflict'
  STREAM_CONNECTION_TIMEOUT = 'urn:ietf:params:xml:ns:xmpp-strea...
  STREAM_HOST_GONE = 'urn:ietf:params:xml:ns:xmpp-streams host-g...
  STREAM_HOST_UNKNOWN = 'urn:ietf:params:xml:ns:xmpp-streams hos...
  STREAM_IMPROPER_ADDRESSING = 'urn:ietf:params:xml:ns:xmpp-stre...
  STREAM_INTERNAL_SERVER_ERROR = 'urn:ietf:params:xml:ns:xmpp-st...
  STREAM_INVALID_FROM = 'urn:ietf:params:xml:ns:xmpp-streams inv...
  STREAM_INVALID_ID = 'urn:ietf:params:xml:ns:xmpp-streams inval...
  STREAM_INVALID_NAMESPACE = 'urn:ietf:params:xml:ns:xmpp-stream...
  STREAM_INVALID_XML = 'urn:ietf:params:xml:ns:xmpp-streams inva...
  STREAM_NOT_AUTHORIZED = 'urn:ietf:params:xml:ns:xmpp-streams n...
  STREAM_POLICY_VIOLATION = 'urn:ietf:params:xml:ns:xmpp-streams...
  STREAM_REMOTE_CONNECTION_FAILED = 'urn:ietf:params:xml:ns:xmpp...
  STREAM_RESOURCE_CONSTRAINT = 'urn:ietf:params:xml:ns:xmpp-stre...
  STREAM_RESTRICTED_XML = 'urn:ietf:params:xml:ns:xmpp-streams r...
  STREAM_SEE_OTHER_HOST = 'urn:ietf:params:xml:ns:xmpp-streams s...
  STREAM_SYSTEM_SHUTDOWN = 'urn:ietf:params:xml:ns:xmpp-streams ...
  STREAM_UNDEFINED_CONDITION = 'urn:ietf:params:xml:ns:xmpp-stre...
  STREAM_UNSUPPORTED_ENCODING = 'urn:ietf:params:xml:ns:xmpp-str...
  STREAM_UNSUPPORTED_STANZA_TYPE = 'urn:ietf:params:xml:ns:xmpp-...
  STREAM_UNSUPPORTED_VERSION = 'urn:ietf:params:xml:ns:xmpp-stre...
  STREAM_XML_NOT_WELL_FORMED = 'urn:ietf:params:xml:ns:xmpp-stre...
  name = 'SASL_TEMPORARY_AUTH_FAILURE'
  sasl_error_conditions = '\naborted -- -- -- The receiving en...
  stream_exceptions = {'bad-format': <class 'common.xmpp.protoco...
  xmpp_stanza_error_conditions = '\nbad-request -- 400 -- modify...
  xmpp_stream_error_conditions = '\nbad-format -- -- -- The en...

Imports: BOSHBody, BadFormat, BadNamespacePrefix, Conflict, ConnectionTimeout, DataField, DataForm, Error, ErrorNode, HostGone, HostUnknown, ImproperAddressing, InternalServerError, InvalidFrom, InvalidID, InvalidNamespace, InvalidXML, Iq, JID, Message, Node, NodeBuilder, NodeProcessed, NotAuthorized, PlugIn, PolicyViolation, Presence, Protocol, RemoteConnectionFailed, ResourceConstraint, RestrictedXML, SeeOtherHost, StreamError, SystemShutdown, UndefinedCondition, UnsupportedEncoding, UnsupportedStanzaType, UnsupportedVersion, XMLNotWellFormed, isErrorNode, isResultNode, math, time


Variables Details [hide private]

DBG_COMMANDS

Value:
'commands'

ERRORS

Value:
{'urn:ietf:params:xml:ns:xmpp-sasl aborted': ['',
                                              '',
                                              'The receiving entity ac\
knowledges an <abort/> element sent by the initiating entity; sent in \
reply to the <abort/> element.'],
 'urn:ietf:params:xml:ns:xmpp-sasl incorrect-encoding': ['',
                                                         '',
                                                         'The data pro\
...

ERR_BAD_REQUEST

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas bad-request'

ERR_CONFLICT

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas conflict'

ERR_FEATURE_NOT_IMPLEMENTED

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas feature-not-implemented'

ERR_FORBIDDEN

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas forbidden'

ERR_GONE

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas gone'

ERR_INTERNAL_SERVER_ERROR

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas internal-server-error'

ERR_ITEM_NOT_FOUND

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas item-not-found'

ERR_JID_MALFORMED

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas jid-malformed'

ERR_NOT_ACCEPTABLE

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas not-acceptable'

ERR_NOT_ALLOWED

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas not-allowed'

ERR_NOT_AUTHORIZED

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas not-authorized'

ERR_PAYMENT_REQUIRED

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas payment-required'

ERR_RECIPIENT_UNAVAILABLE

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas recipient-unavailable'

ERR_REDIRECT

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas redirect'

ERR_REGISTRATION_REQUIRED

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas registration-required'

ERR_REMOTE_SERVER_NOT_FOUND

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas remote-server-not-found'

ERR_REMOTE_SERVER_TIMEOUT

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas remote-server-timeout'

ERR_RESOURCE_CONSTRAINT

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas resource-constraint'

ERR_SERVICE_UNAVAILABLE

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas service-unavailable'

ERR_SUBSCRIPTION_REQUIRED

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas subscription-required'

ERR_UNDEFINED_CONDITION

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas undefined-condition'

ERR_UNEXPECTED_REQUEST

Value:
'urn:ietf:params:xml:ns:xmpp-stanzas unexpected-request'

NS_ACTIVITY

Value:
'http://jabber.org/protocol/activity'

NS_ADDRESS

Value:
'http://jabber.org/protocol/address'

NS_AGENTS

Value:
'jabber:iq:agents'

NS_AMP

Value:
'http://jabber.org/protocol/amp'

NS_AMP_ERRORS

Value:
'http://jabber.org/protocol/amp#errors'

NS_AUTH

Value:
'jabber:iq:auth'

NS_AVATAR

Value:
'http://www.xmpp.org/extensions/xep-0084.html#ns-metadata'

NS_BIND

Value:
'urn:ietf:params:xml:ns:xmpp-bind'

NS_BROWSE

Value:
'jabber:iq:browse'

NS_BROWSING

Value:
'http://jabber.org/protocol/browsing'

NS_BYTESTREAM

Value:
'http://jabber.org/protocol/bytestreams'

NS_CAPS

Value:
'http://jabber.org/protocol/caps'

NS_CHATSTATES

Value:
'http://jabber.org/protocol/chatstates'

NS_CHATTING

Value:
'http://jabber.org/protocol/chatting'

NS_CLIENT

Value:
'jabber:client'

NS_COMMANDS

Value:
'http://jabber.org/protocol/commands'

NS_COMPONENT_1

Value:
'http://jabberd.jabberstudio.org/ns/component/1.0'

NS_COMPONENT_ACCEPT

Value:
'jabber:component:accept'

NS_COMPRESS

Value:
'http://jabber.org/protocol/compress'

NS_CONFERENCE

Value:
'jabber:x:conference'

NS_DATA

Value:
'jabber:x:data'

NS_DATA_LAYOUT

Value:
'http://jabber.org/protocol/xdata-layout'

NS_DATA_VALIDATE

Value:
'http://jabber.org/protocol/xdata-validate'

NS_DELAY

Value:
'jabber:x:delay'

NS_DELAY2

Value:
'urn:xmpp:delay'

NS_DIALBACK

Value:
'jabber:server:dialback'

NS_DISCO

Value:
'http://jabber.org/protocol/disco'

NS_DISCO_INFO

Value:
'http://jabber.org/protocol/disco#info'

NS_DISCO_ITEMS

Value:
'http://jabber.org/protocol/disco#items'

NS_ENCRYPTED

Value:
'jabber:x:encrypted'

NS_ESESSION

Value:
'http://www.xmpp.org/extensions/xep-0116.html#ns'

NS_ESESSION_INIT

Value:
'http://www.xmpp.org/extensions/xep-0116.html#ns-init'

NS_EVENT

Value:
'jabber:x:event'

NS_FEATURE

Value:
'http://jabber.org/protocol/feature-neg'

NS_FILE

Value:
'http://jabber.org/protocol/si/profile/file-transfer'

NS_GAMING

Value:
'http://jabber.org/protocol/gaming'

NS_GEOLOC

Value:
'http://jabber.org/protocol/geoloc'

NS_GMAILNOTIFY

Value:
'google:mail:notify'

NS_GROUPCHAT

Value:
'gc-1.0'

NS_GTALKSETTING

Value:
'google:setting'

NS_HTTP_AUTH

Value:
'http://jabber.org/protocol/http-auth'

NS_HTTP_BIND

Value:
'http://jabber.org/protocol/httpbind'

NS_IBB

Value:
'http://jabber.org/protocol/ibb'

NS_INVISIBLE

Value:
'presence-invisible'

NS_IQ

Value:
'iq'

NS_LAST

Value:
'jabber:iq:last'

NS_MESSAGE

Value:
'message'

NS_MOOD

Value:
'http://jabber.org/protocol/mood'

NS_MUC

Value:
'http://jabber.org/protocol/muc'

NS_MUC_ADMIN

Value:
'http://jabber.org/protocol/muc#admin'

NS_MUC_CONFIG

Value:
'http://jabber.org/protocol/muc#roomconfig'

NS_MUC_OWNER

Value:
'http://jabber.org/protocol/muc#owner'

NS_MUC_UNIQUE

Value:
'http://jabber.org/protocol/muc#unique'

NS_MUC_USER

Value:
'http://jabber.org/protocol/muc#user'

NS_NICK

Value:
'http://jabber.org/protocol/nick'

NS_OFFLINE

Value:
'http://www.jabber.org/jeps/jep-0030.html'