Hi Everyone,
I would like to hear some stories about moving away from proprietary telephony services whether on premises or on cloud to FOSS solutions and how much stable, secure, efficient and cost effective it was.
I would like to present to my managers such cases to convince them to move away from proprietary telephony as it is just huge amount of cost and technical debt.
Thanks everyone and really appreciate any insights, also I am sorry if this is not the place to ask for such!
hi,
i have kamailio with TLS
i dont have homer and voipmonitor with TLS decryption doesnt work
how can i check final SIP INVITE (after all rewrites/modifications)
before is send to the peer?
tried
onsend_route {
         if ($rm == "INVITE") {
                       xlog("L_INFO", "Final SIP Message before
Sending: $mbu\n");
         }
}
but record-route/via are different than reality (checked with sngrep
with TLS disabled)
kamailio log
 Record-Route: <sip:;r2=on;lr;ftag=b0d1d4ce-...
 Record-Route: <sip:10.10.10.10;r2=on;lr;ftag=b0d1d4..
 Via: SIP/2.0/UDP 30.30.30.30:5080;TH=div;rport;branch=z9hG4bK
sngrep
 Record-Route: <sip:9.9.9.9;r2=on;lr;ftag=246bdf1c...
 Record-Route: <sip:9.9.9.9;line=sr-Jf7BrWSBdWSzrD
 Via: SIP/2.0/UDP 9.9.9.9;branch=z9hG4bKdb73.0735168f3e5f....
 Via: SIP/2.0/UDP
9.9.9.9;branch=z9hG4bKsr-2y7Ud3XCMD4N6Vi8M-iCM-XGdWSBMDGzuhJZu-iGMh9ztEu7q.....
10.10.10.10 - private kamailio ip (fictional)
30.30.30.30 - ip of SIP PBX (caller)
9.9.9.9 - public kamailio ip
Marek
Hi All,
My requirement is when incoming call comes from internal user in i want to put kamailio ip and port in Contact header and forward or dispatch request to sip trunk carrier but i am unable to do so using KEMI frame work LUA. Can someone please give some pointer please?
KSR.textops.remove_hf("Contact");
KSR.textopsx.assign_hf_value("Contact","<sip:1234@4.5.6.7>");
KSR.rtpengine.rtpengine_manage0();
if KSR.tm.t_relay()<0 then
KSR.sl.sl_reply_error();
end
Hello,
We're using kamailio, with rtpengine for RTP encryption/decryption. It
works fine but I would like to understand the integration better.
How does rtpengine get the TLS certificates, and what crypto library does
it use (openssl?).
Thank you in advance,
--
David Cunningham, Voisonics Limited
http://voisonics.com/
USA: +1 213 221 1092
New Zealand: +64 (0)28 2558 3782
Hi Gang
I have a strange issue after upgrading to 5.7
I use dlg_vars to keep some information until the end of the call to
write them in a CDR.
One of those variables records the timestamp of the first invite to
determine how long it took from the invite to the 'connection
established' if at all.
The CDR is written when the BYE is being processed by the dialog module.
Strangely, since updating to 5.7 (used to work with 5.5 and 5.6 I
think, but I could be mistaking as other changes were made to the
config) my dialog variables are null when BYE is being processed.
reading the docs, I learned that that dlg_var are only polulated after
loose_route() has been called.
So I added some logging statement to track if the BYE in question is
processed by loose_route().
Yes, it is, loose_route() returns success on the BYE in question. But
when I log the content of my dlg_var after loose_route() it is still
null.
Any idea what the cause could be?
--
Mit freundlichen Grüssen
-Benoît Panizzon- @ HomeOffice und normal erreichbar
--
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
______________________________________________________
Hi,
We're encountering a CPU load of approximately 90% on the Kamailio proxy
server. Additionally, there's an error logged indicating a lost connection
to MySQL. Could this indicate a problem with the configuration file or is
it related to MySQL itself? Your guidance would be appreciated.
MySQL version: Ver 14.14 Distrib 5.5.47
Kamailio version: 5.5.5
Error in logs:
/usr/local/sbin/kamailio[24933]: ERROR: db_mysql [km_dbase.c:122]:
db_mysql_submit_query(): driver error on query: Lost connection to MySQL
server during query (2013)
Hi All,
I'm new to Kamailio but have been running dozens of Freepbx systems for the
last 10 years. We are an Education Service District and service K-12
schools. Many of these we provide dial tone to, the rest we have
connections to to provide for toll avoidance and backup outbound calling
when the LEC fails. Our main focus is to save schools money
that can be used for education instead of infrastructure.
Right now I have a single freepbx machine that is using inbound routes to
send calls to the proper school district. I would like to replace this with
a Kamailio server instead but can't seem to get my mind around the best way
to do this.
I have 119 inbound routes in my current system with 22 trunks to the other
districts. This may increase in the future as we try to migrate districts
off of the expensive systems to a more open source way of calling.
Currently calls between districts take the route out of the system just to
come right back in to be routed to a different district. I would like to
avoid that if possible.
I've been trying to educate myself on the best practice in this type of
structure but can't seem to figure out the best way to make this work. Most
of the videos and websites assume a pretty intimate knowledge of Kamailio.
That and the database structure doesn't make sense to me.
I would like to keep each freepbx as its own registrar as we have lots of
crossover with extensions and a few of the districts have their own staff
that manage that aspect of the machines. .
Any suggestions would be appreciated. Please ask questions if this just
looks like I'm rambling.
--
Wayne Wenthin
Wide Area Network Administrator | CTA@MESD
503.257.1562 Phone/Fax
www.cascadetech.org
Hi community,
I am preparing a setup of Kamailio with radius accounting on a docker-compose environment. When configuring the acc_radius module I had to navigate through some old doc by Daniel and inspecting the code itself. The thing is that it seems working, but not. And, yes, I already trying without docker :)
Context: two containers, host newtork, to keep it simple
- one with kamailio + modules (acc, acc_radius with rad_cli) + radius client configuration
- another with freeradius + radius client configuration.
I ensure that all data correspond and radius config is fine and spin them up. Run some radius commands to test and let's try some accounting...
Executing a failed call and triggering the account flag method, I receive an opaque -1 error from the module:
```
kamailio-1 | 1(20) INFO: {1 22 INVITE yutncivdtflvzga@PT-96} <script>: Initial requests
kamailio-1 | 1(20) INFO: {1 22 INVITE yutncivdtflvzga@PT-96} <script>: FLAG FLT_ACC set
kamailio-1 | 1(20) NOTICE: {1 22 INVITE yutncivdtflvzga@PT-96} acc [acc.c:286]: acc_log_request(): ACC: call missed: timestamp=1709746392;method=INVITE;from_tag=wvaqi;to_tag=1a86669fc745788378faa461e7993953-78550000;call_id=yutncivdtflvzga@PT-96;code=404;reason=Not Found;src_user=1000;src_domain=kamailio-local;src_ip=172.20.0.1;dst_ouser=1001;dst_user=1001;dst_domain=kamailio-local
kamailio-1 | 1(20) ERROR: {1 22 INVITE yutncivdtflvzga@PT-96} acc_radius [acc_radius_mod.c:497]: acc_radius_send_request(): Radius accounting - ERROR - result: -1
```
Log accounting is working ok, but radius accounting not. Time for troubleshooting.
I tried to enable client debugging, but the module does not respond. So I modify the source directly... tested with `radclient` , `radtest`, `radsniff`... all seems to work when trying manually... I also used an internal radcli fuction `rc_check()` and it works. Meanwhile, I was unable to make it work with the module and the radcli library.
So another log output using internal functions to debug the configuration:
```
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:312]: check_cfg(): Clave: nas-identifier, Valor: radius-wac
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:312]: check_cfg(): Clave: authserver, Valor: radius
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:312]: check_cfg(): Clave: acctserver, Valor: radius
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:306]: check_cfg(): Clave: servers, Valor: /usr/local/etc/radcli/servers - OK file found
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:306]: check_cfg(): Clave: dictionary, Valor: /usr/local/etc/radcli/dictionary - OK file found
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:300]: check_cfg(): Clave: default_realm, Valor: -- not set --
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:312]: check_cfg(): Clave: radius_timeout, Valor: 10
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:312]: check_cfg(): Clave: radius_retries, Valor: 3
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:312]: check_cfg(): Clave: bindaddr, Valor: *
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:312]: check_cfg(): Clave: clientdebug, Valor: 1
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:369]: init_acc_rad(): RC_ACCT_INIT: rc_test_config looks good
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:375]: init_acc_rad(): RC_ACCT_INIT: Config applyed ok
```
The configuration seems ok, accepted by the library and seems to be applied properly, but when trying to parse its values... all seems like rubish...
```
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:401]: init_acc_rad(): RC_ACCT_INIT: Name: P�y:^
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:402]: init_acc_rad(): RC_ACCT_INIT: Max 1
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:403]: init_acc_rad(): RC_ACCT_INIT: Port: 125489528
kamailio-1 | 0(18) INFO: acc_radius [acc_radius_mod.c:404]: init_acc_rad(): RC_ACCT_INIT: Secret:
kamailio-1 | 0(18) ERROR: acc_radius [acc_radius_mod.c:410]: init_acc_rad(): RC_CLIENTDEBUG: No clientdebug specified
```
I'm using `libradcli4 1.2.11-1+b2` for running on the container and `libradcli-dev 1.2.11-1build1` for compiling.
Open to hear ideas, somebody using it actively on latest 5.7 release?
Some updated documentation flying around?
I was thinking to open a GitHub issue to handle the documentation issue.
Thanks in advance!
Hello,
I have remote users registering/ routing calls through my server. When calls do pass through the server, the server updates the from name, to uri and from uri via updating the pseudovariables $fn, $tu, and $fu respectively. While this is has been working, I do occasionally see calls failing to process as the remote gateway fails the call with a "400 Bad From header". Inspecting the A-leg INVITE and the B-leg INVITE after updating the pseudovariables, I see the following:
A-leg INVITE:
INVITE sip:15551112222@example.com SIP/2.0
Via: SIP/2.0/UDP 79..xx.xx.xx:61379;rport;branch=z9hG4bKPj2b8935f4460447538d0176dcfb5c74a1
Max-Forwards: 70
From: sip:12223334444@example.com;tag=dff3c585a6154f23898e1121918f1752
To: sip:15551112222@example.com
Contact: <sip:12223334444@79..xx.xx.xx:61379;ob>
Call-ID: d793331e066f47bdafc0ad957cb506cc
CSeq: 30770 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
Proxy-Authorization: Digest username="12223334444", realm="example.com", nonce="ZhUw02YVL6cdi51KMymTxGpzCZCZhd8G", [uri="sip:15551112222@example.com](mailto:uri=)", response="3a25b4ea0b1154e31caee1184a92f12b"
Content-Type: application/sdp
Content-Length: 627
v=0
o=- 3921660487 3921660487 IN IP4 79..xx.xx.xx
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0
m=audio 4006 RTP/AVP 96 97 98 99 3 0 8 9 120 121 122
c=IN IP4 79..xx.xx.xx
b=TIAS:64000
a=rtcp:4007 IN IP4 79..xx.xx.xx
a=sendrecv
a=rtpmap:96 speex/16000
a=rtpmap:97 speex/8000
a=rtpmap:98 speex/32000
a=rtpmap:99 iLBC/8000
a=fmtp:99 mode=30
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:9 G722/8000
a=rtpmap:120 telephone-event/16000
a=fmtp:120 0-16
a=rtpmap:121 telephone-event/8000
a=fmtp:121 0-16
a=rtpmap:122 telephone-event/32000
a=fmtp:122 0-16
a=ssrc:63772004 cname:3ff849bd611036a7
----------------------------------
B-leg INVITE:
INVITE sip:15551112222@togateway.com SIP/2.0
Record-Route: <sip:10.64.54.207;lr;ftag=dff3c585a6154f23898e1121918f1752;did=e21.65c1>
Via: SIP/2.0/UDP 10.64.54.207:5060;branch=z9hG4bK919d.5ca83e030c0879093169546cd80591a6.0
Via: SIP/2.0/UDP 79..xx.xx.xx:61379;received=79..xx.xx.xx;rport=61379;branch=z9hG4bKPj2b8935f4460447538d0176dcfb5c74a1
Max-Forwards: 15
From: sip:12125557777@example.com"Updated Name" ;tag=dff3c585a6154f23898e1121918f1752
To: sip:15551112222@togateway.com
Contact: <sip:12125557777@79..xx.xx.xx:61379;ob>
Call-ID: d793331e066f47bdafc0ad957cb506cc
CSeq: 30770 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
Content-Type: application/sdp
Content-Length: 609
v=0
o=- 3921660487 3921660487 IN IP4 10.64.54.207
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0
m=audio 18400 RTP/AVP 96 97 98 99 3 0 8 9 120 121 122
c=IN IP4 10.64.54.207
b=TIAS:64000
a=ssrc:63772004 cname:3ff849bd611036a7
a=rtpmap:96 speex/16000
a=rtpmap:97 speex/8000
a=rtpmap:98 speex/32000
a=rtpmap:99 iLBC/8000
a=fmtp:99 mode=30
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:9 G722/8000
a=rtpmap:120 telephone-event/16000
a=fmtp:120 0-16
a=rtpmap:121 telephone-event/8000
a=fmtp:121 0-16
a=rtpmap:122 telephone-event/32000
a=fmtp:122 0-16
a=sendrecv
a=rtcp:18401
Note that I've updated the following on the B-leg:
$fn = "Updated Name" // originally nothing
$fu = sip:12125557777@example.com // originally sip:12223334444@example.com
$tu = sip:15551112222@togateway.com // originally sip:15551112222@example.com
While the from uri, and to uri do get updated, the from name is injected in the wrong place of the from header. This only seems to happen when the A-leg is missing the "<" and ">" characters enclosing the from headers.
Should I not be updating the pseudo variables in this manner to update the from name, to uri and from uri; is there another way to update these attributes of the header without malforming it?
Thank you.