Hi.
cfg file attached and init.d/opensips34 attached.
Regards,
Ronald Geerligs
August 4, 2023 at 9:48 AM, "Răzvan Crainea" <raz...@opensips.org> wrote:
>
> Hi, Ronald!
>
> Usage of nat_uac_test has been changed between 3.3 and 3.4 [1]. Did you
> update your function according to the 3.4 syntax? Can you paste the
> snippet you are using?
>
> [1] https://www.opensips.org/Documentation/Migration-3-3-0-to-3-4-0
>
> Best regards,
>
> Răzvan Crainea
> OpenSIPS Core Developer / SIPhub CTO
> http://www.opensips-solutions.com/ / https://www.siphub.com/
>
> On 8/3/23 19:15, r...@rvgeerligs.nl wrote:
>
> >
> > Hi ,
> >
> > I compiled v 3.3 all is working. Compiled 3.4 and I get the errors below.
> >
> > I looked at the source 3.4, also at the source in version 3.3.5
> > (nathelper and nattraversal) but I could not simply replace the 3.4
> > source with the 3.3 source.
> >
> > This looks like a compiler setting or a programm issue.
> >
> > Please advice,
> >
> >
> > Ronald Geerligs
> >
> >
> > ---
> > error from logfile:
> >
> > DBG:core:trace_prot_bind: <proto_hep> has no bind api function
> >
> >
> > 2023-08-03T12:20:09.298662+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > DBG:core:init_xlog: failed to load trace protocol!
> >
> >
> > 2023-08-03T12:20:09.298686+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > DBG:core:count_module_procs: modules require 1 extra processes
> >
> >
> > 2023-08-03T12:20:09.298712+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > DBG:core:init_pkg_stats: setting stats for 18 processes
> >
> >
> > 2023-08-03T12:20:09.298741+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > DBG:core:fix_actions: fixing force_rport, /etc/opensips/opensips34.cfg:169
> >
> >
> > 2023-08-03T12:20:09.298769+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > DBG:core:fix_actions: fixing nat_uac_test, /etc/opensips/opensips34.cfg:170
> >
> >
> > 2023-08-03T12:20:09.298796+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > ERROR:core:fix_cmd: Param [1] expected to be a string or variable
> >
> >
> > 2023-08-03T12:20:09.298826+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > ERROR:core:fix_actions: Failed to fix command <nat_uac_test>
> >
> >
> > 2023-08-03T12:20:09.298851+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > ERROR:core:fix_actions: fixing failed (code=-6) at
> > /etc/opensips/opensips34.cfg:170
> >
> >
> > 2023-08-03T12:20:09.298879+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > CRITICAL:core:fix_expr: fix_actions error
> >
> >
> > 2023-08-03T12:20:09.298905+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > ERROR:core:main: failed to fix configuration with err code -6
> >
> >
> > 2023-08-03T12:20:09.298936+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > INFO:core:cleanup: cleanup
> >
> >
> > 2023-08-03T12:20:09.298962+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > DBG:presence_xml:destroy: start
> >
> >
> > 2023-08-03T12:20:09.298991+00:00 xsp2 /usr/local/sbin/opensips[52802]:
> > NOTICE:presence:destroy: destroy module ...
> >
> >
> >
> > _______________________________________________
> > Users mailing list
> > Users@lists.opensips.org
> > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >
>
> _______________________________________________
> Users mailing list
> Users@lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
#
# OpenSIPS residential configuration script
# by OpenSIPS Solutions <t...@opensips-solutions.com>
#
# This script was generated via "make menuconfig", from
# the "Residential" scenario.
# You can enable / disable more features / functionalities by
# re-generating the scenario with different options.#
#
# Please refer to the Core CookBook at:
# https://opensips.org/Resources/DocsCookbooks
# for a explanation of possible statements, functions and parameters.
#
####### Global Parameters #########
/* uncomment the following lines to enable debugging */
#debug_mode=yes
log_level=4
xlog_level=3
stderror_enabled=yes
syslog_enabled=yes
syslog_facility=LOG_LOCAL6
udp_workers=4
/* uncomment the next line to enable the auto temporary blacklisting of
not available destinations (default disabled) */
#disable_dns_blacklist=no
/* uncomment the next line to enable IPv6 lookup after IPv4 dns
lookup failures (default disabled) */
#dns_try_ipv6=yes
#socket=udp:127.0.0.1:5060 # CUSTOMIZE ME
#socket=tcp:127.0.0.1:5060 # CUSTOMIZE ME
socket=udp:10.0.0.186:5060 as 129.146.82.194:5060 # CUSTOMIZE ME
socket=tcp:10.0.0.186:5060 as 129.146.82.194:5060 # CUSTOMIZE ME
alias=xsp2.rvgeerligs.nl
####### Modules Section ########
#set module path
mpath="/usr/local/lib64/opensips/modules/"
#### SIGNALING module
loadmodule "signaling.so"
#### StateLess module
loadmodule "sl.so"
#### Transaction Module
loadmodule "tm.so"
modparam("tm", "fr_timeout", 5)
modparam("tm", "fr_inv_timeout", 30)
modparam("tm", "restart_fr_on_each_reply", 0)
modparam("tm", "onreply_avp_mode", 1)
#### Record Route Module
loadmodule "rr.so"
/* do not append from tag to the RR (no need for this script) */
modparam("rr", "append_fromtag", 0)
#### MAX ForWarD module
loadmodule "maxfwd.so"
#### SIP MSG OPerationS module
loadmodule "sipmsgops.so"
#### FIFO Management Interface
loadmodule "mi_fifo.so"
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
modparam("mi_fifo", "fifo_mode", 0666)
#### MYSQL module
loadmodule "db_mysql.so"
#### USeR LOCation module
loadmodule "usrloc.so"
modparam("usrloc", "nat_bflag", "NAT")
modparam("usrloc", "working_mode_preset", "single-instance-no-db")
#### REGISTRAR module
loadmodule "registrar.so"
modparam("registrar", "tcp_persistent_flag", "TCP_PERSISTENT")
modparam("registrar", "received_avp", "$avp(received_nh)")/* uncomment the next
line not to allow more than 10 contacts per AOR */
#modparam("registrar", "max_contacts", 10)
#### ACCounting module
loadmodule "acc.so"
/* what special events should be accounted ? */
modparam("acc", "early_media", 0)
modparam("acc", "report_cancels", 0)
/* by default we do not adjust the direct of the sequential requests.
if you enable this parameter, be sure to enable "append_fromtag"
in "rr" module */
modparam("acc", "detect_direction", 0)
modparam("acc", "db_url",
"mysql://opensips:opensipsrw@localhost/opensips34") # CUSTOMIZE ME
#### AUTHentication modules
loadmodule "auth.so"
loadmodule "auth_db.so"
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("auth_db", "db_url",
"mysql://opensips:opensipsrw@localhost/opensips34") # CUSTOMIZE ME
modparam("auth_db", "load_credentials", "")
#### ALIAS module
loadmodule "alias_db.so"
modparam("alias_db", "db_url",
"mysql://opensips:opensipsrw@localhost/opensips34") # CUSTOMIZE ME
#### PRESENCE modules
loadmodule "xcap.so"
loadmodule "presence.so"
loadmodule "presence_xml.so"
modparam("xcap|presence", "db_url",
"mysql://opensips:opensipsrw@localhost/opensips34") # CUSTOMIZE ME
modparam("presence_xml", "force_active", 1)
modparam("presence", "fallback2db", 0)
#### DIALOG module
loadmodule "dialog.so"
modparam("dialog", "dlg_match_mode", 1)
modparam("dialog", "default_timeout", 21600) # 6 hours timeout
modparam("dialog", "db_mode", 2)
modparam("dialog", "db_url",
"mysql://opensips:opensipsrw@localhost/opensips34") # CUSTOMIZE ME
#### NAT modules
loadmodule "nathelper.so"
modparam("nathelper", "natping_interval", 10)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "sipping_bflag", "SIP_PING_FLAG")
modparam("nathelper", "sipping_from", "sip:pinger@127.0.0.1") #CUSTOMIZE ME
modparam("nathelper", "received_avp", "$avp(received_nh)")
loadmodule "rtpproxy.so"
modparam("rtpproxy", "rtpproxy_sock", "udp:localhost:12221") # CUSTOMIZE ME
#### DIALPLAN module
loadmodule "dialplan.so"
modparam("dialplan", "db_url",
"mysql://opensips:opensipsrw@localhost/opensips34") # CUSTOMIZE ME
#### DYNAMMIC ROUTING module
loadmodule "drouting.so"
modparam("drouting", "db_url",
"mysql://opensips:opensipsrw@localhost/opensips34") # CUSTOMIZE ME
loadmodule "proto_udp.so"
loadmodule "proto_tcp.so"
####### Routing Logic ########
# main request routing logic
route{
# initial NAT handling; detect if the request comes from behind a NAT
# and apply contact fixing
force_rport();
if (nat_uac_test(23)) {
if (is_method("REGISTER")) {
fix_nated_register();
setbflag("NAT");
} else {
fix_nated_contact();
setflag("NAT");
}
}
if (!mf_process_maxfwd_header(10)) {
send_reply(483,"Too Many Hops");
exit;
}
if (has_totag()) {
# handle hop-by-hop ACK (no routing required)
if ( is_method("ACK") && t_check_trans() ) {
t_relay();
exit;
}
# sequential request within a dialog should
# take the path determined by record-routing
if ( !loose_route() ) {
if (is_method("SUBSCRIBE") && is_myself("$rd")) {
# in-dialog subscribe requests
route(handle_presence);
exit;
}
# we do record-routing for all our traffic, so we
should not
# receive any sequential requests without Route hdr.
send_reply(404,"Not here");
exit;
}
# validate the sequential request against dialog
if ( $DLG_status!=NULL && !validate_dialog() ) {
xlog("In-Dialog $rm from $si (callid=$ci) is not valid
according to dialog\n");
## exit;
}
if (is_method("BYE")) {
# do accounting even if the transaction fails
do_accounting("db","failed");
}
if (check_route_param("nat=yes"))
setflag("NAT");
# route it out to whatever destination was set by loose_route()
# in $du (destination URI).
route(relay);
exit;
}
# CANCEL processing
if (is_method("CANCEL")) {
if (t_check_trans())
t_relay();
exit;
}
# absorb retransmissions, but do not create transaction
t_check_trans();
if ( !(is_method("REGISTER") || is_from_gw() ) ) {
if (is_myself("$fd")) {
# authenticate if from local subscriber
# authenticate all initial non-REGISTER request that
pretend to be
# generated by local subscriber (domain from FROM URI
is local)
if (!proxy_authorize("", "subscriber")) {
proxy_challenge("", "auth");
exit;
}
if ($au!=$fU) {
send_reply(403,"Forbidden auth ID");
exit;
}
consume_credentials();
# caller authenticated
} else {
# if caller is not local, then called number must be
local
if (!is_myself("$rd")) {
send_reply(403,"Relay Forbidden");
exit;
}
}
}
# preloaded route checking
if (loose_route()) {
xlog("L_ERR",
"Attempt to route with preloaded Route's
[$fu/$tu/$ru/$ci]");
if (!is_method("ACK"))
send_reply(403,"Preload Route denied");
exit;
}
# record routing
if (!is_method("REGISTER|MESSAGE"))
record_route();
# account only INVITEs
if (is_method("INVITE")) {
# create dialog with timeout
if ( !create_dialog("B") ) {
send_reply(500,"Internal Server Error");
exit;
}
do_accounting("db");
}
if (!is_myself("$rd")) {
append_hf("P-hint: outbound\r\n");
route(relay);
}
# requests for my domain
if( is_method("PUBLISH|SUBSCRIBE"))
route(handle_presence);
if (is_method("REGISTER")) {
# authenticate the REGISTER requests
if (!www_authorize("", "subscriber")) {
www_challenge("", "auth");
exit;
}
if ($au!=$tU) {
send_reply(403,"Forbidden auth ID");
exit;
}
if ($socket_in(proto) == "tcp")
setflag("TCP_PERSISTENT");
if (isflagset("NAT")) {
setbflag("SIP_PING_FLAG");
}
# store the registration and generate a SIP reply
if (!save("location"))
xlog("failed to register AoR $tu\n");
exit;
}
if ($rU==NULL) {
# request with no Username in RURI
send_reply(484,"Address Incomplete");
exit;
}
# apply DB based aliases
alias_db_lookup("dbaliases");
# apply transformations from dialplan table
dp_translate( 0, "$rU", $rU);
if ($rU=~"^\+[1-9][0-9]+$") {
strip(1);
if (!do_routing(0)) {
send_reply(500,"No PSTN Route found");
exit;
}
route(relay);
exit;
}
# do lookup with method filtering
if (!lookup("location", "method-filtering")) {
if (!db_does_uri_exist("$ru","subscriber")) {
send_reply(420,"Bad Extension");
exit;
}
t_reply(404, "Not Found");
exit;
}
if (isbflagset("NAT")) setflag("NAT");
# when routing via usrloc, log the missed calls also
do_accounting("db","missed");
route(relay);
}
route[relay] {
# for INVITEs enable some additional helper routes
if (is_method("INVITE")) {
if (isflagset("NAT") && has_body("application/sdp")) {
rtpproxy_offer("ro");
}
t_on_branch("per_branch_ops");
t_on_reply("handle_nat");
t_on_failure("missed_call");
}
if (isflagset("NAT")) {
add_rr_param(";nat=yes");
}
if (!t_relay()) {
send_reply(500,"Internal Error");
}
exit;
}
# Presence route
route[handle_presence]
{
if (!t_newtran()) {
sl_reply_error();
exit;
}
if(is_method("PUBLISH")) {
handle_publish();
} else
if( is_method("SUBSCRIBE")) {
handle_subscribe();
}
exit;
}
branch_route[per_branch_ops] {
xlog("new branch at $ru\n");
}
onreply_route[handle_nat] {
if (nat_uac_test(1))
fix_nated_contact();
if ( isflagset("NAT") && has_body("application/sdp") )
rtpproxy_answer("ro");
xlog("incoming reply\n");
}
failure_route[missed_call] {
if (t_was_cancelled()) {
exit;
}
# uncomment the following lines if you want to block client
# redirect based on 3xx replies.
##if (t_check_status("3[0-9][0-9]")) {
##t_reply(404,"Not found");
## exit;
##}
}
local_route {
if (is_method("BYE") && $DLG_dir=="UPSTREAM") {
acc_db_request("200 Dialog Timeout", "acc");
}
}
#!/bin/sh
#
### BEGIN INIT INFO
# Provides: opensips
# Required-Start: $syslog $network $local_fs $time $remote_fs
# Required-Stop: $syslog $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start the OpenSIPS SIP server
# Description: Start the OpenSIPS SIP server
### END INIT INFO
#
# TODO:
# The following fields should be added (and completed):
# Should-Start: postgresql mysql radius
# Should-Stop: postgresql mysql radius
set -e
PATH_EXTRA=
PATH=/sbin:/bin:/usr/sbin:/usr/bin${PATH_EXTRA:+:${PATH_EXTRA}}
DAEMON=/usr/local/sbin/opensips
NAME=opensips
DESC=opensips
CFGFILE=/etc/opensips/opensips34.cfg
M4CFGFILE=/etc/opensips/opensips.m4
M4ARCHIVEDIR=/etc/opensips/archive
HOMEDIR=/run/opensips
PIDFILE=$HOMEDIR/$NAME.pid
DEFAULTS=/etc/default/opensips
RUN_OPENSIPS=no
[ -e "/lib/lsb/init-functions" ] && . /lib/lsb/init-functions
test -f $DAEMON || exit 0
# Load startup options if available
if [ -f $DEFAULTS ]; then
. $DEFAULTS || true
fi
if [ "$RUN_OPENSIPS" != "yes" ]; then
echo "OpenSIPS not yet configured. Edit /etc/default/opensips first."
exit 0
fi
check_opensips_config ()
{
# Check if opensips configuration is valid before starting the server
set +e
out=$($DAEMON -c -f $CFGFILE 2>&1 > /dev/null)
retcode=$?
set -e
if [ "$retcode" != '0' ]; then
echo "Not starting $DESC: invalid configuration file!"
echo -e "\n$out\n"
exit 1
fi
}
create_radius_seqfile ()
{
# Create a radius sequence file to be used by the radius client if
# radius accounting is enabled. This is needed to avoid any issue
# with the file not being writable if opensips first starts as user
# root because DUMP_CORE is enabled and creates this file as user
# root and then later it switches back to user opensips and cannot
# write to the file. If the file exists before opensips starts, it
# won't change it's ownership and will be writable for both root
# and opensips, no matter what options are chosen at install time
RADIUS_SEQ_FILE=/run/opensips/opensips_radius.seq
if [ -d /run/opensips ]; then
chown ${USER}:${GROUP} /run/opensips
if [ ! -f $RADIUS_SEQ_FILE ]; then
touch $RADIUS_SEQ_FILE
fi
chown ${USER}:${GROUP} $RADIUS_SEQ_FILE
chmod 660 $RADIUS_SEQ_FILE
fi
}
S_MEMORY=$((`echo $S_MEMORY | sed -e 's/[^0-9]//g'`))
P_MEMORY=$((`echo $P_MEMORY | sed -e 's/[^0-9]//g'`))
[ -z "$USER" ] && USER=opensips
[ -z "$GROUP" ] && GROUP=opensips
[ $S_MEMORY -le 0 ] && S_MEMORY=32
[ $P_MEMORY -le 0 ] && P_MEMORY=32
if test "$DUMP_CORE" = "yes" ; then
# set proper ulimit
ulimit -c unlimited
# directory for the core dump files
# COREDIR=/home/corefiles
# [ -d $COREDIR ] || mkdir $COREDIR
# chmod 777 $COREDIR
# echo "$COREDIR/core.%e.sig%s.%p" > /proc/sys/kernel/core_pattern
fi
OPTIONS="-P $PIDFILE -m $S_MEMORY -M $P_MEMORY -u $USER -g $GROUP -f /etc/opensips/opensips34.cfg"
case "$1" in
start)
check_opensips_config
create_radius_seqfile
# dirs under /run will go away on reboot.
mkdir -p "$HOMEDIR"
chmod 775 "$HOMEDIR"
chown "$USER:$GROUP" "$HOMEDIR" >/dev/null 2>&1 || true
# Generate config from M4
if [ -f $M4CFGFILE ]; then
m4 -Q $M4CFGFILE >$CFGFILE.tmp
if [ $? != 0 ]; then
echo "Cannot process m4 macro"
rm "$CFGFILE.tmp"
exit 1
fi
[ -e $CFGFILE ] || touch $CFGFILE
# compare configs
if [ `md5sum $CFGFILE|awk '{print $1}'` != `md5sum $CFGFILE.tmp|awk '{print $1}'` ]; then
mkdir -p "$M4ARCHIVEDIR"
mv "$CFGFILE" "$M4ARCHIVEDIR/$NAME.cfg-`date +%Y%m%d_%H%M%S`"
fi
mv "$CFGFILE.tmp" "$CFGFILE"
chown $USER:$GROUP $CFGFILE
chmod 640 $CFGFILE
fi
log_daemon_msg "Starting $DESC" "$NAME"
start-stop-daemon --start --quiet --pidfile $PIDFILE \
--exec $DAEMON -- $OPTIONS || echo -n " already running"
log_end_msg $?
;;
stop)
log_daemon_msg "Stopping $DESC" "$NAME"
start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \
--exec $DAEMON
log_end_msg $?
;;
restart|force-reload)
check_opensips_config
create_radius_seqfile
log_daemon_msg "Restarting $DESC" "$NAME"
start-stop-daemon --oknodo --stop --quiet --pidfile \
$PIDFILE --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --pidfile \
$PIDFILE --exec $DAEMON -- $OPTIONS
log_end_msg $?
;;
status)
status_of_proc -p $PIDFILE "$DAEMON" "$NAME"
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
exit 0
_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users