Browse Source

listeners update

* moves definitions of listener macros to own file
* moves listen directives to own file
* adds internal listener
  * when kamailio <-> freeswitch is done on local net
* adds advertise, external
* ports can be redefined
* registrar proxy_path set with dependency from internal listener
* allow extra defs in untracked custom-defs.cfg
* allow custom listeners in untracked custom-listeners.cfg
* adds macro to skip default listeners

kazoo-kamailio
  * allow LOCAL_IP_INTERFACE env to check
    for local ip (docker in swarm mode)
  * boot as option to call prepare & start
master
lazedo 6 years ago
parent
commit
a44e160121
10 changed files with 155 additions and 37 deletions
  1. +34
    -0
      kamailio/default-listeners.cfg
  2. +4
    -0
      kamailio/default.cfg
  3. +6
    -0
      kamailio/defs.cfg
  4. +14
    -1
      kamailio/kamailio.cfg
  5. +72
    -0
      kamailio/listener-defs.cfg
  6. +0
    -30
      kamailio/local.cfg
  7. +9
    -1
      kamailio/registrar-role.cfg
  8. +2
    -2
      kamailio/tls-role.cfg
  9. +2
    -2
      kamailio/websockets-role.cfg
  10. +12
    -1
      system/sbin/kazoo-kamailio

+ 34
- 0
kamailio/default-listeners.cfg View File

@ -0,0 +1,34 @@
## YOU SHOULD NOT HAVE TO CHANGE THESE!
## This will bind the default SIP listeners
## as determined above. The tls-role and
## websocket-role will use the appropriate
## definitions if enabled. These are here
## for those with complex layouts who know
## what they are doing :)
#!ifdef WITH_ADVERTISE_LISTENER
listen=SIP_UDP_ADVERTISED_LISTENER
listen=SIP_TCP_ADVERTISED_LISTENER
listen=ALG_UDP_ADVERTISED_LISTENER
listen=ALG_TCP_ADVERTISED_LISTENER
#!endif
#!ifdef WITH_EXTERNAL_LISTENER
listen=SIP_UDP_EXTERNAL_LISTENER
listen=SIP_TCP_EXTERNAL_LISTENER
listen=ALG_UDP_EXTERNAL_LISTENER
listen=ALG_TCP_EXTERNAL_LISTENER
#!endif
#!ifndef WITHOUT_DEFAULT_LISTENER
listen=SIP_UDP_LISTENER
listen=SIP_TCP_LISTENER
listen=ALG_UDP_LISTENER
listen=ALG_TCP_LISTENER
#!endif
#!ifdef WITH_INTERNAL_LISTENER
listen=PORT_PROTO_INTERNAL_LISTENER
#!endif

+ 4
- 0
kamailio/default.cfg View File

@ -725,6 +725,10 @@ route[EXTERNAL_TO_INTERNAL_RELAY]
t_set_fr(0, $sel(cfg_get.kazoo.to_internal_no_response_timer)); t_set_fr(0, $sel(cfg_get.kazoo.to_internal_no_response_timer));
#!ifdef WITH_INTERNAL_LISTENER
force_send_socket(PORT_PROTO_INTERNAL_LISTENER);
#!endif
t_relay(); t_relay();
} }


+ 6
- 0
kamailio/defs.cfg View File

@ -25,6 +25,12 @@ kazoo.to_external_no_response_timer = INTERNAL_TO_EXTERNAL_NO_RESPONSE_TIMER des
#!endif #!endif
#!endif #!endif
#!ifndef MY_PUBLIC_IP_ADDRESS
#!ifdef MY_PUBLIC_IP
#!substdef "!MY_PUBLIC_IP_ADDRESS!$def(MY_PUBLIC_IP)!g"
#!endif
#!endif
#!ifndef WEBSOCKET_NO_ORIGIN_RESTRICTION #!ifndef WEBSOCKET_NO_ORIGIN_RESTRICTION
#!ifndef MY_WEBSOCKET_DOMAIN #!ifndef MY_WEBSOCKET_DOMAIN
#!substdef "!MY_WEBSOCKET_DOMAIN!$HN(d)!g" #!substdef "!MY_WEBSOCKET_DOMAIN!$HN(d)!g"


+ 14
- 1
kamailio/kamailio.cfg View File

@ -39,13 +39,26 @@ loadmodule "ipops.so"
loadmodule "pv.so" loadmodule "pv.so"
loadmodule "textops.so" loadmodule "textops.so"
####### Local Configuration ######## ####### Local Configuration ########
include_file "local.cfg" include_file "local.cfg"
####### Custom defs ########
import_file "custom-defs.cfg"
####### defaults not configured in local ######## ####### defaults not configured in local ########
include_file "defs.cfg" include_file "defs.cfg"
####### listeners defs ########
include_file "listener-defs.cfg"
####### custom listeners ########
import_file "custom-listeners.cfg"
####### default listeners ########
#!ifndef SKIP_DEFAULT_LISTENERS
include_file "default-listeners.cfg"
#!endif
####### Default Configuration ###### ####### Default Configuration ######
include_file "default.cfg" include_file "default.cfg"


+ 72
- 0
kamailio/listener-defs.cfg View File

@ -0,0 +1,72 @@
## YOU SHOULD NOT HAVE TO CHANGE THESE!
## By setting MY_IP_ADDRESS above these will resolve
## to the proper bindings. These are here
## for those with complex layouts who know
## what they are doing :)
#!trydef SIP_PORT 5060
#!trydef SIP_S_PORT 5061
#!trydef ALG_PORT 7000
#!trydef ALG_S_PORT 7001
#!trydef WS_PORT 5064
#!trydef WSS_PORT 5065
#!trydef INTERNAL_PORT 5070
#!trydef INTERNAL_PROTO udp
#!trydef SIP_PUBLIC_PORT 5060
#!trydef SIP_S_PUBLIC_PORT 5061
#!trydef ALG_PUBLIC_PORT 7000
#!trydef ALG_S_PUBLIC_PORT 7001
#!substdef "!UDP_SIP!udp:MY_IP_ADDRESS:$def(SIP_PORT)!g"
#!substdef "!TCP_SIP!tcp:MY_IP_ADDRESS:$def(SIP_PORT)!g"
#!substdef "!TLS_SIP!tls:MY_IP_ADDRESS:$def(SIP_S_PORT)!g"
#!substdef "!UDP_ALG!udp:MY_IP_ADDRESS:$def(ALG_PORT)!g"
#!substdef "!TCP_ALG!tcp:MY_IP_ADDRESS:$def(ALG_PORT)!g"
#!substdef "!TLS_ALG!tls:MY_IP_ADDRESS:$def(ALG_S_PORT)!g"
#!substdef "!TCP_WS!tcp:MY_IP_ADDRESS:$def(WS_PORT)!g"
#!substdef "!TLS_WSS!tls:MY_IP_ADDRESS:$def(WSS_PORT)!g"
#!substdef "!PROTO_PORT_INTERNAL!$def(INTERNAL_PROTO):MY_IP_ADDRESS:$def(INTERNAL_PORT)!g"
#!substdef "!UDP_ADVERTISED_SIP!udp:MY_IP_ADDRESS:$def(SIP_PORT) advertise $def(MY_PUBLIC_IP):$def(SIP_PUBLIC_PORT)!g"
#!substdef "!TCP_ADVERTISED_SIP!tcp:MY_IP_ADDRESS:$def(SIP_PORT) advertise $def(MY_PUBLIC_IP):$def(SIP_PUBLIC_PORT)!g"
#!substdef "!TLS_ADVERTISED_SIP!tcp:MY_IP_ADDRESS:$def(SIP_S_PORT) advertise $def(MY_PUBLIC_IP):$def(SIP_S_PUBLIC_PORT)!g"
#!substdef "!UDP_ADVERTISED_ALG!udp:MY_IP_ADDRESS:$def(ALG_PORT) advertise $def(MY_PUBLIC_IP):$def(ALG_PUBLIC_PORT)!g"
#!substdef "!TCP_ADVERTISED_ALG!tcp:MY_IP_ADDRESS:$def(ALG_PORT) advertise $def(MY_PUBLIC_IP):$def(ALG_PUBLIC_PORT)!g"
#!substdef "!TLS_ADVERTISED_ALG!tcp:MY_IP_ADDRESS:$def(ALG_S_PORT) advertise $def(MY_PUBLIC_IP):$def(ALG_S_PUBLIC_PORT)!g"
#!substdef "!UDP_EXTERNAL_SIP!udp:MY_IP_ADDRESS:$def(SIP_PUBLIC_PORT) advertise $def(MY_PUBLIC_IP):$def(SIP_PUBLIC_PORT)!g"
#!substdef "!TCP_EXTERNAL_SIP!tcp:MY_IP_ADDRESS:$def(SIP_PUBLIC_PORT) advertise $def(MY_PUBLIC_IP):$def(SIP_PUBLIC_PORT)!g"
#!substdef "!TLS_EXTERNAL_SIP!tcp:MY_IP_ADDRESS:$def(SIP_S_PUBLIC_PORT) advertise $def(MY_PUBLIC_IP):$def(SIP_S_PUBLIC_PORT)!g"
#!substdef "!UDP_EXTERNAL_ALG!udp:MY_IP_ADDRESS:$def(ALG_PUBLIC_PORT) advertise $def(MY_PUBLIC_IP):$def(ALG_PUBLIC_PORT)!g"
#!substdef "!TCP_EXTERNAL_ALG!tcp:MY_IP_ADDRESS:$def(ALG_PUBLIC_PORT) advertise $def(MY_PUBLIC_IP):$def(ALG_PUBLIC_PORT)!g"
#!substdef "!TLS_EXTERNAL_ALG!tcp:MY_IP_ADDRESS:$def(ALG_S_PUBLIC_PORT) advertise $def(MY_PUBLIC_IP):$def(ALG_S_PUBLIC_PORT)!g"
#!substdef "!SIP_UDP_LISTENER!UDP_SIP!g"
#!substdef "!SIP_TCP_LISTENER!TCP_SIP!g"
#!substdef "!SIP_TLS_LISTENER!TLS_SIP!g"
#!substdef "!ALG_UDP_LISTENER!UDP_ALG!g"
#!substdef "!ALG_TCP_LISTENER!TCP_ALG!g"
#!substdef "!ALG_TLS_LISTENER!TLS_ALG!g"
#!substdef "!WS_TCP_LISTENER!TCP_WS!g"
#!substdef "!WSS_TLS_LISTENER!TLS_WSS!g"
#!substdef "!SIP_UDP_EXTERNAL_LISTENER!UDP_EXTERNAL_SIP!g"
#!substdef "!SIP_TCP_EXTERNAL_LISTENER!TCP_EXTERNAL_SIP!g"
#!substdef "!SIP_TLS_EXTERNAL_LISTENER!TLS_EXTERNAL_SIP!g"
#!substdef "!ALG_UDP_EXTERNAL_LISTENER!UDP_EXTERNAL_ALG!g"
#!substdef "!ALG_TCP_EXTERNAL_LISTENER!TCP_EXTERNAL_ALG!g"
#!substdef "!ALG_TLS_EXTERNAL_LISTENER!TLS_EXTERNAL_ALG!g"
#!substdef "!SIP_UDP_ADVERTISED_LISTENER!UDP_ADVERTISED_SIP!g"
#!substdef "!SIP_TCP_ADVERTISED_LISTENER!TCP_ADVERTISED_SIP!g"
#!substdef "!SIP_TLS_ADVERTISED_LISTENER!TLS_ADVERTISED_SIP!g"
#!substdef "!ALG_UDP_ADVERTISED_LISTENER!UDP_ADVERTISED_ALG!g"
#!substdef "!ALG_TCP_ADVERTISED_LISTENER!TCP_ADVERTISED_ALG!g"
#!substdef "!ALG_TLS_ADVERTISED_LISTENER!TLS_ADVERTISED_ALG!g"
#!substdef "!PORT_PROTO_INTERNAL_LISTENER!PROTO_PORT_INTERNAL!g"

+ 0
- 30
kamailio/local.cfg View File

@ -125,33 +125,3 @@
## then you can mirror INVITE and MESSAGE here ## then you can mirror INVITE and MESSAGE here
# # #!define SIP_TRACE_URI "sip:127.0.0.1:9060" # # #!define SIP_TRACE_URI "sip:127.0.0.1:9060"
# # #!define HEP_CAPTURE_ID 1 # # #!define HEP_CAPTURE_ID 1
include_file "defs.cfg"
## YOU SHOULD NOT HAVE TO CHANGE THESE!
## By setting MY_IP_ADDRESS above these will resolve
## to the proper bindings. These are here
## for those with complex layouts who know
## what they are doing :)
#!substdef "!UDP_SIP!udp:MY_IP_ADDRESS:5060!g"
#!substdef "!TCP_SIP!tcp:MY_IP_ADDRESS:5060!g"
#!substdef "!TLS_SIP!tls:MY_IP_ADDRESS:5061!g"
#!substdef "!UDP_ALG_SIP!udp:MY_IP_ADDRESS:7000!g"
#!substdef "!TCP_ALG_SIP!tcp:MY_IP_ADDRESS:7000!g"
#!substdef "!TLS_ALG_SIP!tls:MY_IP_ADDRESS:7001!g"
#!substdef "!TCP_WS!tcp:MY_IP_ADDRESS:5064!g"
#!substdef "!UDP_WS_SIP!udp:MY_IP_ADDRESS:5064!g"
#!substdef "!TLS_WSS!tls:MY_IP_ADDRESS:5065!g"
#!substdef "!UDP_WSS_SIP!udp:MY_IP_ADDRESS:5065!g"
## YOU SHOULD NOT HAVE TO CHANGE THESE!
## This will bind the default SIP listeners
## as determined above. The tls-role and
## websocket-role will use the appropriate
## definitions if enabled. These are here
## for those with complex layouts who know
## what they are doing :)
listen=UDP_SIP
listen=TCP_SIP
listen=UDP_ALG_SIP
listen=TCP_ALG_SIP

+ 9
- 1
kamailio/registrar-role.cfg View File

@ -410,8 +410,16 @@ route[SAVE_LOCATION]
if(af==INET6) { if(af==INET6) {
$var(AdvIP) = "[" + $RAi + "]"; $var(AdvIP) = "[" + $RAi + "]";
} }
#!ifdef WITH_INTERNAL_LISTENER
$var(proxy_path) = $_s(sip:MY_IP_ADDRESS:$def(INTERNAL_PORT));
$var(proto) = $def(INTERNAL_PROTO);
#!else
$var(proxy_path) = $_s(sip:MY_IP_ADDRESS:$var(port));
$var(proto) = $proto;
#!endif
$var(amqp_payload_request) = $_s({"Event-Category" : "directory", "Event-Name" : "reg_success", "Status" : "$var(Status)", "Event-Timestamp" : $TS, "Expires" : $(var(expires){s.int}), "First-Registration" : $var(new_reg), "Contact" : "$(ct{s.escape.common}{s.replace,\','}{s.replace,$$,})", "Call-ID" : "$ci", "Realm" : "$fd", "Username" : "$fU", "From-User" : "$fU", "From-Host" : "$fd", "To-User" : "$tU", "To-Host" : "$td", "User-Agent" : "$(ua{s.escape.common}{s.replace,\','}{s.replace,$$,})" , "Custom-Channel-Vars" : $xavp(ulattrs=>custom_channel_vars), "Proxy-Path" : "sip:MY_IP_ADDRESS:$var(port)", "Proxy-Protocol" : "$proto", "Proxy-IP" : "$var(AdvIP)", "Proxy-Port" : "$RAp", "Source-IP": "$si", "Source-Port": "$sp" });
$var(amqp_payload_request) = $_s({"Event-Category" : "directory", "Event-Name" : "reg_success", "Status" : "$var(Status)", "Event-Timestamp" : $TS, "Expires" : $(var(expires){s.int}), "First-Registration" : $var(new_reg), "Contact" : "$(ct{s.escape.common}{s.replace,\','}{s.replace,$$,})", "Call-ID" : "$ci", "Realm" : "$fd", "Username" : "$fU", "From-User" : "$fU", "From-Host" : "$fd", "To-User" : "$tU", "To-Host" : "$td", "User-Agent" : "$(ua{s.escape.common}{s.replace,\','}{s.replace,$$,})" , "Custom-Channel-Vars" : $xavp(ulattrs=>custom_channel_vars), "Proxy-Path" : "$var(proxy_path)", "Proxy-Protocol" : "$var(proto)", "Proxy-IP" : "$var(AdvIP)", "Proxy-Port" : "$RAp", "Source-IP": "$si", "Source-Port": "$sp" });
$var(amqp_routing_key) = "registration.success." + $(fd{kz.encode}) + "." + $(fU{kz.encode}); $var(amqp_routing_key) = "registration.success." + $(fd{kz.encode}) + "." + $(fU{kz.encode});
kazoo_publish("registrar", $var(amqp_routing_key), $var(amqp_payload_request)); kazoo_publish("registrar", $var(amqp_routing_key), $var(amqp_payload_request));


+ 2
- 2
kamailio/tls-role.cfg View File

@ -1,7 +1,7 @@
enable_tls = yes enable_tls = yes
listen=TLS_SIP
listen=TLS_ALG_SIP
listen=SIP_TLS_LISTENER
listen=ALG_TLS_LISTENER
####### TLS Parameters ######### ####### TLS Parameters #########
loadmodule "tls.so" loadmodule "tls.so"


+ 2
- 2
kamailio/websockets-role.cfg View File

@ -1,8 +1,8 @@
tcp_accept_no_cl=yes tcp_accept_no_cl=yes
listen=TCP_WS
listen=WS_TCP_LISTENER
#!ifdef TLS_ROLE #!ifdef TLS_ROLE
listen=TLS_WSS
listen=WSS_TLS_LISTENER
#!endif #!endif
######## NAT Traversal module - signaling functions ######## ######## NAT Traversal module - signaling functions ########


+ 12
- 1
system/sbin/kazoo-kamailio View File

@ -45,8 +45,14 @@ RAM_DISK_SIZE=${RAM_DISK_SIZE:-256m}
RAM_DISK_FREE_SIZE_PERC=${RAM_DISK_FREE_SIZE:-30} RAM_DISK_FREE_SIZE_PERC=${RAM_DISK_FREE_SIZE:-30}
RAM_DISK_ENABLED=${RAM_DISK_ENABLED:-false} RAM_DISK_ENABLED=${RAM_DISK_ENABLED:-false}
EXTRA_OPTIONS=${EXTRA_OPTIONS:-"-x tlsf -w /tmp"} EXTRA_OPTIONS=${EXTRA_OPTIONS:-"-x tlsf -w /tmp"}
LOCAL_IP_INTERFACE=${LOCAL_IP_INTERFACE:-none}
if [[ "${LOCAL_IP_INTERFACE}" != "none" ]]; then
MY_LOCAL_IP=$(ip -4 addr show ${LOCAL_IP_INTERFACE} | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
else
MY_LOCAL_IP=$(ip route get 8.8.8.8 2> /dev/null | awk '{print ""$7""; exit}')
fi
MY_LOCAL_IP=$(ip route get 8.8.8.8 2> /dev/null | awk '{print ""$7""; exit}')
if is_ipaddress ${MY_LOCAL_IP}; then if is_ipaddress ${MY_LOCAL_IP}; then
EXTRA_OPTIONS+=" -A MY_LOCAL_IP=${MY_LOCAL_IP}" EXTRA_OPTIONS+=" -A MY_LOCAL_IP=${MY_LOCAL_IP}"
fi fi
@ -298,6 +304,11 @@ case "$1" in
check) check)
check_config check_config
;; ;;
boot)
shift
prepare
start -DD $@
;;
*) *)
echo $"Usage: $0 {prepare|start|background|stop|restart|reset-restart|status|check|pid}" echo $"Usage: $0 {prepare|start|background|stop|restart|reset-restart|status|check|pid}"
esac esac


Loading…
Cancel
Save