« Previous - Version 8/22 (diff) - Next » - Current version
Adrian Georgescu, 10/26/2008 02:10 pm


xcapclient

To use this script you must to have a valid [wiki:configuration_file configuration file].

=== Description ===

[[Image(http://www.openxcap.org/chrome/site/SIPSIMPLE-concept.png, align=right, nolink)]]

This client is part of python-xcaplib package provided by [http://openxcap.org OpenXCAP] server. If you have installed bash_completion.d/xcapclient you can use TAB completion to browse through the content of the XCAP server documents/nodes/atributes. For more information read the documentation that comes with the package.

{{{
adigeo@ag-imac3:~$xcapclient -h

xcapclient: Client for managing full or partial XML documents on XCAP servers (RFC 4825)
xcapclient [OPTIONS] --app AUID ACTION [NODE-SELECTOR]
ACTION is an operation to perform: get, replace, insert, put or delete.
Presence of NODE-SELECTOR indicates that action is to be performed on an
element or an attribute.

Options:
h, --help show this help message and exit
-a NAME, --account-name=NAME
the account name from which to read account settings.
Corresponds to section Account_NAME in the
configuration file. If not supplied, the section
[Account] will be read.
--show-config show options from the configuration file; use
together with --account-name
--xcap-root=XCAP_ROOT XCAP root, e.g. https://xcap.example.com/xcap-root
--sip-address=SIP_ADDRESS
SIP address of the user in the form username@domain
-p PASSWORD, --password=PASSWORD
password to use if authentication is required. If not
supplied will be asked interactively
--app=AUID Application Unique ID. There's no default value;
however, it may be guessed from NODE-SELECTOR or from
the input file. Known apps: watchers, pidf

manipulation, rls-services, resource-lists, xcap-
caps, pres-rules, test-app
--filename=FILENAME
-c CONTEXT, --context=CONTEXT
document context, users or global; default is users
for everything except xcap-caps
--etag=ETAG perform a conditional operation
-i INPUT_FILENAME source file for the PUT request; default is <stdin>
-o OUTPUT_FILENAME output file for the body of the server response
(successful or not); default is <stdout>
-d, --dump print HTTP traffic to stderr
}}}

Example for XCAP server capabilities (xcap-caps) {{{
adigeo@ag-imac3:~$xcapclient -a alice --app xcap-caps GET
get https://xcap.sipthor.net/xcap-root/xcap-caps/global/index
etag: "ab12efdd1aff88296deee1aa195b823e"
content-type: application/xcap-caps+xml
content-length: 826

<xcap-caps xmlns='urn:ietf:params:xml:ns:xcap-caps'>
<auids>
<auid>watchers</auid>
<auid>org.openmobilealliance.pres-rules</auid>
<auid>rls-services</auid>
<auid>pidf-manipulation</auid>
<auid>xcap-caps</auid>
<auid>test-app</auid>
<auid>resource-lists</auid>
<auid>pres-rules</auid>
</auids>
<extensions>
</extensions>
<namespaces>
<namespace>http://openxcap.org/ns/watchers</namespace>
<namespace>urn:ietf:params:xml:ns:pres-rules</namespace>
<namespace>urn:ietf:params:xml:ns:rls-services</namespace>
<namespace>urn:ietf:params:xml:ns:pidf</namespace>
<namespace>urn:ietf:params:xml:ns:xcap-caps</namespace>
<namespace>test-app</namespace>
<namespace>urn:ietf:params:xml:ns:resource-lists</namespace>
<namespace>urn:ietf:params:xml:ns:pres-rules</namespace>
</namespaces>
</xcap-caps>
}}} Example for pres-rules XCAP document

=== PUT ===

{{{
adigeo@ag-imac3:~$xcapclient -a alice PUT -i work/python-xcaplib/examples/pres-rules.xml
put https://xcap.sipthor.net/xcap-root/pres-rules/users/sip:alice@example.com/index
201 Created
etag: "345ba7c1ce125b2ff2438c19b25b4077"
content-type: application/auth-policy+xml
}}}

=== GET ===

{{{
adigeo@ag-imac3:~$xcapclient -a alice --app pres-rules get
get https://xcap.sipthor.net/xcap-root/pres-rules/users/sip:alice@example.com/index
etag: "345ba7c1ce125b2ff2438c19b25b4077"
content-type: application/auth-policy+xml
content-length: 939

<ruleset xmlns="urn:ietf:params:xml:ns:common-policy" xmlns:pr="urn:ietf:params:xml:ns:pres-rules" xmlns:cp="www.counterpath.com/privacy-lists">
<rule id="pres_whitelist">
<conditions>
<identity>
<one id="sip:"/>
<one id="sip:alice@example.com"/>
<many domain="ag-projects.com">
</many>
</identity>
</conditions>
<actions>
<pr:sub-handling>allow</pr:sub-handling>
</actions>
<transformations>
<pr:provide-services>
<pr:all-services/>
</pr:provide-services>
<pr:provide-persons>
<pr:all-persons/>
</pr:provide-persons>
<pr:provide-devices>
<pr:all-devices/>
</pr:provide-devices>
<pr:provide-all-attributes/>
</transformations>
</rule>
<rule id="pres_blacklist">
<conditions>
<identity>
<one id="sip:"/>
</identity>
</conditions>
<actions>
<pr:sub-handling>block</pr:sub-handling>
</actions>
<transformations/>
</rule>
</ruleset>
}}}

=== DELETE ===

{{{
adigeo@ag-imac3:~$xcapclient -a alice --app pres-rules DELETE
delete https://xcap.sipthor.net/xcap-root/pres-rules/users/sip:alice@example.com/index
200 OK
content-type: application/auth-policy+xml
}}}

Example for resource-lists XCAP document

=== PUT ===

{{{
adigeo@ag-imac3:~$xcapclient -a alice PUT -i work/python-xcaplib/examples/resource-lists.xml
put https://xcap.sipthor.net/xcap-root/resource-lists/users/sip:alice@example.com/index
201 Created
etag: "f8c47352d61b5b256ee80d964e03efd6"
content-type: application/resource-lists+xml
}}}

=== GET ===

{{{
adigeo@ag-imac3:~$xcapclient -a alice --app resource-lists GET
get https://xcap.sipthor.net/xcap-root/resource-lists/users/sip:alice@example.com/index
etag: "f8c47352d61b5b256ee80d964e03efd6"
content-type: application/resource-lists+xml
content-length: 991

<resource-lists xmlns="urn:ietf:params:xml:ns:resource-lists"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<list name="friends">
<entry uri="sip:">
<display-name>Bill Doe</display-name>
</entry>
<entry-ref ref="resource-lists/users/sip:/index/~~/resource-lists/list%5b@name=%22list1%22%5d/entry%5b@uri=%22sip:%22%5d"/>
<list name="close-friends">
<display-name>Close Friends</display-name>
<entry uri="sip:">
<display-name>Joe Smith</display-name>
</entry>
<entry uri="sip:">
<display-name>Nancy Gross</display-name>
</entry>
<external anchor="http://xcap.example.org/resource-lists/users/sip:/index/~~/resource-lists/list%5b@name=%22mkting%22%5d">
<display-name>Marketing</display-name>
</external>
</list>
</list>
</resource-lists>
}}}

=== DELETE ===

{{{
adigeo@ag-imac3:~$xcapclient -a alice --app resource-lists DELETE
delete https://xcap.sipthor.net/xcap-root/resource-lists/users/sip:alice@example.com/index
200 OK
content-type: application/resource-lists+xml
adigeo@ag-imac3:~$
}}}

Example for rls-services XCAP document

=== PUT ===

{{{
adigeo@ag-imac3:~$xcapclient -a alice PUT -i work/python-xcaplib/examples/rls-services.xml
put https://xcap.sipthor.net/xcap-root/rls-services/users/sip:alice@example.com/index
201 Created
etag: "44f5fca1b08352815ee12f1a0c32d812"
content-type: application/rls-services+xml
}}}

=== GET ===

{{{
adigeo@ag-imac3:~$xcapclient -a alice --app rls-services GET
get https://xcap.sipthor.net/xcap-root/rls-services/users/sip:alice@example.com/index
etag: "44f5fca1b08352815ee12f1a0c32d812"
content-type: application/rls-services+xml
content-length: 797

<rls-services xmlns="urn:ietf:params:xml:ns:rls-services"
xmlns:rl="urn:ietf:params:xml:ns:resource-lists"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<service uri="sip:mybuddies@example.com">
<resource-list>https://xcap.example.com/xcap-root/resource-lists/users/sip:alice@example.com/index/~~/resource-lists/list%5b@name=%22l1%22%5d</resource-list>
<packages>
<package>presence</package>
</packages>
</service>
<service uri="sip:">
<list name="marketing">
<rl:entry uri="sip:"/>
<rl:entry uri="sip:"/>
</list>
<packages>
<package>presence</package>
</packages>
</service>
</rls-services>
}}}

=== DELETE ===

{{{
adigeo@ag-imac3:~$xcapclient -a alice --app rls-services DELETE
delete https://xcap.sipthor.net/xcap-root/rls-services/users/sip:alice@example.com/index
200 OK
content-type: application/rls-services+xml
}}}