[SR-Users] pua_xmpp questions
laura testi
lau.testi at gmail.com
Sat Aug 13 11:57:29 CEST 2011
You are right! Sorry for the inconvenience. Can you make diff in the
correct order with the new files I have sent?
Best Regards,
Laura
On Fri, Aug 12, 2011 at 10:58 PM, Daniel-Constantin Mierla
<miconda at gmail.com> wrote:
> Hello,
>
> I applied the patches to master branch. One seemed to be in the reverse
> order (diff between file.new and file.old instead of diff between file.old
> and file.new), can you double-check if that is ok? If fine, then I will
> backport to 3.1 branch as well.
>
> Cheers,
> Daniel
>
> On 8/10/11 1:44 PM, Daniel-Constantin Mierla wrote:
>
> Hi Laura,
>
> thanks, I will apply the patches soon.
>
> Cheers,
> Daniel
>
> On 8/10/11 12:32 PM, laura testi wrote:
>
> Hi Daniel,
> please find the attached diff files and the files patched.
>
> Best Regards,
> Laura
>
> On Tue, Aug 9, 2011 at 4:34 PM, Daniel-Constantin Mierla
> <miconda at gmail.com> wrote:
>
> Hi Laura,
>
> thanks for the patches. I will apply them. Can you attach the patches as
> files instead of pasting them inline, so I can just download them from email
> and apply? The mail client breaks the withe-spacing and will take me some
> time to align them.
>
> Cheers,
> Daniel
>
> On 8/8/11 6:00 PM, laura testi wrote:
>
> Thank you very much for your reply.
>
> Finally we have successfully configure the xmpp gateway to work (both
> presence and IM) with another kamailio server which provide SIP
> REGISTRAR/PROXY/PRESENCE (with integrated xcap function).
>
> The key points are to put the server address parameter of presence and
> pua_xmpp module to the gateway itself instead of the main Presence
> Server of the SIP/SIMPLE domains. But the outbound_proxy of the xmpp
> module must point to the main PROXY server of the SIP/SIMPLE domains.
> The outbound_proxy of pua is not specify, so it point itself.
>
> following are this part of the configuration:
> modparam("xmpp", "outbound_proxy", "<main_proxy_uri>")
> modparam("presence", "server_address", "sip:10.10.5.210:5060")
> modparam("pua_xmpp", "server_address", "sip:10.10.5.210:5060")
>
> Now it works fine withe some bugs:
> - xmpp add sip contact: ok
> - sip add xmpp contact: ok
> - xmpp see the sip contact presence: ok
> - sip see the xmpp contact presence: ok
> - sip IM to xmpp: ok
> - xmpp IM to sip: ok
>
> the bugs we found are following:
> - the online/offline status is ok in both direction (SIP<--> XMPP)
> - other status (away/busy) is not ok from XMPP to SIP
> - busy status is not ok from SIP to XMPP
> - each time XMPP contact change the status, triger a new SUBSCRIBE in xmpp
> gateway which generate multiple same subscriptions with different callid
> in both active_watchers and pua tables. This also makes multiple
> multiple NOTIFY
> generation from the main Presence Server to GW when the SIP contact
> change
> it's status
>
> We have make the following patches in the pua_xmpp module that fix the
> above bugs. Hope it can help.
>
> -------------------------------------------------------------------------------------------------------------------------
> # diff -u simple2xmpp.c.orig simple2xmpp.c
> --- simple2xmpp.c.orig 2011-08-05 16:11:55.000000000 +0200
> +++ simple2xmpp.c 2011-08-08 14:57:25.000000000 +0200
> @@ -87,7 +87,7 @@
> if(msg->to->parsed != NULL)
> {
> pto = (struct to_body*)msg->to->parsed;
> - LM_ERR("'To' header ALREADY
> PARSED:<%.*s>\n",pto->uri.len,pto->uri.s);
> + LM_DBG("'To' header ALREADY
> PARSED:<%.*s>\n",pto->uri.len,pto->uri.s);
> }
> else
> {
> @@ -415,7 +415,8 @@
> goto error;
> }
>
> - if(xmlStrcasecmp((unsigned char*)note, (unsigned char*)"away")==
> 0)
> + if((xmlStrcasecmp((unsigned char*)note, (unsigned char*)"away")==
> 0)||
> + (xmlStrcasecmp((unsigned char*)note, (unsigned
> char*)"On the phone")== 0))
> {
> new_node = xmlNewChild(xmpp_root, NULL, BAD_CAST "show",
> BAD_CAST "away");
> @@ -456,12 +457,14 @@
> LM_ERR("while adding node:
> idle\n");
> goto error;
> }
> - }
> - else */
> + }*/
> + else
> if((xmlStrcasecmp((unsigned char*)note,
> (unsigned char*)"dnd")== 0)||
> (xmlStrcasecmp((unsigned
> char*)note,
> - (unsigned char*)"do
> not disturb")== 0))
> + (unsigned char*)"do
> not disturb")== 0)||
> + (xmlStrcasecmp((unsigned
> char*)note,
> + (unsigned char*)"Busy (DND)")==
> 0))
> {
> new_node =
> xmlNewChild(xmpp_root, NULL, BAD_CAST "show",
> BAD_CAST "dnd");
> @@ -471,6 +474,8 @@
> goto error;
> }
> }
> + else
> + LM_DBG("Not Found Status\n");
>
>
> /* adding status node */
>
>
>
>
> -------------------------------------------------------------------------------------------------------------------------
> # diff -u xmpp2simple.c.orig xmpp2simple.c
> --- xmpp2simple.c.orig 2011-08-05 12:37:48.000000000 +0200
> +++ xmpp2simple.c 2011-08-08 15:51:56.000000000 +0200
> @@ -76,13 +76,13 @@
> {
> LM_DBG("type attribut not present\n");
> build_publish(pres_node, -1);
> - if(presence_subscribe(pres_node, 3600, XMPP_SUBSCRIBE)<
> 0)
> + /* if(presence_subscribe(pres_node, 3600, XMPP_SUBSCRIBE)<
> 0)
> {
> LM_ERR("when sending subscribe for
> presence");
> xmlFree(pres_type);
> goto error;
> }
> -
> + */
>
> /* send subscribe after publish because in xmpp
> subscribe message
> * comes only when a new contact is inserted in buddy list
> */
> @@ -161,6 +161,8 @@
> char* type= NULL;
> char* status= NULL;
>
> +
> +
> LM_DBG("start\n");
>
> entity=(char*)pkg_malloc(7+ strlen(uri)*sizeof(char));
> @@ -243,13 +245,13 @@
> if(show_cont)
> {
> if(strcmp(show_cont, "xa")== 0)
> - status= "not available";
> + status= "Away";
> else
> if(strcmp(show_cont, "chat")== 0)
> - status= "free for chat";
> + status= "Online";
> else
> if(strcmp(show_cont, "dnd")== 0)
> - status= "do not disturb";
> + status= "Busy (DND)";
> else
> status= show_cont;
> }
> @@ -264,8 +266,8 @@
> goto error;
> }
> */
> - node = xmlNewChild(root_node, NULL, BAD_CAST "note",
> - BAD_CAST status_cont);
> + node = xmlNewChild(tuple_node, NULL, BAD_CAST "note",
> + BAD_CAST status);
> if(node== NULL)
> {
> LM_ERR("while adding node\n");
> @@ -273,8 +275,8 @@
> }
> }else
> if(show_cont)
> - {
> - node = xmlNewChild(root_node, NULL, BAD_CAST
> "note",
> + {
> + node = xmlNewChild(tuple_node, NULL, BAD_CAST
> "note",
> BAD_CAST status);
> if(node== NULL)
> {
> @@ -295,23 +297,6 @@
> goto error;
> }
> }
> - node= xmlNewChild(person_node, NULL, BAD_CAST
> "activities",
> - BAD_CAST 0);
> - if(node== NULL)
> - {
> - LM_ERR("while adding node\n");
> - goto error;
> - }
> -
> -
> - if( xmlNewChild(person_node, NULL, BAD_CAST "note",
> - BAD_CAST status )== NULL)
> - {
> - LM_ERR("while adding node\n");
> - goto error;
> - }
> -
> -
> }
>
>
>
>
>
>
>
>
>
>
>
>
> On Mon, Aug 1, 2011 at 12:10 PM, Daniel-Constantin Mierla
> <miconda at gmail.com> wrote:
>
> Hello,
>
> On 7/29/11 10:32 AM, laura testi wrote:
>
> Hi all,
> we are trying to setup a kamailio presence server in SIP/SIMPLE domain
> to interwork with XMPP domains including the GTalk (see the config
> below). The architecture is like this:
> - SIP/SIMPLE server: kamailio3.14 with full configuration with XCAP
> integration
> - XMPP Gateway: another kamailio server + ejabberd server
> - component mode
> - xmpp moduleL: outbound proxy to the Kamailio SIP/SIMPLE server
> - pua_xmpp: no outbound proxy?
> - XMPP server: ejabberd
>
> The users from XMPP domain can add the SIP account and see the
> presence of the SIP users, but not vice versa. The chat from both
> directions works fine.
>
> in the Presence Server, we have configured the kamailio with XCAP
> integration. We have the following doubts:
> - does pua_xmpp/pua modules need the xcap integration for the presence
> integration with xmpp domains?
>
> no, there is no requirement of xcap for sip-xmpp presence gatewaying.
>
> because to use xcap for presence authorization rules, it needs the
> sip clients support the xcap
> - does pua_xmpp/pua support xcap? otherwise how to works?
>
> This mechanism of auth rules in SIP is not compatible with XMPP, afaik.
> In
> xmpp they have in-band (using XMPP) transfer of the buddy list, unlike in
> SIMPLE where is XCAP over HTTP -- it is more like end-to-end presence
> model
> from early sip specifications.
>
>
> - in case of multiple SIP/SIMPLE presence server, how we can configure
> the server_address of
> pua_xmpp and presence parameter in xmpp gw?
>
> Either use many instances or, as workaround, somehow route the traffic to
> itself or other instance in order to re-write some headers.
>
> Cheers,
> Daniel
>
>
> Can you help us to clarify the doubts please?
>
> Many thanks in advanced!
>
> Best Regards,
> Laura
>
>
> PS: following are the main configuration of the xmpp GW:
>
>
> ---------------------------------------------------------------------------------------------
> ...
> modparam("xmpp", "domain_separator", "*")
> modparam("xmpp", "backend", "component")
> modparam("xmpp", "gateway_domain", "<mygwdomain>")
> modparam("xmpp", "xmpp_domain", "<mygwdomain>")
> modparam("xmpp", "xmpp_host", "127.0.0.1")
> modparam("xmpp", "xmpp_password", "secret")
> modparam("xmpp", "outbound_proxy", "<my oubound proxy uri>")
> modparam("pua", "outbound_proxy", "<my outbound proxy uri>")
> modparam("pua", "update_period", 60)
> modparam("pua", "default_expires", 1200)
> modparam("presence", "server_address", "<my presence server uri>")
> modparam("pua_xmpp", "server_address", "<my presence server uri>")
>
>
>
> route{
> route(REQINIT);
> t_check_trans();
>
> if (uri =~ "sip:.+ at .*<myxmppdomain>") {
> route(PRESENCE);
> if ($rU==$null)
> {
> # request with no Username in RURI
> sl_send_reply("484","Address Incomplete");
> exit;
> }
> route(CHAT);
> }
>
> xlog("L_INFO", "*** xmpp: unhandled message type\n");
> t_reply("503", "Service unavailable");
> return;
>
> }
>
> ...
>
> route[CHAT] {
> if(!is_method("MESSAGE"))
> return;
>
> if (!t_newtran()) {
> sl_reply_error();
> exit;
> }
>
> xlog("L_INFO", "*** xmpp-handled MESSAGE message.");
> if ($cT=~"^text/plain") {
> if (xmpp_send_message()) {
> t_reply("200", "Accepted");
> } else {
> t_reply("404", "Not found");
> }
> } else {
> xlog("L_INFO", "*** xmpp-handled MESSAGE, ignoring not
> text
> messages");
> t_reply("200", "Accepted");
> }
>
> t_release();
> exit;
> }
>
> route[PRESENCE] {
> if(!is_method("PUBLISH|SUBSCRIBE|NOTIFY"))
> return;
>
> # create new transaction to catch retransmissions
> if (!t_newtran())
> {
> sl_reply_error();
> exit;
> }
>
> if( is_method("NOTIFY"))
> {
> xlog("L_INFO", "*** xmpp-handled NOTIFY message.");
> if(pua_xmpp_notify())
> t_reply("200", "OK");
> t_release();
> exit;
> } else if( is_method("SUBSCRIBE"))
> {
> xlog("L_INFO", "*** xmpp-handled SUBSCRIBE message.\n");
> handle_subscribe();
> if($(hdr(Event))== "presence")
> {
> pua_xmpp_req_winfo("$ruri", "$hdr(Expires)");
> }
> t_release();
> exit;
> } else if(is_method("PUBLISH"))
> {
> handle_publish();
> t_release();
> exit;
> }
> }
>
> ...
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
> --
> Daniel-Constantin Mierla -- http://www.asipto.com
> Kamailio Advanced Training, Oct 10-13, Berlin: http://asipto.com/u/kat
> http://linkedin.com/in/miconda -- http://twitter.com/miconda
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
> --
> Daniel-Constantin Mierla -- http://www.asipto.com
> Kamailio Advanced Training, Oct 10-13, Berlin: http://asipto.com/u/kat
> http://linkedin.com/in/miconda -- http://twitter.com/miconda
>
>>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
> --
> Daniel-Constantin Mierla -- http://www.asipto.com
> Kamailio Advanced Training, Oct 10-13, Berlin: http://asipto.com/u/kat
> http://linkedin.com/in/miconda -- http://twitter.com/miconda
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
> --
> Daniel-Constantin Mierla -- http://www.asipto.com
> Kamailio Advanced Training, Oct 10-13, Berlin: http://asipto.com/u/kat
> http://linkedin.com/in/miconda -- http://twitter.com/miconda
More information about the sr-users
mailing list