Xcapclient

Version 9 (Adrian Georgescu, 10/26/2008 02:11 pm)

1 1 Adrian Georgescu
== xcapclient ==
2 1 Adrian Georgescu
3 1 Adrian Georgescu
To use this script you must to have a valid [wiki:configuration_file configuration file].
4 1 Adrian Georgescu
5 1 Adrian Georgescu
6 1 Adrian Georgescu
=== Description ===
7 1 Adrian Georgescu
8 8 Adrian Georgescu
[[Image(http://www.openxcap.org/chrome/site/SIPSIMPLE-concept.png, align=right, nolink)]]
9 8 Adrian Georgescu
10 9 Adrian Georgescu
XCAP protocol, defined in RFC 4825, allows a client to read, write, and
11 9 Adrian Georgescu
modify application configuration data stored in XML format on a server. XCAP
12 9 Adrian Georgescu
maps XML document sub-trees and element attributes to HTTP URIs, so that
13 9 Adrian Georgescu
these components can be directly accessed by HTTP. An XCAP server used by
14 9 Adrian Georgescu
XCAP clients to store data like presence policy in combination with a SIP
15 9 Adrian Georgescu
Presence server that supports PUBLISH/SUBSCRIBE/NOTIFY SIP methods can
16 9 Adrian Georgescu
provide a complete SIP SIMPLE solution.
17 9 Adrian Georgescu
18 9 Adrian Georgescu
The XCAP client example script provided by this package can be used to
19 9 Adrian Georgescu
manage documents on an XCAP server.
20 9 Adrian Georgescu
21 2 Adrian Georgescu
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.
22 1 Adrian Georgescu
23 1 Adrian Georgescu
{{{
24 1 Adrian Georgescu
adigeo@ag-imac3:~$xcapclient -h
25 1 Adrian Georgescu
26 1 Adrian Georgescu
  xcapclient: Client for managing full or partial XML documents on XCAP servers (RFC 4825)
27 1 Adrian Georgescu
  xcapclient [OPTIONS] --app AUID ACTION [NODE-SELECTOR]
28 1 Adrian Georgescu
29 1 Adrian Georgescu
  ACTION is an operation to perform: get, replace, insert, put or delete.
30 1 Adrian Georgescu
  Presence of NODE-SELECTOR indicates that action is to be performed on an
31 1 Adrian Georgescu
  element or an attribute.
32 1 Adrian Georgescu
33 1 Adrian Georgescu
Options:
34 1 Adrian Georgescu
  -h, --help             show this help message and exit
35 1 Adrian Georgescu
  -a NAME, --account-name=NAME
36 1 Adrian Georgescu
                         the account name from which to read account settings.
37 1 Adrian Georgescu
                         Corresponds to section Account_NAME in the
38 1 Adrian Georgescu
                         configuration file. If not supplied, the section
39 1 Adrian Georgescu
                         [Account] will be read.
40 1 Adrian Georgescu
  --show-config          show options from the configuration file; use
41 1 Adrian Georgescu
                         together with --account-name
42 1 Adrian Georgescu
  --xcap-root=XCAP_ROOT  XCAP root, e.g. https://xcap.example.com/xcap-root
43 1 Adrian Georgescu
  --sip-address=SIP_ADDRESS
44 1 Adrian Georgescu
                         SIP address of the user in the form username@domain
45 1 Adrian Georgescu
  -p PASSWORD, --password=PASSWORD
46 1 Adrian Georgescu
                         password to use if authentication is required. If not
47 1 Adrian Georgescu
                         supplied will be asked interactively
48 1 Adrian Georgescu
  --app=AUID             Application Unique ID. There's no default value;
49 1 Adrian Georgescu
                         however, it may be guessed from NODE-SELECTOR or from
50 1 Adrian Georgescu
                         the input file. Known apps: watchers, pidf-
51 1 Adrian Georgescu
                         manipulation, rls-services, resource-lists, xcap-
52 1 Adrian Georgescu
                         caps, pres-rules, test-app
53 1 Adrian Georgescu
  --filename=FILENAME    
54 1 Adrian Georgescu
  -c CONTEXT, --context=CONTEXT
55 1 Adrian Georgescu
                         document context, users or global; default is users
56 1 Adrian Georgescu
                         for everything except xcap-caps
57 1 Adrian Georgescu
  --etag=ETAG            perform a conditional operation
58 1 Adrian Georgescu
  -i INPUT_FILENAME      source file for the PUT request; default is <stdin>
59 1 Adrian Georgescu
  -o OUTPUT_FILENAME     output file for the body of the server response
60 1 Adrian Georgescu
                         (successful or not); default is <stdout>
61 1 Adrian Georgescu
  -d, --dump             print HTTP traffic to stderr
62 2 Adrian Georgescu
}}}
63 2 Adrian Georgescu
64 2 Adrian Georgescu
65 6 Adrian Georgescu
== Example for XCAP server capabilities (xcap-caps)  == 
66 6 Adrian Georgescu
{{{
67 6 Adrian Georgescu
adigeo@ag-imac3:~$xcapclient -a alice --app xcap-caps GET
68 6 Adrian Georgescu
get https://xcap.sipthor.net/xcap-root/xcap-caps/global/index
69 6 Adrian Georgescu
etag: "ab12efdd1aff88296deee1aa195b823e"
70 6 Adrian Georgescu
content-type: application/xcap-caps+xml
71 6 Adrian Georgescu
content-length: 826
72 6 Adrian Georgescu
<?xml version='1.0' encoding='UTF-8'?>
73 6 Adrian Georgescu
<xcap-caps xmlns='urn:ietf:params:xml:ns:xcap-caps'>
74 6 Adrian Georgescu
<auids>
75 6 Adrian Georgescu
<auid>watchers</auid>
76 6 Adrian Georgescu
<auid>org.openmobilealliance.pres-rules</auid>
77 6 Adrian Georgescu
<auid>rls-services</auid>
78 6 Adrian Georgescu
<auid>pidf-manipulation</auid>
79 6 Adrian Georgescu
<auid>xcap-caps</auid>
80 6 Adrian Georgescu
<auid>test-app</auid>
81 6 Adrian Georgescu
<auid>resource-lists</auid>
82 6 Adrian Georgescu
<auid>pres-rules</auid>
83 6 Adrian Georgescu
</auids>
84 6 Adrian Georgescu
<extensions>
85 6 Adrian Georgescu
</extensions>
86 6 Adrian Georgescu
<namespaces>
87 6 Adrian Georgescu
<namespace>http://openxcap.org/ns/watchers</namespace>
88 6 Adrian Georgescu
<namespace>urn:ietf:params:xml:ns:pres-rules</namespace>
89 6 Adrian Georgescu
<namespace>urn:ietf:params:xml:ns:rls-services</namespace>
90 6 Adrian Georgescu
<namespace>urn:ietf:params:xml:ns:pidf</namespace>
91 6 Adrian Georgescu
<namespace>urn:ietf:params:xml:ns:xcap-caps</namespace>
92 6 Adrian Georgescu
<namespace>test-app</namespace>
93 6 Adrian Georgescu
<namespace>urn:ietf:params:xml:ns:resource-lists</namespace>
94 6 Adrian Georgescu
<namespace>urn:ietf:params:xml:ns:pres-rules</namespace>
95 6 Adrian Georgescu
</namespaces>
96 6 Adrian Georgescu
</xcap-caps>
97 6 Adrian Georgescu
}}}
98 6 Adrian Georgescu
99 5 Adrian Georgescu
== Example for pres-rules XCAP document ==
100 1 Adrian Georgescu
101 3 Adrian Georgescu
=== PUT ===
102 3 Adrian Georgescu
103 2 Adrian Georgescu
{{{
104 2 Adrian Georgescu
adigeo@ag-imac3:~$xcapclient -a alice PUT -i work/python-xcaplib/examples/pres-rules.xml 
105 2 Adrian Georgescu
put https://xcap.sipthor.net/xcap-root/pres-rules/users/sip:alice@example.com/index
106 2 Adrian Georgescu
201 Created
107 2 Adrian Georgescu
etag: "345ba7c1ce125b2ff2438c19b25b4077"
108 2 Adrian Georgescu
content-type: application/auth-policy+xml
109 2 Adrian Georgescu
}}}
110 1 Adrian Georgescu
111 2 Adrian Georgescu
112 3 Adrian Georgescu
=== GET ===
113 2 Adrian Georgescu
114 2 Adrian Georgescu
{{{
115 2 Adrian Georgescu
adigeo@ag-imac3:~$xcapclient -a alice --app pres-rules get 
116 2 Adrian Georgescu
get https://xcap.sipthor.net/xcap-root/pres-rules/users/sip:alice@example.com/index
117 2 Adrian Georgescu
etag: "345ba7c1ce125b2ff2438c19b25b4077"
118 2 Adrian Georgescu
content-type: application/auth-policy+xml
119 2 Adrian Georgescu
content-length: 939
120 2 Adrian Georgescu
<?xml version="1.0" encoding="UTF-8"?>
121 2 Adrian Georgescu
<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">
122 2 Adrian Georgescu
<rule id="pres_whitelist">
123 2 Adrian Georgescu
<conditions>
124 2 Adrian Georgescu
<identity>
125 2 Adrian Georgescu
<one id="sip:bob@example.com"/>
126 2 Adrian Georgescu
<one id="sip:alice@example.com"/>
127 2 Adrian Georgescu
<many domain="ag-projects.com">
128 2 Adrian Georgescu
</many>
129 2 Adrian Georgescu
</identity>
130 2 Adrian Georgescu
</conditions>
131 2 Adrian Georgescu
<actions>
132 2 Adrian Georgescu
<pr:sub-handling>allow</pr:sub-handling>
133 2 Adrian Georgescu
</actions>
134 2 Adrian Georgescu
<transformations>
135 2 Adrian Georgescu
<pr:provide-services>
136 2 Adrian Georgescu
<pr:all-services/>
137 2 Adrian Georgescu
</pr:provide-services>
138 2 Adrian Georgescu
<pr:provide-persons>
139 2 Adrian Georgescu
<pr:all-persons/>
140 2 Adrian Georgescu
</pr:provide-persons>
141 2 Adrian Georgescu
<pr:provide-devices>
142 2 Adrian Georgescu
<pr:all-devices/>
143 2 Adrian Georgescu
</pr:provide-devices>
144 2 Adrian Georgescu
<pr:provide-all-attributes/>
145 2 Adrian Georgescu
</transformations>
146 2 Adrian Georgescu
</rule>
147 2 Adrian Georgescu
<rule id="pres_blacklist">
148 2 Adrian Georgescu
<conditions>
149 2 Adrian Georgescu
<identity>
150 2 Adrian Georgescu
<one id="sip:40316600024@abc.com"/>
151 2 Adrian Georgescu
</identity>
152 2 Adrian Georgescu
</conditions>
153 2 Adrian Georgescu
<actions>
154 2 Adrian Georgescu
<pr:sub-handling>block</pr:sub-handling>
155 2 Adrian Georgescu
</actions>
156 2 Adrian Georgescu
<transformations/>
157 2 Adrian Georgescu
</rule>
158 1 Adrian Georgescu
</ruleset>
159 2 Adrian Georgescu
}}}
160 2 Adrian Georgescu
161 3 Adrian Georgescu
=== DELETE ===
162 2 Adrian Georgescu
163 2 Adrian Georgescu
{{{
164 2 Adrian Georgescu
adigeo@ag-imac3:~$xcapclient -a alice --app pres-rules DELETE
165 1 Adrian Georgescu
delete https://xcap.sipthor.net/xcap-root/pres-rules/users/sip:alice@example.com/index
166 1 Adrian Georgescu
200 OK
167 1 Adrian Georgescu
content-type: application/auth-policy+xml
168 3 Adrian Georgescu
}}}
169 3 Adrian Georgescu
170 3 Adrian Georgescu
171 5 Adrian Georgescu
== Example for resource-lists XCAP document ==
172 3 Adrian Georgescu
173 3 Adrian Georgescu
=== PUT ===
174 3 Adrian Georgescu
175 3 Adrian Georgescu
{{{
176 3 Adrian Georgescu
adigeo@ag-imac3:~$xcapclient -a alice PUT -i work/python-xcaplib/examples/resource-lists.xml 
177 3 Adrian Georgescu
put https://xcap.sipthor.net/xcap-root/resource-lists/users/sip:alice@example.com/index
178 3 Adrian Georgescu
201 Created
179 3 Adrian Georgescu
etag: "f8c47352d61b5b256ee80d964e03efd6"
180 3 Adrian Georgescu
content-type: application/resource-lists+xml
181 3 Adrian Georgescu
}}}
182 3 Adrian Georgescu
183 3 Adrian Georgescu
=== GET ===
184 3 Adrian Georgescu
185 3 Adrian Georgescu
{{{
186 3 Adrian Georgescu
adigeo@ag-imac3:~$xcapclient -a alice --app resource-lists GET
187 3 Adrian Georgescu
get https://xcap.sipthor.net/xcap-root/resource-lists/users/sip:alice@example.com/index
188 3 Adrian Georgescu
etag: "f8c47352d61b5b256ee80d964e03efd6"
189 3 Adrian Georgescu
content-type: application/resource-lists+xml
190 3 Adrian Georgescu
content-length: 991
191 3 Adrian Georgescu
<?xml version="1.0" encoding="UTF-8"?>
192 3 Adrian Georgescu
   <resource-lists xmlns="urn:ietf:params:xml:ns:resource-lists"
193 3 Adrian Georgescu
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
194 3 Adrian Georgescu
    <list name="friends">
195 3 Adrian Georgescu
     <entry uri="sip:bill@example.com">
196 3 Adrian Georgescu
      <display-name>Bill Doe</display-name>
197 3 Adrian Georgescu
     </entry>
198 3 Adrian Georgescu
     <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"/>
199 3 Adrian Georgescu
     <list name="close-friends">
200 3 Adrian Georgescu
      <display-name>Close Friends</display-name>
201 3 Adrian Georgescu
      <entry uri="sip:joe@example.com">
202 3 Adrian Georgescu
       <display-name>Joe Smith</display-name>
203 3 Adrian Georgescu
      </entry>
204 3 Adrian Georgescu
      <entry uri="sip:nancy@example.com">
205 3 Adrian Georgescu
       <display-name>Nancy Gross</display-name>
206 3 Adrian Georgescu
      </entry>
207 3 Adrian Georgescu
      <external anchor="http://xcap.example.org/resource-lists/users/sip:a@example.org/index/~~/resource-lists/list%5b@name=%22mkting%22%5d">
208 3 Adrian Georgescu
        <display-name>Marketing</display-name>
209 3 Adrian Georgescu
       </external>
210 3 Adrian Georgescu
     </list>
211 3 Adrian Georgescu
    </list>
212 3 Adrian Georgescu
   </resource-lists>
213 3 Adrian Georgescu
}}}
214 3 Adrian Georgescu
215 3 Adrian Georgescu
=== DELETE ===
216 3 Adrian Georgescu
217 3 Adrian Georgescu
{{{
218 3 Adrian Georgescu
adigeo@ag-imac3:~$xcapclient -a alice --app resource-lists DELETE
219 3 Adrian Georgescu
delete https://xcap.sipthor.net/xcap-root/resource-lists/users/sip:alice@example.com/index
220 3 Adrian Georgescu
200 OK
221 3 Adrian Georgescu
content-type: application/resource-lists+xml
222 3 Adrian Georgescu
adigeo@ag-imac3:~$
223 1 Adrian Georgescu
}}}
224 4 Adrian Georgescu
225 5 Adrian Georgescu
== Example for rls-services XCAP document ==
226 4 Adrian Georgescu
227 4 Adrian Georgescu
=== PUT ===
228 4 Adrian Georgescu
229 4 Adrian Georgescu
{{{
230 4 Adrian Georgescu
adigeo@ag-imac3:~$xcapclient -a alice PUT -i work/python-xcaplib/examples/rls-services.xml 
231 4 Adrian Georgescu
put https://xcap.sipthor.net/xcap-root/rls-services/users/sip:alice@example.com/index
232 4 Adrian Georgescu
201 Created
233 4 Adrian Georgescu
etag: "44f5fca1b08352815ee12f1a0c32d812"
234 4 Adrian Georgescu
content-type: application/rls-services+xml
235 4 Adrian Georgescu
}}}
236 4 Adrian Georgescu
237 4 Adrian Georgescu
=== GET ===
238 4 Adrian Georgescu
239 4 Adrian Georgescu
{{{
240 4 Adrian Georgescu
adigeo@ag-imac3:~$xcapclient -a alice --app rls-services GET
241 4 Adrian Georgescu
get https://xcap.sipthor.net/xcap-root/rls-services/users/sip:alice@example.com/index
242 4 Adrian Georgescu
etag: "44f5fca1b08352815ee12f1a0c32d812"
243 4 Adrian Georgescu
content-type: application/rls-services+xml
244 4 Adrian Georgescu
content-length: 797
245 4 Adrian Georgescu
<?xml version="1.0" encoding="UTF-8"?>
246 4 Adrian Georgescu
   <rls-services xmlns="urn:ietf:params:xml:ns:rls-services"
247 4 Adrian Georgescu
      xmlns:rl="urn:ietf:params:xml:ns:resource-lists"
248 4 Adrian Georgescu
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
249 4 Adrian Georgescu
    <service uri="sip:mybuddies@example.com">
250 4 Adrian Georgescu
     <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>
251 4 Adrian Georgescu
     <packages>
252 4 Adrian Georgescu
      <package>presence</package>
253 4 Adrian Georgescu
     </packages>
254 4 Adrian Georgescu
    </service>
255 4 Adrian Georgescu
    <service uri="sip:marketing@example.com">
256 4 Adrian Georgescu
      <list name="marketing">
257 4 Adrian Georgescu
        <rl:entry uri="sip:joe@example.com"/>
258 4 Adrian Georgescu
        <rl:entry uri="sip:sudhir@example.com"/>
259 4 Adrian Georgescu
      </list>
260 4 Adrian Georgescu
      <packages>
261 4 Adrian Georgescu
        <package>presence</package>
262 4 Adrian Georgescu
      </packages>
263 4 Adrian Georgescu
    </service>
264 4 Adrian Georgescu
   </rls-services>
265 4 Adrian Georgescu
}}}
266 4 Adrian Georgescu
267 4 Adrian Georgescu
=== DELETE ===
268 4 Adrian Georgescu
269 4 Adrian Georgescu
{{{
270 4 Adrian Georgescu
adigeo@ag-imac3:~$xcapclient -a alice --app rls-services DELETE
271 4 Adrian Georgescu
delete https://xcap.sipthor.net/xcap-root/rls-services/users/sip:alice@example.com/index
272 4 Adrian Georgescu
200 OK
273 4 Adrian Georgescu
content-type: application/rls-services+xml
274 4 Adrian Georgescu
}}}