SleekPubsub
SleekPubsub copied to clipboard
Publish-Subscribe Component w/ XMPP, REST, and Ad-hoc interfaces
SleekPubsub is an XMPP Publish-Subscribe implementation that aims to be a creative and flexible solution to your publish-subscribe needs. SleekPubsub implements a XEP-0060 interface, an HTTP RESTful interface, a XEP-0050 (Ad Hoc Commands) interface, and a bot/chat interface.
Credits
Author: Nathan Fritz jid: xmpp:[email protected]
Contributors: Michael Garvin
Unusual Features
- many node types -- start by overriding leaf and create your own behavior
- payloads can optionally create chat IM without pubsub payload.
- subscribe to the component and it can automatically subscribe you to a node
- subscribe to a node and the full jid that you subscribe to can be the source of all of your updates, rather than the bare component jid
RESTful Interface
All HTTP calls are protected with http-auth which is configured in the ini [rest] section
So far:
GET /default/ get the default config in json
POST /node/[node] create or reconfigure node w/ config via json
GET /node/[node] retrieve config in json
DELETE /node/[node] remove a node
GET /subscribe/[node]?jid=[jid] subscribe a jid to node
GET /unsubscribe/[node]?jid=[jid]&subid=[subscription id] unsubscribe a jid from a node
POST /publish/[node] publish to a node via xml body
GET /affiliation/[node] get node affiliations
POST /affiliations/[node] update node affiliations
**NOTE: POSTS needs to be content-type of text/json or text/xml
Usage: publish_subscribe.py [options]
Options: -h, --help show this help message and exit --daemon run as daemon -q, --quiet set logging to ERROR -d, --debug set logging to DEBUG -v, --verbose set logging to COMM -c CONFIGFILE, --config=CONFIGFILE set config file to use
Requirements
SleekXMPP github master (will tag a release soon) Python 3.x (will make 2.6 compatible soon)
Quickstart
See INSTALL file
Gotchas
- The sqlite3 db will not work if you switch between python2.6 and 3.x