Hi Karsten

> how are you measure the traffic you don't want to your Homer? Print stuff
> in that Kamailio event route or something else?

Basically, I want to mirror sip messages to homer, only sip messages
relevant to calls, not anything else which might be processed by
kamailio.

modules.inc:loadmodule "siptrace.so"
modules.inc:modparam("siptrace", "trace_flag", 22);
modules.inc:modparam("siptrace", "trace_on", 1)
modules.inc:modparam("siptrace", "trace_mode", 1)
modules.inc:modparam("siptrace", "hep_mode_on", 1)
modules.inc:modparam("siptrace", "hep_version", 3)
modules.inc:modparam("siptrace", "hep_capture_id", HEP_CAP_AGENT)
modules.inc:modparam("siptrace", "duplicate_uri", HOMERSIPURI)

I also use the xhttp interface for jsonrpc and a custom API.

For this I have kamailio also listen to TCP port 8080 to have those API
xhttp requests clearly separated from call traffic.

But, as I understand, xhttp requests are initially handled as if they
were sip requests and get processed request_route{}

So my request route starts with:

request_route {

        # Handle DMQ requests
        route(DMQ_CAPTURE);

        # Make sure we operate on the correct port (not on the xhttp one)
        if ($Rp != 5060 && $Rp != 5061) {
                xlog("L_ERROR", "REQUEST_ROUTE $rm to wrong port $Rp\n");
                exit;
        }

so all SIP method requests to port 8080 are being dropped.

I process xhttp traffic with the appropriate event route and of course
reject http requests to sip ports with the appropriate http error
message.

event_route[xhttp:request] {
    if ($avp(debug) > 0) {
        xlog("L_INFO", "$cfg(route): XHTTP Request to URI: $hu Port: $Rp BODY: 
$rb\n");
    }
    if ($Rp != 8080) {
        # We got a HTTP Request on a sip port. Reject!
        xhttp_reply("418", "I'm a teapot", "text/html", "<html><body>I'm not a 
Web-Server!</body></html>");
        exit;
    }
    if ($hu =~ "^/RPC") {
        ### KAMAILIO JSONRCP pass-through
        jsonrpc_dispatch();
    } else if ($hu =~ "^/API") {
        ### IMPROWARE API

[...]

What I observe is the siptrace module being triggered right at the
start of request_route. This makes sense, I want to mirror every sip
message.

But his also causes mirroring of the xhttp requests and replies to port
8080.

Is there a way to prevent this?

siptrace has an event route capable of filtering, as I understand it is
only possible to filter on the SIP request method, not anything else:

event_route[siptrace:msg] {
    if(is_method("KDMQ")) {
        drop();
    }
}

Do I miss something? How can I prevent/filter xhttp requests to be
mirrored by the siptrace module?

Mit freundlichen Grüssen

-Benoît Panizzon-
-- 
I m p r o W a r e   A G    -    Leiter Commerce Kunden
______________________________________________________

Zurlindenstrasse 29             Tel  +41 61 826 93 00
CH-4133 Pratteln                Fax  +41 61 826 93 01
Schweiz                         Web  http://www.imp.ch
______________________________________________________
__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions
To unsubscribe send an email to sr-users-le...@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the 
sender!
Edit mailing list options or unsubscribe:

Reply via email to