{"id":350,"date":"2010-11-25T09:09:43","date_gmt":"2010-11-25T08:09:43","guid":{"rendered":""},"modified":"2018-11-01T11:06:46","modified_gmt":"2018-11-01T10:06:46","slug":"configuring-xcap-support-im-and-presence-over-kamailio-31-debian-lenny","status":"publish","type":"post","link":"https:\/\/nil.uniza.sk\/en\/configuring-xcap-support-im-and-presence-over-kamailio-31-debian-lenny\/","title":{"rendered":"Configuring XCAP support for IM and presence over kamailio 3.1 &#8211; debian (lenny)"},"content":{"rendered":"<p><span style=\"background-color: rgb(255, 204, 153);\"><span style=\"color: rgb(255, 0, 0);\"><br \/>\n<\/span><\/span>This article continue on series of articles about the Kamailio 3.1.x SIP&nbsp;proxy deployed on debian lenny and its features. In previous articles we have:<\/p>\n<p>1) <a href=\"https:\/\/nil.uniza.sk\/en\/installing-kamailio-31-debian-lenny\/\">installed clear Kamailio 3.1.x server<\/a><\/p>\n<p>2)&nbsp;<a href=\"https:\/\/nil.uniza.sk\/en\/sip\/kamailio\/adding-mysql-support-kamailio-31-debian-lenny\/\">added Mysql support&nbsp;<\/a>for persistance location storage<\/p>\n<p>3)&nbsp;<a href=\"https:\/\/nil.uniza.sk\/en\/sip\/kamailio\/installing-siremis-20-kamailio-web-management-interface-debian-lenny-how\/\">SIREMIS web management interface for our kamailio server<\/a>.<\/p>\n<p>4) <a href=\"https:\/\/nil.uniza.sk\/en\/instant-messaging\/simple\/configuring-im-and-presence-kamailio-31-howto\/\">configured IM and presence service on Kamailio 3.1 &#8211; Howto<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>and now, we will configure the XCAP support for IM and presence. XCAP is a new Kamailio 3.1 feature supported by the <a href=\"http:\/\/www.kamailio.org\/docs\/modules\/3.1.x\/modules_k\/xcap_server.html\">XCAP Server<\/a> module with <a href=\"http:\/\/www.kamailio.org\/docs\/modules\/3.1.x\/modules\/xhttp.html\">XHTTP module<\/a>. The official tutorial is at the&nbsp;<a href=\"http:\/\/kb.asipto.com\/kamailio:presence:k31-made-simple\">SIP SIMPLE Presence Made Simple with Kamailio 3.1.x<\/a>. XCAP allows to communicate over HTTP with your SIP Server (Presence agent here) and modify your presence info. As I understand it clear it should, in addition to, support buddy list feature of the Presence, or SIPMLE service architecture. Look at <a href=\"http:\/\/kb.asipto.com\/kamailio:presence:k31-made-simple\">the guide<\/a> for a short explanation.&nbsp;<\/p>\n<p>&nbsp;Discussion about the Kamailio Xcap is at <a href=\"http:\/\/www.mail-archive.com\/sr-users@lists.sip-router.org\/msg02059.html\">list<\/a>.<\/p>\n<h2>Prerequsities<\/h2>\n<ul>\n<li>\n<div class=\"li\">Installed the&nbsp;<a href=\"http:\/\/www.kamailio.org\/\" title=\"http:\/\/www.kamailio.org\" class=\"urlextern\" rel=\"nofollow\">Kamailio (OpenSER) 3.1.0<\/a>&nbsp;server with support for Mysql<\/div>\n<\/li>\n<li>\n<div class=\"li\">installed&nbsp;Mysql Server&nbsp;<\/div>\n<\/li>\n<li>\n<div class=\"li\">configured Presence and IM feastures over Kamailio<\/div>\n<\/li>\n<li>\n<div class=\"li\">XCAP client (<a href=\"http:\/\/sip-communicator.org\/\">SIP communicator<\/a>)<\/div>\n<\/li>\n<\/ul>\n<h2>Dependencies<\/h2>\n<p>The following modules must be loaded before this module:&nbsp;<\/p>\n<ul>\n<li>a database module.<\/li>\n<li>presence.<\/li>\n<li>sl.<\/li>\n<li>xcap_client.\n<ul>\n<li>Only compulsory if not using an integrated xcap server (if &#8218;integrated_xcap_server&#8216; parameter is not set).<br \/>\n        &nbsp;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>External Libraries or Applications have to be already installed<\/p>\n<ul>\n<li>libxml.<br \/>\n    &nbsp;<\/li>\n<\/ul>\n<h2>Preparation<\/h2>\n<p>Using<\/p>\n<pre>\r\npstest:\/home\/palo# apt-cache search xcap\r\nkamailio-presence-modules - SIMPLE presence modules for Kamailio\r\n<\/pre>\n<p>we may see that the xcap is part of the kamailio-presence-module package. We do not need install any other module as we have from previous steps.<\/p>\n<h2>Configuration<\/h2>\n<p>Now, in contrast with previous articles about the kamailio, we have to add some lines into \/etc\/kamailio\/kamailio.cfg file, because XCAP support is not yet preconfigured. So open the kamailio.cfg file.<\/p>\n<p>At the top part of the file, as we did before, we add definition of the zone directive for XCAP support:<\/p>\n<pre>\r\n#!define WITH_XCAPSRV<\/pre>\n<p>In global parameters section we have to add parameters for tcp life time connection<\/p>\n<pre>\r\ntcp_connection_lifetime=3064\r\n<\/pre>\n<p>and<\/p>\n<pre>\r\n#!ifdef WITH_XCAPSRV\r\ntcp_accept_no_cl=yes\r\n#!endif\r\n<\/pre>\n<p>which allow to accept requests <a href=\"http:\/\/kb.asipto.com\/kamailio:presence:k31-made-simple\">without content length<\/a><\/p>\n<p>Inside of the load module part of the cfg we add zone block to load required XCAP&nbsp;modules<\/p>\n<pre>\r\n#!ifdef WITH_XCAPSRV\r\nloadmodule &quot;xhttp.so&quot;\r\nloadmodule &quot;xcap_server.so&quot;\r\n#!endif\r\n<\/pre>\n<p>Now go to the module parameters part of the cfg file and set up xcap server module parameter for database:<\/p>\n<pre>\r\n#!ifdef WITH_XCAPSRV\r\n# ----- xcap_server params -----\r\nmodparam(&quot;xcap_server&quot;, &quot;db_url&quot;, DBURL)\r\n#!endif\r\n<\/pre>\n<p>and update the presence configuration to react on XCAP. So go to modparam section where presence is defined (search for <em>!ifdef WITH_PRESENCE<\/em>), and add following lines:<\/p>\n<pre>\r\nmodparam(&quot;presence&quot;, &quot;fallback2db&quot;, 1)\r\nmodparam(&quot;presence&quot;, &quot;db_update_period&quot;, 20)\r\n\r\n <\/pre>\n<p>and edit presence xml params inside of the same presence zone block, so change<\/p>\n<pre>\r\nmodparam(&quot;presence_xml&quot;, &quot;force_active&quot;, 1) <\/pre>\n<p>to<\/p>\n<pre>\r\nmodparam(&quot;presence_xml&quot;, &quot;force_active&quot;, <span style=\"background-color: rgb(255, 255, 153);\">0<\/span>) <\/pre>\n<p>&nbsp;<\/p>\n<p>and add line<\/p>\n<pre>\r\nmodparam(&quot;presence_xml&quot;, &quot;integrated_xcap_server&quot;, 1)<\/pre>\n<p>The whole block should look now like:<\/p>\n<pre>\r\n#!ifdef WITH_PRESENCE\r\n# ----- presence params -----\r\nmodparam(&quot;presence&quot;, &quot;db_url&quot;, DBURL)\r\nmodparam(&quot;presence&quot;, &quot;fallback2db&quot;, 1)\r\nmodparam(&quot;presence&quot;, &quot;db_update_period&quot;, 20)\r\n\r\n# ----- presence_xml params -----\r\nmodparam(&quot;presence_xml&quot;, &quot;db_url&quot;, DBURL)\r\nmodparam(&quot;presence_xml&quot;, &quot;force_active&quot;, 0)\r\nmodparam(&quot;presence_xml&quot;, &quot;integrated_xcap_server&quot;, 1)\r\n#!endif\r\n<\/pre>\n<h2>Modifying the route block<\/h2>\n<p>And at the route logic part put following lines (just copy from the guide), I&#8217;ll try to analyze it later, we are just testing the guide&nbsp;<\/p>\n<pre>\r\n#!ifdef WITH_XCAPSRV\r\n\r\n<span class=\"co2\" style=\"margin: 0px; padding: 0px; color: rgb(128, 128, 128); font-style: italic;\">#!define WITH_XHTTPAUTH<\/span>\r\nevent_route<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">[<\/span>xhttp<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">:<\/span>request<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">]<\/span> <span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">{<\/span>\r\n\txdbg<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;===== xhttp: request [$rv] $rm =&gt; $hu<span class=\"es1\" style=\"margin: 0px; padding: 0px;\">\\n<\/span>&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n<span class=\"co2\" style=\"margin: 0px; padding: 0px; color: rgb(128, 128, 128); font-style: italic;\">#!ifdef WITH_XHTTPAUTH<\/span>\r\n\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">if<\/span> <span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">!<\/span>www_authorize<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;xcap&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;subscriber&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span>\r\n\t<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">{<\/span>\r\n\t\twww_challenge<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;xcap&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;0&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\texit<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">}<\/span>\r\n<span class=\"co2\" style=\"margin: 0px; padding: 0px; color: rgb(128, 128, 128); font-style: italic;\">#!endif<\/span>\r\n\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">if<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>$hu<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=<\/span>~<span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;^\/xcap-root\/&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span>\r\n\t<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">{<\/span>\r\n\t\tset_reply_close<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\tset_reply_no_connect<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t<span class=\"co2\" style=\"margin: 0px; padding: 0px; color: rgb(128, 128, 128); font-style: italic;\"># xcap ops<\/span>\r\n\t\t$xcapuri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>u<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=&gt;<\/span>data<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span> <span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=<\/span> $hu<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">if<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>$xcapuri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>u<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=&gt;<\/span>xuid<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=<\/span>~<span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;^sip:.+@.+&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span>\r\n\t\t\t$var<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>uri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span> <span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=<\/span> $xcapuri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>u<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=&gt;<\/span>xuid<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">else<\/span> <span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">if<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>$xcapuri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>u<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=&gt;<\/span>xuid<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=<\/span>~<span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;.+@.+&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span>\r\n\t\t\t$var<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>uri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span> <span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;sip:&quot;<\/span> <span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">+<\/span> $xcapuri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>u<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=&gt;<\/span>xuid<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">else<\/span>\r\n\t\t\t$var<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>uri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span> <span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;sip:&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">+<\/span> $xcapuri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>u<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=&gt;<\/span>xuid<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span> <span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">+<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;@&quot;<\/span> <span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">+<\/span> $Ri<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\txlog<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;===== xhttp: $xcapuri(u=&gt;auid) : $xcapuri(u=&gt;xuid)<span class=\"es1\" style=\"margin: 0px; padding: 0px;\">\\n<\/span>&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">if<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>$xcapuri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>u<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=&gt;<\/span>auid<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">==<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;xcap-caps&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span>\r\n\t\t<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">{<\/span>\r\n\t\t\t$var<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>xbody<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span> <span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=<\/span>\r\n<span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;&lt;?xml version='1.0' encoding='UTF-8'?&gt; &lt;xcap-caps xmlns='urn:ietf:params:xml:ns:xcap-caps'&gt;   &lt;auids&gt;     &lt;auid&gt;rls-services&lt;\/auid&gt;     &lt;auid&gt;pidf-manipulation&lt;\/auid&gt;     &lt;auid&gt;xcap-caps&lt;\/auid&gt;     &lt;auid&gt;resource-lists&lt;\/auid&gt;     &lt;auid&gt;pres-rules&lt;\/auid&gt;     &lt;auid&gt;org.openmobilealliance.pres-rules&lt;\/auid&gt;   &lt;\/auids&gt;   &lt;extensions&gt;   &lt;\/extensions&gt;   &lt;namespaces&gt;     &lt;namespace&gt;urn:ietf:params:xml:ns:rls-services&lt;\/namespace&gt;     &lt;namespace&gt;urn:ietf:params:xml:ns:pidf&lt;\/namespace&gt;     &lt;namespace&gt;urn:ietf:params:xml:ns:xcap-caps&lt;\/namespace&gt;     &lt;namespace&gt;urn:ietf:params:xml:ns:resource-lists&lt;\/namespace&gt;     &lt;namespace&gt;urn:ietf:params:xml:ns:pres-rules&lt;\/namespace&gt;   &lt;\/namespaces&gt; &lt;\/xcap-caps&gt;&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\txhttp_reply<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;200&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;ok&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;application\/xcap-caps+xml&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span>\r\n\t\t\t\t\t<span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$var(xbody)&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\texit<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">}<\/span>\r\n<span class=\"co2\" style=\"margin: 0px; padding: 0px; color: rgb(128, 128, 128); font-style: italic;\">#!ifdef WITH_XHTTPAUTH<\/span>\r\n        <span class=\"co2\" style=\"margin: 0px; padding: 0px; color: rgb(128, 128, 128); font-style: italic;\"># be sure auth user access only its documents<\/span>\r\n        <span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">if<\/span> <span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>$au<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">!=<\/span>$<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>var<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>uri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">{<\/span>uri.<span class=\"me1\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 0);\">user<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">}<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span> <span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">{<\/span>\r\n            xhttp_reply<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;403&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;Forbidden&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;text\/html&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span>\r\n                    <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;&lt;html&gt;&lt;body&gt;$si:$sp&lt;\\\/body&gt;&lt;\\\/html&gt;&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n            exit<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n        <span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">}<\/span>\r\n&nbsp;\r\n<span class=\"co2\" style=\"margin: 0px; padding: 0px; color: rgb(128, 128, 128); font-style: italic;\">#!endif<\/span>\r\n\t\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">switch<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>$rm<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span> <span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">{<\/span>\r\n\t\t\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">case<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;PUT&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">:<\/span>\r\n\t\t\t\txcaps_put<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$var(uri)&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$hu&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$rb&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">if<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>$xcapuri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>u<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=&gt;<\/span>auid<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=<\/span>~<span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;pres-rules&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span>\r\n\t\t\t\t<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">{<\/span>\r\n\t\t\t\t\txlog<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;===== xhttp put: refreshing watchers for $var(uri)<span class=\"es1\" style=\"margin: 0px; padding: 0px;\">\\n<\/span>&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t\t\tpres_update_watchers<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$var(uri)&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;presence&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t\t\tpres_refresh_watchers<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$var(uri)&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;presence&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> 1<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t\t<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">}<\/span>\r\n\t\t\t\texit<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t<span class=\"kw2\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-weight: bold;\">break<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">case<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;GET&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">:<\/span>\r\n\t\t\t\txlog<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;===== xhttp: get $var(uri) =&gt; $hu<span class=\"es1\" style=\"margin: 0px; padding: 0px;\">\\n<\/span>&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t\txcaps_get<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$var(uri)&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$hu&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t\texit<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t<span class=\"kw2\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-weight: bold;\">break<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">case<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;DELETE&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">:<\/span>\r\n\t\t\t\txcaps_del<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$var(uri)&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$hu&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t\t<span class=\"kw1\" style=\"margin: 0px; padding: 0px; color: rgb(177, 177, 0);\">if<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>$xcapuri<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span>u<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=&gt;<\/span>auid<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">=<\/span>~<span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;pres-rules&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span>\r\n\t\t\t\t<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">{<\/span>\r\n\t\t\t\t\txlog<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;===== xhttp del: refreshing watchers for $var(uri)<span class=\"es1\" style=\"margin: 0px; padding: 0px;\">\\n<\/span>&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t\t\tpres_update_watchers<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$var(uri)&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;presence&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t\t\tpres_refresh_watchers<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;$var(uri)&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;presence&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> 1<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t\t<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">}<\/span>\r\n\t\t\t\texit<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t\t<span class=\"kw2\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-weight: bold;\">break<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\t\t<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">}<\/span>\r\n\t<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">}<\/span>\r\n&nbsp;\r\n\t<span class=\"co2\" style=\"margin: 0px; padding: 0px; color: rgb(128, 128, 128); font-style: italic;\"># http ops<\/span>\r\n\txhttp_reply<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">(<\/span><span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;200&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;ok&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span> <span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;text\/html&quot;<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">,<\/span>\r\n\t\t\t\t\t<span class=\"st0\" style=\"margin: 0px; padding: 0px; color: rgb(255, 0, 0);\">&quot;&lt;html&gt;&lt;body&gt;OK: $si:$sp&lt;\\\/body&gt;&lt;\\\/html&gt;&quot;<\/span><span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">)<\/span><span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n\texit<span class=\"sy0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">;<\/span>\r\n<span class=\"br0\" style=\"margin: 0px; padding: 0px; color: rgb(102, 204, 102);\">}<\/span>\r\n<span class=\"co2\" style=\"margin: 0px; padding: 0px; color: rgb(128, 128, 128); font-style: italic;\">#!endif<\/span>\r\n\r\n\r\n<\/pre>\n<p style=\"margin: 0px 0px 1em; padding: 0px;\">Do not forget to restart kamailio.<\/p>\n<h2>Testing<\/h2>\n<h3>Using SIP&nbsp;client with XCAP support<\/h3>\n<h4>Jitsi<\/h4>\n<p>First, configure XCAP support correctly with IP&nbsp;address of your&nbsp;XCAP&nbsp;Server<\/p>\n<p><img decoding=\"async\" width=\"751\" height=\"584\" align=\"top\" alt=\"\" src=\"\/wp-content\/uploads\/files\/image\/SIP\/kamailio\/xcap\/jitsi-xcap-2.png\" \/><\/p>\n<p>Then try add a new contact.<\/p>\n<p><img decoding=\"async\" width=\"258\" height=\"606\" align=\"top\" alt=\"\" src=\"\/wp-content\/uploads\/files\/image\/SIP\/kamailio\/xcap\/jitsi-xcap-3.png\" \/><\/p>\n<p>On a SIP&nbsp;client where Jan is online following windows with authorization should appear:<\/p>\n<p><img decoding=\"async\" width=\"513\" height=\"241\" align=\"top\" src=\"\/wp-content\/uploads\/files\/image\/SIP\/kamailio\/xcap\/jitsi-jan-xcap-potvrdenie.png\" alt=\"\" \/><\/p>\n<p>If we authorize pepe, we may see on pepe&#8217;s SIP&nbsp;client authorization for jan, who is adding pepe into its list.<\/p>\n<p><img decoding=\"async\" width=\"427\" height=\"229\" align=\"top\" src=\"\/wp-content\/uploads\/files\/image\/SIP\/kamailio\/xcap\/jitsi-pepe-xcap-potvrdenie.png\" alt=\"\" \/><\/p>\n<p>Finally we should see correct presence infos on both clients:<\/p>\n<p><img decoding=\"async\" width=\"261\" height=\"611\" align=\"left\" src=\"\/wp-content\/uploads\/files\/image\/SIP\/kamailio\/xcap\/jitsi-pepe-xcap-pressence-status.png\" alt=\"\" \/><img decoding=\"async\" width=\"261\" height=\"611\" align=\"top\" src=\"\/wp-content\/uploads\/files\/image\/SIP\/kamailio\/xcap\/jitsi-jan-xcap-presence-status.png\" alt=\"\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>To verify XCAP store, we use an another SIP&nbsp;client  with XCAP support, or another Jitsi instance running for example on another PC with the same SIP&nbsp;credentials, a newly added contact should appear on your new place (client or PC)<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" width=\"261\" height=\"611\" align=\"top\" alt=\"\" src=\"\/wp-content\/uploads\/files\/image\/SIP\/kamailio\/xcap\/jitsi-xcap-4.png\" \/><\/p>\n<h4>Configuring Bria 2.4<\/h4>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" width=\"520\" height=\"648\" alt=\"\" src=\"\/wp-content\/uploads\/files\/image\/SIP\/kamailio\/xcap\/bria-xcap-2.png\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h3>Using curl<\/h3>\n<p>Curl&nbsp; is&nbsp; a tool to transfer data from or to a server, using one of the supported protocols (HTTP, HTTPS, FTP, FTPS,&nbsp; SCP,&nbsp; SFTP,&nbsp; TFTP,&nbsp; DICT, TELNET,&nbsp; LDAP&nbsp; or&nbsp; FILE).<\/p>\n<p>First install curl utility<\/p>\n<pre>\r\napt-get install curl\r\n<\/pre>\n<p>then type<\/p>\n<pre>\r\ncurl --digest -u pepe:pepe GET http:\/\/158.193.139.51:5060\/xcap-root\r\ncurl: (6) Couldn&#039;t resolve host &#039;GET&#039;\r\n&lt;html&gt;&lt;body&gt;OK: 158.193.139.51:50334&lt;\/body&gt;&lt;\/html&gt;\r\n<\/pre>\n<p>to verify operation, return is 200Ok.<\/p>\n<p>Or list of contacts<\/p>\n<pre>\r\ncurl --digest -u pepe:pepe http:\/\/158.193.139.51:5060\/xcap-root\/resource-lists\/users\/sip:pepe@ps.sip.uniza.sk\/index\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;\r\n&lt;resource-lists xmlns=&quot;urn:ietf:params:xml:ns:resource-lists&quot;&gt;\r\n&lt;list name=&quot;RootGroup&quot;&gt;\r\n&lt;entry uri=&quot;sip:jan@ps.sip.uniza.sk&quot;&gt;\r\n&lt;display-name&gt;jan@ps&lt;\/display-name&gt;\r\n&lt;\/entry&gt;\r\n&lt;\/list&gt;\r\n&lt;\/resource-lists&gt;\r\n<\/pre>\n<h3>Using Siremis<\/h3>\n<p>it requires installed SIREMIS&nbsp;WEB gui<\/p>","protected":false},"excerpt":{"rendered":"<p><span style=\"background-color: rgb(255, 204, 153);\"><span style=\"color: rgb(255, 0, 0);\"><br \/>\n<\/span><\/span>This article continue on series of articles about the Kamailio 3.1.x SIP&nbsp;proxy deployed on debian lenny and its features. In previous articles we have:<\/p>\n<p>1) <a href=\"https:\/\/nil-test.kis.fri.uniza.sk\/installing-kamailio-31-debian-lenny\">installed clear Kamailio 3.1.x server<\/a><\/p>\n<p>2)&nbsp;<a href=\"https:\/\/nil-test.kis.fri.uniza.sk\/sip\/kamailio\/adding-mysql-support-kamailio-31-debian-lenny\">added Mysql support&nbsp;<\/a>for persistance location storage<\/p>","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"categories":[781,795,661],"tags":[],"class_list":["post-350","post","type-post","status-publish","format-standard","hentry","category-kamailio-en","category-services-en","category-instant_messaging-simple-en"],"taxonomy_info":{"category":[{"value":781,"label":"Kamailio"},{"value":795,"label":"Services"},{"value":661,"label":"SIMPLE"}]},"featured_image_src_large":false,"author_info":{"display_name":"admin","author_link":"https:\/\/nil.uniza.sk\/en\/author\/admin\/"},"comment_info":4,"category_info":[{"term_id":781,"name":"Kamailio","slug":"kamailio-en","term_group":0,"term_taxonomy_id":779,"taxonomy":"category","description":"","parent":771,"count":29,"filter":"raw","cat_ID":781,"category_count":29,"category_description":"","cat_name":"Kamailio","category_nicename":"kamailio-en","category_parent":771},{"term_id":795,"name":"Services","slug":"services-en","term_group":0,"term_taxonomy_id":793,"taxonomy":"category","description":"","parent":771,"count":3,"filter":"raw","cat_ID":795,"category_count":3,"category_description":"","cat_name":"Services","category_nicename":"services-en","category_parent":771},{"term_id":661,"name":"SIMPLE","slug":"instant_messaging-simple-en","term_group":0,"term_taxonomy_id":659,"taxonomy":"category","description":"","parent":659,"count":2,"filter":"raw","cat_ID":661,"category_count":2,"category_description":"","cat_name":"SIMPLE","category_nicename":"instant_messaging-simple-en","category_parent":659}],"tag_info":false,"_links":{"self":[{"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/posts\/350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/comments?post=350"}],"version-history":[{"count":0,"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/posts\/350\/revisions"}],"wp:attachment":[{"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/media?parent=350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/categories?post=350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nil.uniza.sk\/en\/wp-json\/wp\/v2\/tags?post=350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}