<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1400" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2> Shown below is my ser.cfg file. For some
reason the nat_uac_test routine doesn't work. The debugging says it doesn't know
the command and believes I left out a module. I can't find much
documentation on this command. Did I leave out a module or something required to
use this?</FONT></DIV>
<DIV><FONT size=2></FONT> </DIV>
<DIV><FONT size=2> Bill</FONT></DIV><FONT size=2>
<DIV><BR> </DIV>
<DIV> </DIV>
<DIV>#<BR># $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $<BR>#<BR>#
simple quick-start config script<BR>#</DIV>
<DIV> </DIV>
<DIV># ----------- global configuration parameters
------------------------</DIV>
<DIV> </DIV>
<DIV>#debug=3 # debug level (cmd
line:
-dddddddddd)<BR>#fork=yes<BR>#log_stderror=no
# (cmd line: -E)</DIV>
<DIV> </DIV>
<DIV>/* Uncomment these lines to enter debugging mode
<BR>debug=7<BR>fork=no<BR>log_stderror=yes<BR>*/</DIV>
<DIV> </DIV>
<DIV>check_via=no # (cmd. line:
-v)<BR>dns=no #
(cmd. line: -r)<BR>rev_dns=no # (cmd. line:
-R)<BR>#port=5060<BR>#children=4<BR>fifo="/tmp/ser_fifo"<BR>fifo_mode=0666</DIV>
<DIV> </DIV>
<DIV># ------------------ module loading
----------------------------------</DIV>
<DIV> </DIV>
<DIV># Uncomment this if you want to use SQL database<BR>loadmodule
"/lib/ser/modules/mysql.so"</DIV>
<DIV> </DIV>
<DIV>loadmodule "/lib/ser/modules/sl.so"<BR>loadmodule
"/lib/ser/modules/tm.so"<BR>loadmodule
"/lib/ser/modules/maxfwd.so"<BR>loadmodule
"/lib/ser/modules/registrar.so"<BR>loadmodule "/lib/ser/modules/auth.so"<BR>#
loadmodule "/lib/ser/modules/textops.so"<BR># loadmodule
"/lib/ser/modules/enum.so"<BR>loadmodule "/lib/ser/modules/group.so"</DIV>
<DIV> </DIV>
<DIV>loadmodule "/lib/ser/modules/nathelper.so"<BR>modparam("nathelper",
"natping_interval", 10)</DIV>
<DIV> </DIV>
<DIV># loadmodule "/lib/ser/modules/vm.so"<BR># modparam("vm", "db_url",
"sql://root:@127.0.0.1/ser")<BR># modparam("vm", "email_column", "<A
href="mailto:sip@xxx.xxx.net">sip@xxx.xxx.net</A>")<BR># modparam("vm",
"domain_column", "ser.vci.net")</DIV>
<DIV> </DIV>
<DIV>loadmodule "/lib/ser/modules/acc.so"<BR>modparam("acc", "db_url",
"sql://root:@127.0.0.1/ser")<BR>modparam("acc", "log_missed_flag",
2)<BR>modparam("acc", "log_level", 1)<BR>modparam("acc", "log_flag",
1)<BR>modparam("acc", "db_flag", 2)<BR>modparam("acc", "db_missed_flag",
2)</DIV>
<DIV> </DIV>
<DIV>loadmodule "/lib/ser/modules/usrloc.so"<BR>modparam("usrloc",
"db_mode", 0)<BR>modparam("usrloc", "db_mode", 2)</DIV>
<DIV> </DIV>
<DIV>loadmodule "/lib/ser/modules/auth_db.so"<BR>modparam("auth_db",
"calculate_ha1", yes)<BR>modparam("auth_db", "password_column",
"password")</DIV>
<DIV> </DIV>
<DIV>loadmodule "/lib/ser/modules/rr.so"<BR>modparam("rr", "enable_full_lr",
1)</DIV>
<DIV> </DIV>
<DIV># ------------------------- request routing logic
-------------------</DIV>
<DIV> </DIV>
<DIV># main routing logic</DIV>
<DIV> </DIV>
<DIV>route{</DIV>
<DIV> </DIV>
<DIV> # initial sanity checks --
messages with<BR> # max_forwards==0,
or excessively long requests<BR> if
(!mf_process_maxfwd_header("10"))
{<BR>
sl_send_reply("483","Too Many
Hops");<BR>
break;<BR>
};<BR> if ( msg:len > max_len )
{<BR>
sl_send_reply("513", "Message too
big");<BR>
break;<BR> };</DIV>
<DIV> </DIV>
<DIV> if (nat_uac_test("3"))
{<BR>
log("1,Connection from someone behind a
NAT");<BR> };</DIV>
<DIV> </DIV>
<DIV> if (uri =~ "^sip:admin" )
{<BR>
log(1, "Connection from <A
href="mailto:admin@xxx.xxx.net">admin@xxx.xxx.net</A>");<BR>
};</DIV>
<DIV> </DIV>
<DIV> if (method=="CANCEL")
{<BR>
log(1,"Sent CANCEL request");<BR>
}</DIV>
<DIV> </DIV>
<DIV> if (method=="INVITE")
{<BR>
log(1,"Sent INVITE request");<BR>
}</DIV>
<DIV> </DIV>
<DIV> # we record-route all messages
-- to make sure that<BR> # subsequent
messages will go through our proxy;
that's<BR> # particularly good if
upstream and downstream entities<BR> #
use different transport protocol<BR>
record_route();<BR> # loose-route
processing<BR> if (loose_route())
{<BR>
t_relay();<BR>
break;<BR> };</DIV>
<DIV> </DIV>
<DIV> setflag(2);</DIV>
<DIV> </DIV>
<DIV> # if the request is for other
domain use UsrLoc<BR> # (in case, it
does not work, use the following
command<BR> # with proper names and
addresses in it)<BR> if (uri==myself)
{<BR>
log(1,"processing request for ser.vci.net domain");</DIV>
<DIV> </DIV>
<DIV>
if (method=="REGISTER")
{<BR>
log(1,"register request for xxx.xxx.net
domain");<BR>
if (!www_authorize("xxx.xxx.net", "subscriber"))
{<BR>
www_challenge("ser.vci.net",
"0");<BR>
break;<BR>
};</DIV>
<DIV> </DIV>
<DIV>
save("location");<BR>
break;<BR>
};</DIV>
<DIV> </DIV>
<DIV>
# native SIP destinations are handled using our USRLOC
DB<BR>
if (!lookup("location"))
{<BR>
log(1,"404 - Not
Found");<BR>
acc_db_request("404 Not Found",
"acc");<BR>
sl_send_reply("404", "Not
Found");<BR>
break;<BR>
};<BR>
};<BR> # forward to current uri now;
use stateful forwarding; that<BR> #
works reliably even if we forward from TCP to
UDP<BR> if (!t_relay())
{<BR>
log(1,"not sure what this
does");<BR>
sl_reply_error();<BR> };</DIV>
<DIV> </DIV>
<DIV>}<BR></DIV></FONT></BODY></HTML>