<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<tt>Hello,</tt><tt><br>
</tt><tt><br>
</tt><tt>xcap does not work with subscriber table and you cannot
download the list of subscribers. It uses xcap table from
database, where it can store contact list or other presence
related records/rules.</tt><tt><br>
</tt><tt><br>
</tt><tt>I am pasting the routing blocks related to xcap that I have
in one of my configs (planned to be used for updating the tutorial
online that I wrote a while ago:
<a class="moz-txt-link-freetext" href="http://kb.asipto.com/kamailio:presence:k31-made-simple">http://kb.asipto.com/kamailio:presence:k31-made-simple</a> -- but due
to lack of spare time, I kept postponing).<br>
<br>
Hope it is useful.<br>
<br>
Cheers,<br>
Daniel<br>
<br>
<br>
event_route[xhttp:request] {<br>
xdbg("===== xhttp: request [$rv] $rm => $hu\n");<br>
<br>
set_reply_no_connect();<br>
<br>
<br>
if ($Rp != 80<br>
#!ifdef WITH_TLS<br>
&& $Rp != 443<br>
#!endif<br>
) {<br>
set_reply_close();<br>
xlog("L_WARN", "HTTP request received on $Rp\n");<br>
xhttp_reply("403", "Forbidden", "", "");<br>
exit;<br>
}<br>
<br>
if (!www_authorize("domain.com", "subscriber"))<br>
{<br>
www_challenge("domain.com", "0");<br>
exit;<br>
}<br>
set_reply_close();<br>
<br>
route(XCAPSRV);<br>
<br>
# other http access<br>
xhttp_reply("200", "ok", "text/html",<br>
"<html><body>OK:
$si:$sp</body></html>");<br>
exit;<br>
}<br>
<br>
</tt><tt></tt><tt><br>
</tt><tt>route[XCAPSRV] {<br>
#!ifdef WITH_XCAPSRV<br>
if(! ($hu=~"^/xcap-root/")) {<br>
return;<br>
}<br>
# xcap ops - break down http uri to get xcap user id<br>
route(XCAPURI);<br>
$xcapuri(u=>data) = $var(hu);<br>
<br>
if($xcapuri(u=>uri)==$null) {<br>
xlog("==== xhttp failed uri => [$hu] ~ [$var(hu)]\n");<br>
xhttp_reply("404", "Not Found", "text/html",<br>
"unsupported xcap uri");<br>
exit;<br>
}<br>
<br>
if($xcapuri(u=>xuid)=~"^<a class="moz-txt-link-freetext" href="sip:.+@.+">sip:.+@.+</a>")<br>
$var(uri) = $xcapuri(u=>xuid);<br>
else<br>
$var(uri) = "sip:"+ $xcapuri(u=>xuid) + "@" + $Ri;<br>
<br>
# handle XCAP capability request<br>
if($xcapuri(u=>auid)=="xcap-caps") {<br>
if ($rm == "GET") {<br>
$var(xbody) =<br>
"<?xml version='1.0' encoding='UTF-8'?><br>
<xcap-caps xmlns='urn:ietf:params:xml:ns:xcap-caps'><br>
<auids><br>
" +<br>
#!ifdef WITH_RLS<br>
" <auid>rls-services</auid><br>
" +<br>
#!endif<br>
" <auid>pidf-manipulation</auid><br>
<auid>xcap-caps</auid><br>
<auid>resource-lists</auid><br>
<auid>pres-rules</auid><br>
<auid>org.openmobilealliance.pres-rules</auid><br>
<auid>org.openmobilealliance.user-profile</auid><br>
<auid>org.openmobilealliance.pres-content</auid><br>
<auid>org.openmobilealliance.search</auid><br>
<auid>org.openmobilealliance.xcap-directory</auid><br>
</auids><br>
<extensions><br>
</extensions><br>
<namespaces><br>
" +<br>
#!ifdef WITH_RLS<br>
"
<namespace>urn:ietf:params:xml:ns:rls-services</namespace><br>
" +<br>
#!endif<br>
"
<namespace>urn:ietf:params:xml:ns:pidf</namespace><br>
<namespace>urn:ietf:params:xml:ns:xcap-caps</namespace><br>
<namespace>urn:ietf:params:xml:ns:resource-lists</namespace><br>
<namespace>urn:ietf:params:xml:ns:pres-rules</namespace><br>
<namespace>urn:oma:xml:xdm:user-profile</namespace><br>
<namespace>urn:oma:xml:prs:pres-content</namespace><br>
<namespace>urn:oma:xml:xdm:search</namespace><br>
<namespace>urn:oma:xml:xdm:xcap-directory</namespace><br>
</namespaces><br>
</xcap-caps>";<br>
xhttp_reply("200", "ok", "application/xcap-caps+xml",<br>
"$var(xbody)");<br>
} else {<br>
append_to_reply("Allow: GET\r\n");<br>
xhttp_reply("405", "Method Not Allowed", "", "");<br>
}<br>
exit;<br>
}<br>
<br>
# be sure auth user access only its documents<br>
if ($rm!="GET" && $au!=$(var(uri){uri.user})) {<br>
xlog("==== xhttp forbidden => [$au] !=
[$(var(uri){uri.user})]\n");<br>
xhttp_reply("403", "Forbidden", "text/html",<br>
"operation not allowed");<br>
exit;<br>
}<br>
<br>
xdbg("SCRIPT: xcap service $xcapuri(u=>auid) for
$xcapuri(u=>xuid)\n");<br>
switch($rm) {<br>
case "PUT":<br>
xcaps_put("$var(uri)", "$var(hu)", "$rb");<br>
if($xcapuri(u=>auid)=~"pres-rules")<br>
{<br>
pres_update_watchers("$var(uri)", "presence");<br>
pres_refresh_watchers("$var(uri)", "presence", 1);<br>
#!ifdef WITH_RLS<br>
} else if($xcapuri(u=>auid)=~"rls-services"<br>
|| $xcapuri(u=>auid)=~"resource-lists") {<br>
rls_update_subs("$var(uri)", "presence");<br>
#!endif<br>
} else if($xcapuri(u=>auid)=~"pidf-manipulation") {<br>
pres_refresh_watchers("$var(uri)", "presence", 2,<br>
"$xcapuri(u=>uri_adoc)",
"$xcapuri(u=>file)");<br>
}<br>
exit;<br>
break;<br>
case "GET":<br>
$var(furi) = "sip:" + $au + "@" + $ar;<br>
if ($au!=$(var(uri){uri.user})) {<br>
# be sure only auth user gets its non-profile
documents<br>
if (!($xcapuri(u=>auid)=~"user-profile"<br>
|| $xcapuri(u=>auid)=~"pres-content"))
{<br>
xhttp_reply("403", "Forbidden", "", "");<br>
exit;<br>
} else {<br>
# be sure only permitted user gets others
profile documents<br>
pres_auth_status("$var(furi)", "$var(uri)");<br>
$var(rc) = $rc;<br>
if ($var(rc) != 1) {<br>
xhttp_reply("403", "Forbidden", "", "");<br>
exit;<br>
}<br>
}<br>
}<br>
xcaps_get("$var(uri)", "$var(hu)");<br>
exit;<br>
break;<br>
case "DELETE":<br>
xcaps_del("$var(uri)", "$var(hu)");<br>
if($xcapuri(u=>auid)=~"pres-rules") {<br>
pres_update_watchers("$var(uri)", "presence");<br>
pres_refresh_watchers("$var(uri)", "presence", 1);<br>
#!ifdef WITH_RLS<br>
} else if($xcapuri(u=>auid)=~"rls-services"<br>
|| $xcapuri(u=>auid)=~"resource-lists") {<br>
rls_update_subs("$var(uri)", "presence");<br>
#!endif<br>
} else if($xcapuri(u=>auid)=~"pidf-manipulation") {<br>
pres_refresh_watchers("$var(uri)", "presence", 2,<br>
"$xcapuri(u=>uri_adoc)",
"$xcapuri(u=>file)");<br>
}<br>
exit;<br>
break;<br>
case "POST":<br>
if($xcapuri(u=>auid)=~"search") {<br>
xhttp_reply("501", "Not Implemented", "", "");<br>
} else {<br>
if($xcapuri(u=>auid)=~"xcap-directory") {<br>
append_to_reply("Allow: GET\r\n");<br>
} else {<br>
append_to_reply("Allow: DELETE, GET,
PUT\r\n");<br>
}<br>
xhttp_reply("405", "Method Not Allowed", "", "");<br>
}<br>
exit;<br>
break;<br>
}<br>
#!endif<br>
return;<br>
}<br>
<br>
# Return fixed XCAP URI in $var(hu)<br>
route[XCAPURI] {<br>
#!ifdef WITH_XCAPSRV<br>
# Jitsi...<br>
if ($hu=~"^/xcap-root/resource-lists/users/.*/index$") {<br>
$var(hu) =
$(hu{re.subst,!(^/xcap-root/resource-lists/users/.*/).*$!\1generallist.xml!});<br>
} else if ($hu=~"^/xcap-root/pres-rules/users/.*/presrules$")
{<br>
$var(hu) =
$(hu{re.subst,!(^/xcap-root/)pres-rules(/users/.*/)presrules!\1org.openmobilealliance.pres-rules\2pres-rules!});<br>
} else if ($hu=~"^/xcap-root/oma_status-icon/users/.*/.*$") {<br>
$var(hu) =
$(hu{re.subst,!(^/xcap-root/)oma_status-icon(/users/.*/).*$!\1org.openmobilealliance.pres-content\2oma_status-icon/icon_document!});<br>
<br>
# Bria...<br>
} else if
($hu=~"^/xcap-root/resource-lists/users/.*/contacts-resource-list.xml$")
{<br>
$var(hu) =
$(hu{re.subst,!(^/xcap-root/resource-lists/users/.*/).*$!\1generallist.xml!});<br>
} else if
($hu=~"^/xcap-root/resource-lists/users/.*/resource-list.xml$") {<br>
$var(doc_uri) =
$(hu{re.subst,!(^/xcap-root/resource-lists/users/.*/).*$!\1generallist.xml!});<br>
<br>
# No modification required...<br>
} else {<br>
$var(hu) = $hu;<br>
}<br>
#!endif<br>
return;<br>
}<br>
<br>
<br>
</tt><br>
<br>
<div class="moz-cite-prefix">On 7/18/13 5:54 PM, Kethzer Docteur
wrote:<br>
</div>
<blockquote
cite="mid:CAHoHPXyAg3m1HBm=4RxBcJeE0rhuHjicXOeudSfO4mc0mV14_g@mail.gmail.com"
type="cite">
<div dir="ltr">Im trying to run Xcap_server support on Kamailio
but I got no luck in the configuration I load all module
necessary for the operation to succeed but nothing. I guess
I'm missing something but I can't tell cause I install all
dependencies in order to get it running. Here is my set up
please let me know if you can give me a hand with this I'd like
that cause I'm stuck here
<div>
<br>
</div>
<div>
<div># *** Value defines - IDs used later in config</div>
<div>#!define WITH_AUTH</div>
<div>#!define WITH_PRESENCE</div>
<div>#!define WITH_XCAPSRV</div>
<div>#!define WITH_NAT</div>
<div>#!define WITH_TLS</div>
<div>#!define WITH_ANTIFLOOD</div>
<div>#!define WITH_MYSQL</div>
</div>
<div><br>
</div>
<div>
<div>#!ifdef WITH_XCAPSRV</div>
<div>tcp_accept_no_cl=yes</div>
<div>#!endif</div>
</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div>#!ifdef WITH_AUTH</div>
<div>loadmodule "auth.so"</div>
<div>loadmodule "auth_db.so"</div>
<div>#!ifdef WITH_IPAUTH</div>
<div>loadmodule "permissions.so"</div>
<div>#!endif</div>
<div>#!endif</div>
</div>
<div><br>
</div>
<div>
<br>
</div>
<div>
<div>#!ifdef WITH_PRESENCE</div>
<div>loadmodule "presence.so"</div>
<div>loadmodule "presence_xml.so"</div>
<div>#!endif</div>
</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div>#!ifdef WITH_XCAPSRV</div>
<div>loadmodule "xhttp.so"</div>
<div>loadmodule "xcap_server.so"</div>
<div>#!endif</div>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div># ----- xcap_server params -----</div>
<div>modparam("xcap_server", "db_url",
"mysql://kamailio:kamailiorw@localhost/kamailio")</div>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div>event_route[xhttp:request] {</div>
<div> if (!www_authorize("xcap", "subscriber"))</div>
<div> {</div>
<div> www_challenge("xcap", "0");</div>
<div> exit;</div>
<div> }</div>
<div> if($hu=~"^/xcap-root/")</div>
<div> {</div>
<div> set_reply_close();</div>
<div> set_reply_no_connect();</div>
<div> # xcap ops - break down http uri to get xcap user
id</div>
<div> $xcapuri(u=>data) = $hu;</div>
<div> if($xcapuri(u=>xuid)=~"^<a class="moz-txt-link-freetext" href="sip:.+@.+">sip:.+@.+</a>")</div>
<div> $var(uri) = $xcapuri(u=>xuid);</div>
<div> else</div>
<div> $var(uri) = "sip:"+ $xcapuri(u=>xuid) +
"@" + $Ri;</div>
<div><br>
</div>
<div> # handle XCAP capability request</div>
<div> if($rm=="GET" &&
$xcapuri(u=>auid)=="xcap-caps")</div>
<div> {</div>
<div> $var(xbody) =</div>
<div>
"<?xml version='1.0' encoding='UTF-8'?></div>
<div><xcap-caps
xmlns='urn:ietf:params:xml:ns:xcap-caps'></div>
<div> <auids></div>
<div> <auid>rls-services</auid></div>
<div> <auid>pidf-manipulation</auid></div>
<div> <auid>xcap-caps</auid></div>
<div> <auid>resource-lists</auid></div>
<div> <auid>pres-rules</auid></div>
<div>
<auid>org.openmobilealliance.pres-rules</auid></div>
<div> </auids></div>
<div> <extensions></div>
<div> </extensions></div>
<div> <namespaces></div>
<div>
<namespace>urn:ietf:params:xml:ns:rls-services</namespace></div>
<div>
<namespace>urn:ietf:params:xml:ns:pidf</namespace></div>
<div>
<namespace>urn:ietf:params:xml:ns:xcap-caps</namespace></div>
<div>
<namespace>urn:ietf:params:xml:ns:resource-lists</namespace></div>
<div>
<namespace>urn:ietf:params:xml:ns:pres-rules</namespace></div>
<div> </namespaces></div>
<div></xcap-caps>";</div>
<div> xhttp_reply("200", "ok",
"application/xcap-caps+xml",</div>
<div> "$var(xbody)");</div>
<div> exit;</div>
<div> }</div>
<div> # be sure auth user access only its documents</div>
<div> if ($au!=$(var(uri){uri.user})) {</div>
<div> xhttp_reply("403", "Forbidden", "text/html",</div>
<div> "operation not allowed");</div>
<div> exit;</div>
<div> }</div>
<div><br>
</div>
<div> xdbg("SCRIPT: xcap service $xcapuri(u=>auid)
for $xcapuri(u=>xuid)\n");</div>
<div> switch($rm) {</div>
<div> case "PUT":</div>
<div> xcaps_put("$var(uri)", "$hu", "$rb");</div>
<div> if($xcapuri(u=>auid)=~"pres-rules")</div>
<div> {</div>
<div> pres_update_watchers("$var(uri)",
"presence");</div>
<div> pres_refresh_watchers("$var(uri)",
"presence", 1);</div>
<div> }</div>
<div> exit;</div>
<div> break;</div>
<div> case "GET":</div>
<div> xcaps_get("$var(uri)", "$hu");</div>
<div> exit;</div>
<div> break;</div>
<div> case "DELETE":</div>
<div> xcaps_del("$var(uri)", "$hu");</div>
<div> if($xcapuri(u=>auid)=~"pres-rules")</div>
<div> {</div>
<div> pres_update_watchers("$var(uri)",
"presence");</div>
<div> pres_refresh_watchers("$var(uri)",
"presence", 1);</div>
<div> }</div>
<div> exit;</div>
<div> break;</div>
<div> }</div>
<div> }</div>
<div><br>
</div>
<div> # other http requests</div>
<div> xhttp_reply("200", "OK", "text/html",</div>
<div> "<html><body>OK:
$si:$sp</body></html>");</div>
<div> exit;</div>
<div>}</div>
</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Thu, Jul 18, 2013 at 11:22 AM, Edson
- Lists <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:4lists@gmail.com" target="_blank">4lists@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">Did you
try it? What you got? What happened? What is your scenario?<br>
<br>
Tell, and maybe someone would help you...<br>
<br>
Edson.<br>
<br>
Em 18/07/2013 11:51, Kethzer Docteur escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<div class="h5">
Hello<br>
Im trying to get xcap service working to be able to
download my<br>
subscriber list form the subscriber table. I hope that
you could help me<br>
with this in anyway possible<br>
Thank you<br>
<br>
--<br>
Kethzer Docteur<br>
<br>
<br>
</div>
</div>
_______________________________________________<br>
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
mailing list<br>
<a moz-do-not-send="true"
href="mailto:sr-users@lists.sip-router.org"
target="_blank">sr-users@lists.sip-router.org</a><br>
<a moz-do-not-send="true"
href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users"
target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
<br>
</blockquote>
<br>
_______________________________________________<br>
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
mailing list<br>
<a moz-do-not-send="true"
href="mailto:sr-users@lists.sip-router.org"
target="_blank">sr-users@lists.sip-router.org</a><br>
<a moz-do-not-send="true"
href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users"
target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
Kethzer Docteur<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a>
<a class="moz-txt-link-freetext" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Daniel-Constantin Mierla - <a class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
<a class="moz-txt-link-freetext" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a>
</pre>
</body>
</html>