Project

General

Profile

Xcapclient » History » Revision 9

Revision 8 (Adrian Georgescu, 10/26/2008 02:10 PM) → Revision 9/22 (Adrian Georgescu, 10/26/2008 02:11 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)]] 

 XCAP protocol, defined in RFC 4825, allows a client to read, write, and 
 modify application configuration data stored in XML format on a server. XCAP 
 maps XML document sub-trees and element attributes to HTTP URIs, so that 
 these components can be directly accessed by HTTP. An XCAP server used by 
 XCAP clients to store data like presence policy in combination with a SIP 
 Presence server that supports PUBLISH/SUBSCRIBE/NOTIFY SIP methods can 
 provide a complete SIP SIMPLE solution. 

 The XCAP client example script provided by this package can be used to 
 manage documents on an XCAP server. 

 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 
 <?xml version='1.0' encoding='UTF-8'?> 
 <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 
 <?xml version="1.0" encoding="UTF-8"?> 
 <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:bob@example.com"/> 
 <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:40316600024@abc.com"/> 
 </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 
 <?xml version="1.0" encoding="UTF-8"?> 
    <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:bill@example.com"> 
       <display-name>Bill Doe</display-name> 
      </entry> 
      <entry-ref ref="resource-lists/users/sip:bill@example.com/index/~~/resource-lists/list%5b@name=%22list1%22%5d/entry%5b@uri=%22sip:petri@example.com%22%5d"/> 
      <list name="close-friends"> 
       <display-name>Close Friends</display-name> 
       <entry uri="sip:joe@example.com"> 
        <display-name>Joe Smith</display-name> 
       </entry> 
       <entry uri="sip:nancy@example.com"> 
        <display-name>Nancy Gross</display-name> 
       </entry> 
       <external anchor="http://xcap.example.org/resource-lists/users/sip:a@example.org/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 
 <?xml version="1.0" encoding="UTF-8"?> 
    <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:marketing@example.com"> 
       <list name="marketing"> 
         <rl:entry uri="sip:joe@example.com"/> 
         <rl:entry uri="sip:sudhir@example.com"/> 
       </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 
 }}}