Currently you are not logged in.

 Login | Register 

Main

Resources

Training

Events

Development

Resources -> Documentation -> Presence -> Presence Server -> Xcap_client module

  1. Exported Parameters
  2. Developer's Guide
  3. Module Readme

Exported Parameters

  • db_url(str): database URL
  • xcap_table(str): the name of the database table used for storing the XCAP documents retrieved from the XCAP servers
  • periodical_query(int): flag to disable periodical query as a method of checking if an update for a stored document occurred on the server; if this flag is unset, the server must have the capability to announce an update by issuing the exported MI command - refreshXcapDoc
  • query_period(int): the time interval in seconds at which the servers will be queried for updates (used if periodical_query flag is set)

Developer's Guide

This module represents an XCAP client interface for OpenSIPS with retrieving capabilities only. It is meant to be used by other OpenSIPS modules that use XCAP storage. Now this module is used by presence_xml and rls modules.

Presence_xml and xcap_client interaction(when integrated_xcap_client parameter is not set)
Presence_xml module assumes that in the database table 'xcap' there is always the newest version of an xcap document that he has previously sent a request for to xcap_client module. When a searched document is not found in the table, a request is sent to the xcap_client module, saying it to retrieve the document from the xcap server in future synchronize the version in the database table with that on the server, by calling the function getNewDoc.

The API contains the following functions:

  • xcap_get_elem_t get_elem
typedef char* (*xcap_get_elem_t)(xcap_get_req_t req, char** etag);
This function retrieves an element from the excap server( either a hole document or a node from the document.
  • xcapGetNewDoc_t getNewDoc;
typedef char* (*xcapGetNewDoc_t)(xcap_get_req_t req, str user, str domain);
This function is a request to fetch the document indicated in the request strucuture and handle its update. Calling this function will ensures that in the database table will always be the updated version of the document.
The argument of the two functions is a structure containing the request. It has the following fields:
  • char* xcap_root: the path to the location where the XCAP documetns are stored ( includes the server address and the local path; ex: http://xcap-server.com/xcap-root/)
  • unsigned int port: the port where the server is listening , if different than default 80
  • xcap_doc_sel_t doc_sel: a structure that indicates the selection of the document
  • xcap_node_sel_t* node_sel: a structure that indicates the selection of the node inside the document
  • char* etag: an XCAP etag
  • int match_type: the way to use the etag for selection in the HTTP request; it can be IF_MATCH or IF_NONE_MATCH.

The xcap_doc_sel_t has the following structure:

  • str auid: application defined Unique ID
  • int doc_type: the document type ; if can have one of the values: PRES_RULES, RESOURCE_LIST, RLS_SERVICE, PIDF_MANIPULATION.
  • int type: the type of the path segment after the AUID which must either be GLOBAL_TYPE (for "global") or USERS_TYPE (for "users")
  • str xid: the XCAP User Identifier if type is USERS_TYPE
  • str filename: the name of the file

Example: For selecting a presence authorization rules document the strucuture is filed like this:

	xcap_doc_sel_t doc_sel;

	doc_sel.auid.s= "presence-rules";
	doc_sel.auid.len= strlen("presence-rules");
	doc_sel.doc_type= PRES_RULES;
	doc_sel.type= USERS_TYPE;
	doc_sel.xid= uri;
	doc_sel.filename.s= "index";
	doc_sel.filename.len= 5;

The xcap_node_sel_t structure that identifies a node from a document can be constructed using functions from the API:

  • xcap_nodeSel_init_t int_node_sel: initializeaza o structura de tip
typedef xcap_node_sel_t* (*xcap_nodeSel_init_t )(void);
  • xcap_nodeSel_add_step_t add_step : add
typedef xcap_node_sel_t* (*xcap_nodeSel_add_step_t)(xcap_node_sel_t* curr_sel, str* name, str* namespace, int pos, attr_test_t* attr_test, str* extra_sel);
The attr_test in the parameters list is to be used in case an attribute test should be made to select the node. The definition of the structure is:
typedef struct att_test
{
str name;
str value;
}attr_test_t;
  • xcap_nodeSel_add_terminal_t add_terminal;
typedef xcap_node_sel_t* (*xcap_nodeSel_add_terminal_t)(xcap_node_sel_t* curr_sel, char* attr_sel, char* namespace_sel, char* extra_sel );
  • xcap_nodeSel_free_t free_node_sel;
typedef void (*xcap_nodeSel_free_t)(xcap_node_sel_t* node);

There is also one function which allows registering a callback to be called by the module when a change occurs in a document:

  • register_xcapcb_t register_xcb; /* function to register a callback to document changes*/

Module Readme

You can read the modules's readme here .

Your VoIP Account

News

OpenSIPS 1.6.2

11th of March 2010 OpenSIPS 1.6.2 is brings new features...
Read more...

OpenSIPS Control Panel 4.0

08th of March 2010 OpenSIPS CP 4.0 comes with user provisioning...
Read more...

Conference on "OpenSIPS 2.0"

5th of March 2010 VoIP Users Conference will host an audio conference
Read more...

OpenSIPS webinar

25th of February 2010 Next webinars is Explaining the default script
Read more...

OpenSIPS 2.0 Design

15th of February 2010 Design of OpenSIPS 2.0 is unveiled
Read more...

OpenSIPS webinar

28th of January 2010 Next OpenSIPS webinars is SIP Introduction
Read more...

Building Telephony Systems with OpenSIPS 1.6

21st of January 2010 New edition is available...
Read more...

OpenSIPS 1.6.1 is released

21st of December 2009 OpenSIPS 1.6.1 minor release is out...
Read more...

OpenSIPS Development Course

17th of December 2009 OpenSIPS Devel Course for 2010...
Read more...

OpenSIPS Bootcamps 2010

09th of December 2009 2010 Schedule for Bootcamp events...
Read more...

User Location is faster

13th of November 2009 USRLOC is 3 time faster than before...
Read more...

OpenSIPS Control Panel 3.0

30th of October 2009 OpenSIPS CP 3.0 major release is out...
Read more...

OpenSIPS 1.6.0 is released

16th of October 2009 OpenSIPS 1.6.0 major release is out...
Read more...

OpenSIPS VoIP Service

21th of September 2009 OpenSIPS project offers free VoIP services...
Read more...

OpenSIPS & Astricon

21th of September 2009 OpenSIPS talks and exhibits at Astricon 2009...
Read more...

SVN freeze

17th of September 2009 SVN trunk gets frozen to prepare 1.6 release...
Read more...

New types of script routes

10th of September 2009 New additions to configuration file routes...
Read more...

STUN server

7th of September 2009 OpenSIPS has now a built-in STUN server...
Read more...

Pseudovariable implementation extended

3rd of September 2009 Added new operations for pvars to give more power to the script writer...
Read more...

OpenSIPS Asterisk Integration

30th of August 2009 Tutorial for realtime integration...
Read more...

OpenSIPS 1.5.3 is released

27th of August 2009 OpenSIPS 1.5.3 minor release is out...
Read more...

AAA and RADIUS support

18th of April 2009 New AAA API and RADIUS enhancements in OpenSIPS
Read more...

OpenSIPS webinar

4th of April 2009 Next OpenSIPS webinars is Types of Routs in OpenSIPS
Read more...

B2BUA

3rd of August 2009 A B2BUA signaling implementation in OpenSIPS
Read more...

DB virtual

23th of July 2009 A DB conn mixer for failover, parallel and LB
Read more...

Codec manipulation

23th of July 2009 SDP codecs and priorities manipulation
Read more...

Memcached interfacing

16th of July 2009 memcached support for memory caching API
Read more...

OpenSIPS 1.5.2 is released

15th of July 2009 OpenSIPS 1.5.2 minor release is out...
Read more...

OpenSIPS@ClueCon

14th of July 2009 OpenSIPS talks at ClueCon
Read more...

OpenSIPS webinar

30th of June 2009 Next OpenSIPS webinars is Routing in SIP
Read more...

REGISTRAR enhancements

29th of June 2009 REGISTRAR module becomes more flexible
Read more...

OpenSIPS free webinars

01st of June 2009 OpenSIPS webinars program was launched
Read more...

OpenSIPS-CP 2.0 is released

13rd of April 2009 OpenSIPS Control Panel 2.0 major release is out...
Read more...

OpenSIPS 1.5.1 is released

13rd of April 2009 OpenSIPS 1.5.1 minor release is out...
Read more...

OpenSIPS 1.5.0 is released

23rd of March 2009 OpenSIPS 1.5.0 major release is out...
Read more...

OpenSIPS 1.4.5 is released

23rd of March 2009 OpenSIPS 1.4.5 minor release is out...
Read more...

OpenSIPS as Load Balancer

4th of March 2009
How to do real Load-Balancing for media servers ...
Read more...

OpenSIPS at Amoocon (AsteriskTAG)

24th of February 2009
3 hot topics presented at Amoocon ...
Read more...


Edit | History | Print | Recent Changes | Search
Page last modified on July 24, 2008, at 10:18 AM