| 1 | |
|---|
| 2 | OpenXCAP |
|---|
| 3 | -------- |
|---|
| 4 | |
|---|
| 5 | Copyright (c) 2007-2008 AG Projects |
|---|
| 6 | http://ag-projects.com |
|---|
| 7 | |
|---|
| 8 | Authors: Mircea Amarascu, Lucian Stanescu, Denis Bilenko |
|---|
| 9 | |
|---|
| 10 | |
|---|
| 11 | License |
|---|
| 12 | ------- |
|---|
| 13 | |
|---|
| 14 | See LICENSE file. |
|---|
| 15 | |
|---|
| 16 | |
|---|
| 17 | Project description |
|---|
| 18 | ------------------- |
|---|
| 19 | |
|---|
| 20 | XCAP protocol allows a client to read, write, and modify application |
|---|
| 21 | configuration data stored in XML format on a server. XCAP maps XML document |
|---|
| 22 | sub-trees and element attributes to HTTP URIs, so that these components can |
|---|
| 23 | be directly accessed by HTTP. An XCAP server is used by the XCAP clients to |
|---|
| 24 | store data like Presence policy in combination with a SIP Presence server |
|---|
| 25 | that supports PUBLISH/SUBSCRIBE/NOTIFY methods to provide a complete |
|---|
| 26 | [http://www.tech-invite.com/Ti-sip-WGs.html#wg-simple SIP SIMPLE] server |
|---|
| 27 | solution. |
|---|
| 28 | |
|---|
| 29 | The XCAP server is used as a policy decision maker by the SIP Presence |
|---|
| 30 | server to manage the subscriptions and notifications of presence information |
|---|
| 31 | based on end-user controlled preferences. The XCAP server can also be used |
|---|
| 32 | to publish to SIP devices information retrieved from external sources and |
|---|
| 33 | using different APIs acting like a bridge between real-time communications |
|---|
| 34 | based on SIP protocol and other web technologies like SOAP/XML. |
|---|
| 35 | |
|---|
| 36 | OpenXCAP is an open source, easy extensible, fully featured XCAP server with |
|---|
| 37 | TLS security and support for multiple realms. The server is written in |
|---|
| 38 | Python programming language and is based on the following RFCs: |
|---|
| 39 | |
|---|
| 40 | - The Extensible Markup Language Configuration Access Protocol (RFC 4825) |
|---|
| 41 | |
|---|
| 42 | - Formats for Representing Resource Lists (RFC 4826) |
|---|
| 43 | |
|---|
| 44 | - Usage for Manipulating Presence Document Contents (RFC 4827) |
|---|
| 45 | |
|---|
| 46 | - Presence Authorization Rules (draft-ietf-simple-presence-rules-10) |
|---|
| 47 | |
|---|
| 48 | |
|---|
| 49 | Features |
|---|
| 50 | -------- |
|---|
| 51 | |
|---|
| 52 | Supported XCAP applications |
|---|
| 53 | |
|---|
| 54 | - Resource lists (auid = resource-lists). A resource lists application |
|---|
| 55 | is any application that needs access to a list of resources, identified |
|---|
| 56 | by a URI, to which operations, such as subscriptions, can be applied. |
|---|
| 57 | |
|---|
| 58 | - RLS Services (auid = rls-services). A Resource List Server (RLS) |
|---|
| 59 | services application is Session Initiation Protocol (SIP) application |
|---|
| 60 | whereby a server receives SIP SUBSCRIBE requests for resource, and |
|---|
| 61 | generates subscriptions towards the resource list. For practical |
|---|
| 62 | purposes, uri attributes in <service> do not have global scope, i.e. |
|---|
| 63 | several users may have services defined with the same uris, which is the |
|---|
| 64 | opposite of the RFC. Each user can maintain the same service uris, the |
|---|
| 65 | server identifies the right document from the XCAP Request URL. |
|---|
| 66 | Requesting rls-services/global/index as described in the RFC does not |
|---|
| 67 | seem to add any value and it was not implemented. |
|---|
| 68 | |
|---|
| 69 | - PIDF Manipulation (auid = pidf-manipulation). Pidf-manipulation |
|---|
| 70 | application usage defines how XCAP is used to manipulate the contents of |
|---|
| 71 | PIDF based presence documents. |
|---|
| 72 | |
|---|
| 73 | - Presence Rules (auid = presence-rules). A Presence Rules application |
|---|
| 74 | is an application which uses authorization policies, also known as |
|---|
| 75 | authorization rules, to specify what presence information can be given |
|---|
| 76 | to which watchers, and when. |
|---|
| 77 | |
|---|
| 78 | - Watchers (auid = watchers). This this a custom application that queries |
|---|
| 79 | the sip proxy database for a list of presence watchers and their status. |
|---|
| 80 | The XML schema for this application can be found in |
|---|
| 81 | xcap/xml-schemas/watchers.xsd. This application is read-only. |
|---|
| 82 | |
|---|
| 83 | |
|---|
| 84 | Data storage |
|---|
| 85 | |
|---|
| 86 | OpenXCAP server supports multiple back-end storage systems and works out of |
|---|
| 87 | the box with OpenSER Proxy/Registrar/Presence server |
|---|
| 88 | |
|---|
| 89 | |
|---|
| 90 | Publishing xcap-diff events |
|---|
| 91 | |
|---|
| 92 | OpenXCAP server can publish xcap-diff when a change occurs as described |
|---|
| 93 | in http://tools.ietf.org/html/draft-ietf-simple-xcap-diff-09 |
|---|
| 94 | |
|---|
| 95 | Generated event is published via OpenSER's management interface (function |
|---|
| 96 | 'publish' from pua_mi module). Checkout out sample openser.cfg in openser dir. |
|---|
| 97 | OpenSER module presence_xcapdiff registers 'xcap-diff' event with presence in pua. |
|---|
| 98 | |
|---|
| 99 | To enable this feature in OpenXCAP backend 'OpenSER' must be used and |
|---|
| 100 | enable_publish_xcapdiff parameter must be set to 'yes'. |
|---|
| 101 | |
|---|
| 102 | OpenXCAP doesn't put diff information into events, only uris and etags of |
|---|
| 103 | affected documents. Client must use then external document retrieval. |
|---|
| 104 | (This corresponds to rows 2, 4 and 5 in Figure 1 of the draft) |
|---|
| 105 | |
|---|
| 106 | There's no way to indicate what uris client has interest in, all changes |
|---|
| 107 | to the documents belonging to given user are published. |
|---|
| 108 | |
|---|
| 109 | |
|---|
| 110 | XCAP clients |
|---|
| 111 | ------------ |
|---|
| 112 | |
|---|
| 113 | No server is useful without clients supporting their features. Here is list |
|---|
| 114 | with XCAP clients known to be working with OpenXCAP: |
|---|
| 115 | |
|---|
| 116 | - OpenSER from http://openser.org |
|---|
| 117 | |
|---|
| 118 | - simple-soap-proxy. This client allows publication of arbitrary |
|---|
| 119 | information and policy management using an easy to use SOAP/XML |
|---|
| 120 | interface |
|---|
| 121 | |
|---|
| 122 | - Eyebeam from http://www.counterpath.com |
|---|
| 123 | |
|---|
| 124 | |
|---|
| 125 | Support |
|---|
| 126 | ------- |
|---|
| 127 | |
|---|
| 128 | The project is supported via this wiki collaboration system provided at: |
|---|
| 129 | |
|---|
| 130 | http://openxcap.org |
|---|
| 131 | |
|---|
| 132 | - To open ticket please Register first. The ticketing support system is |
|---|
| 133 | available only for registered users. Please beware that the support is |
|---|
| 134 | provided by the community on a best-effort basis. |
|---|
| 135 | |
|---|
| 136 | Commercial support or other licensing options are available from: |
|---|
| 137 | AG Projects http://ag-projects.com |
|---|