Hi All,
I was able to install SER and able to get all the call details to the Mysql DB.
But my problem is with the time of timestamp recorded, it is not recorded
according to time on Server where my DB is located. The time recorded is
according to timezone of the caller and so because of this when I use NOW() of
Mysql and get the calls I miss the calls dialled from timezones ahead of NOW()
time on Mysql. I think while inserting call details in to DB the acc.so module
is using some other thing other than using NOW(). Please tell me where can I
modify that query and get a common timezone for all the users so that billing
will not be a problem for me.
Any help will be sincerely appreciated.
Thanks,
Manoj.
I have three sip proxies configured with OpenSER and MediaProxy for NAT
traversal support, I'm going to call them Proxy A, B and C. These
proxies work together as a farm; the Proxies A and C points to the MySql
database installed in Proxy B. Proxy B serves as location server an also
as proxy. Everything works fine, the REGISTER requests are validated
against the database (installed in Proxy B) by any proxy without any
problem. Also, the location records are inserted without any problem.
However, I noticed when Proxies A or C receive an INVITE request, they
respond 404 - User Not Found. I made a lot of debug, captures and
anything else, and I found the lookup function is only getting locations
for user agents registered by the Proxy that is making the query; in
other words, if the user X registers through Proxy A, then an INVITE
request received by Proxy A to user X is routed successfully.
I don't know if I'm missing something. I'm using db_mode 1 for usrloc to
store locations directly in the database. Below is one of my
configuration scripts, the three are practically the same, they are
different on the listen IP addresses and in the record route for nated
clients.
I'll appreciate any help. Thank you
# ----------- global configuration parameters ------------------------
debug=9 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
# Uncomment these lines to enter debugging mode
#fork=no
#log_stderror=yes
#
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
listen=AAA.BBB.CCC.DDD
port=5060
children=4
fifo="/tmp/openser_fifo"
fifo_db_url="mysql://openser:password@dbs.sip.mydomain.com/openser"
#Aliases
alias="sip.mydomain.com"
#
# uncomment the following lines for TLS support
#disable_tls = 0
#listen = tls:your_IP:5061
#tls_verify = 1
#tls_require_certificate = 0
#tls_method = TLSv1
#tls_certificate = "/usr/local/etc/openser/tls/user/user-cert.pem"
#tls_private_key = "/usr/local/etc/openser/tls/user/user-privkey.pem"
#tls_ca_list = "/usr/local/etc/openser/tls/user/user-calist.pem"
# ------------------ module loading ----------------------------------
loadmodule "/usr/local/lib/openser/modules/mysql.so"
loadmodule "/usr/local/lib/openser/modules/sl.so"
loadmodule "/usr/local/lib/openser/modules/tm.so"
loadmodule "/usr/local/lib/openser/modules/rr.so"
loadmodule "/usr/local/lib/openser/modules/maxfwd.so"
loadmodule "/usr/local/lib/openser/modules/usrloc.so"
loadmodule "/usr/local/lib/openser/modules/registrar.so"
loadmodule "/usr/local/lib/openser/modules/auth.so"
loadmodule "/usr/local/lib/openser/modules/auth_db.so"
loadmodule "/usr/local/lib/openser/modules/alias_db.so"
loadmodule "/usr/local/lib/openser/modules/uri.so"
loadmodule "/usr/local/lib/openser/modules/uri_db.so"
loadmodule "/usr/local/lib/openser/modules/domain.so"
loadmodule "/usr/local/lib/openser/modules/mediaproxy.so"
loadmodule "/usr/local/lib/openser/modules/nathelper.so"
loadmodule "/usr/local/lib/openser/modules/textops.so"
loadmodule "/usr/local/lib/openser/modules/xlog.so"
# ----------------- setting module-specific parameters ---------------
modparam("usrloc|auth_db|domain|uri_db|alias_db", "db_url",
"mysql://openser:password@dbs.sip.mydomain.com/openser")
modparam("usrloc", "use_domain", 0)
modparam("usrloc", "db_mode", 1)
modparam("usrloc", "timer_interval", 60)
modparam("registrar", "use_domain", 0)
modparam("registrar", "nat_flag", 6)
modparam("registrar", "min_expires", 10)
modparam("registrar", "max_expires", 80)
modparam("registrar", "default_expires", 30)
modparam("rr", "enable_full_lr", 1)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("nathelper", "rtpproxy_disable", 1)
modparam("nathelper", "natping_interval", 0)
modparam("mediaproxy","natping_interval", 30)
#modparam("mediaproxy","mediaproxy_socket", "/var/run/mediaproxy.sock")
modparam("mediaproxy","mediaproxy_socket",
"/var/run/proxydispatcher.sock")
modparam("mediaproxy","sip_asymmetrics","/usr/local/etc/openser/sip-clie
nts")
modparam("mediaproxy","rtp_asymmetrics","/usr/local/etc/openser/rtp-clie
nts")
# ------------------------- request routing logic -------------------
# main routing logic
route {
#
-----------------------------------------------------------------
# Sanity Check Section
#
-----------------------------------------------------------------
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483", "Too Many Hops");
exit;
};
if (msg:len > max_len) {
sl_send_reply("513", "Message Overflow");
exit;
};
#
-----------------------------------------------------------------
# Record Route Section
#
-----------------------------------------------------------------
if (method=="INVITE" && client_nat_test("3")) {
record_route_preset("AAA.BBB.CCC.DDD:5060;nat=yes");
} else if (method!="REGISTER") {
record_route();
};
#
-----------------------------------------------------------------
# Call Tear Down Section
#
-----------------------------------------------------------------
if (method=="BYE" || method=="CANCEL") {
end_media_session();
};
#
-----------------------------------------------------------------
# Loose Route Section
#
-----------------------------------------------------------------
if (loose_route()) {
if (has_totag() && (method=="INVITE" || method=="ACK")) {
if (client_nat_test("3") ||
search("^Route:.*;nat=yes")) {
setflag(6);
use_media_proxy();
};
};
route(1);
exit;
};
#
-----------------------------------------------------------------
# Call Type Processing Section
#
-----------------------------------------------------------------
if (uri!=myself) {
route(4);
route(1);
exit;
};
if (method=="CANCEL") {
route(1);
exit;
} else if (method=="INVITE") {
route(3);
exit;
} else if (method=="REGISTER") {
route(2);
exit;
} else if (method=="ACK") {
exit;
};
if (uri!=myself) {
route(4);
route(1);
exit;
};
if (!lookup("location")) {
sl_send_reply("404", "User Not Found");
exit;
};
route(1);
}
route[1] {
#
-----------------------------------------------------------------
# Default Message Handler
#
-----------------------------------------------------------------
t_on_reply("1");
if (!t_relay()) {
if (method=="INVITE" || method=="ACK") {
end_media_session();
};
sl_reply_error();
};
}
route[2] {
#
-----------------------------------------------------------------
# REGISTER Message Handler
# ----------------------------------------------------------------
xlog("L_INFO", "REGISTER - entering section\n");
#if (!search("^Contact:[ ]*\*") && client_nat_test("7")) {
if (client_nat_test("7")) {
setflag(6);
fix_nated_register();
force_rport();
xlog("L_INFO", "REGISTER - nated client detected and fixed
($tu)\n");
};
if (registered("location")) {
xlog("L_INFO", "REGISTER - user already registered
($tu)\n");
};
if (!www_authorize("sip.mydomain.com","subscriber")) {
www_challenge("sip.mydomain.com","0");
exit;
};
if (!check_to()) {
xlog("L_WARN", "REGISTER - unauthorized client ($tu)\n");
sl_send_reply("401", "Unauthorized");
exit;
};
consume_credentials();
xlog("L_INFO", "REGISTER - client authorized ($tu)\n");
if (!save("location")) {
xlog("L_WARN", "REGISTER - client location could not be
saved ($tu)\n");
sl_reply_error();
};
xlog("L_INFO", "REGISTER - client location saved ($tu)\n");
}
route[3] {
#
-----------------------------------------------------------------
# INVITE Message Handler
#
-----------------------------------------------------------------
xlog("L_INFO", "INVITE - entering section\n");
#if (client_nat_test("3")) {
if (client_nat_test("7")) {
setflag(7);
fix_nated_contact();
force_rport();
};
if (!proxy_authorize("sip.mydomain.com","subscriber")) {
proxy_challenge("sip.mydomain.com","0");
exit;
} else if (!check_from()) {
sl_send_reply("403", "Use From=ID");
exit;
};
consume_credentials();
xlog("L_INFO", "INVITE - proxy authorized\n");
if (uri!=myself) {
xlog("L_INFO", "INVITE - <$ru> uri is not from here, routing
out\n");
route(4);
route(1);
exit;
};
xlog("L_INFO", "INVITE - before aliases lookup <$ru>\n");
alias_db_lookup("dbaliases");
xlog("L_INFO", "INVITE - after aliases lookup <$ru>\n");
if (registered("location")) {
xlog("L_INFO", "INVITE - the user is already registered
<$ru>\n");
};
if (!lookup("location")) {
xlog("L_WARN", "INVITE - not located <$ru>\n");
sl_send_reply("404", "User Not Found");
exit;
};
route(4);
route(1);
}
route[4] {
#
-----------------------------------------------------------------
# NAT Traversal Section
#
-----------------------------------------------------------------
if (isflagset(6) || isflagset(7)) {
xlog("L_INFO", "NAT Traversal - using media proxy\n");
use_media_proxy();
};
}
onreply_route[1] {
if ((isflagset(6) || isflagset(7)) &&
(status=~"(180)|(183)|2[0-9][0-9]")) {
if (!search("^Content-Length:[ ]*0")) {
use_media_proxy();
};
};
if (client_nat_test("1")) {
fix_nated_contact();
};
}
Hi all,I am facing a strange problem while using openser. I am running openser 1.0.0 and while calling, multiple call gets connected on the same port. I am using Audiocodes media gatewaywhich sends calls to Openser and openser then t_relays the call to pstn gateway. When there are simultaneously 8-10 calls going on, there are more than 1 call getting connected on the same port.It is like a cross connection in which you can hear a other phone ring.I get the following log on the Audiocodes gateway:2d:5h:1m:54s Multiple RTP detected on Port 6010. Switch to Destination Stream IP: 0xd8a8a262, Source Port: 34784. Left Stream IP: 0xd8a8a262, Source Port: 34846 [File:TCPIPHal.cpp Line:1181] [CID:0]2d:5h:1m:54s Multiple RTP detected on Port 6010. Active Stream IP: 0xd8a8a262, Source Port: 34784. Rejected Stream IP: 0xd8a8a262, Source Port: 34846 [Code:7003 File:TCPIPHal.cpp Line:1237] [CID:0]
s() My openser conf file is as shown:
debug=3
fork=yes
log_stderror=no
dns=no
rev_dns=no
listen=202.XX.61.XX
port=5060
children=4
fifo="/tmp/openser_fifo"
fifo_db_url="mysql://openser:openserrw@localhost/openser"
# ------------------ module loading ----------------------------------
loadmodule "/usr/local/lib/openser/modules/mysql.so"
loadmodule "/usr/local/lib/openser/modules/sl.so"
loadmodule "/usr/local/lib/openser/modules/tm.so"
loadmodule "/usr/local/lib/openser/modules/rr.so"
loadmodule "/usr/local/lib/openser/modules/maxfwd.so"
loadmodule "/usr/local/lib/openser/modules/permissions.so"
loadmodule "/usr/local/lib/openser/modules/acc.so"
loadmodule "/usr/local/lib/openser/modules/avpops.so"
# ----------------- setting module-specific parameters ---------------
modparam("rr", "enable_full_lr", 1)
modparam("permissions|acc", "db_url", "mysql://openser:openserrw@localhost/openser")
modparam("permissions", "db_mode", 1)
modparam("permissions", "trusted_table", "trusted")
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1)
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 3)
modparam("acc", "report_ack", 0)
modparam("acc", "db_extra", "src= $si")
# ------------------------- request routing logic -------------------
route{
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
};
if (msg:len >= 2048 ) {
sl_send_reply("513", "Message too big");
exit;
};
setflag(1);
if (method!="REGISTER") {
record_route();
};
if (loose_route()) {
route(1);
return;
};
if(uri!=myself) {
route(1);
}
if (uri==myself) {
if(method=="INVITE" && allow_trusted()) {
strip(2);
prefix("36130");
rewritehost("216.XXX.162.XXX");
route(1);
return;
} else if(!allow_trusted()) {
sl_send_reply("403", "Forbidden");
};
};
if (method=="CANCEL") {
route(1);
return;
};
}
route[1] {
if(!t_relay()) {
sl_reply_error();
};
}
Can someone please try and help me on this.
thanks in advance,
jayesh...
---------------------------------
Jiyo cricket on Yahoo! India cricket
Yahoo! Messenger Mobile Stay in touch with your buddies all the time.
i am running fedora core and trying to install the latest version of ser i
amm useing xampp till i can get it working properly and finish writig the
guid eim writting then i will install everything properly but the errors im
getting arnt releted to me have xampp on my box.
i used dan austins how to to set up i got as far as the config file edits
beofe it went bad. wehn i tryed to start it i got
ERROR: bad config file (12 errors)
so i ran the debug for it (-c)
and here is what i got
0(14242) ERROR: load_module: could not open module
</usr/local/lib/ser/modules/mysql.so>: libmysqlclient.so.12: cannot open
shared object file: No such file or directory
0(14242) parse error (28,13-14): failed to load module
0(14242) parse error (113,11-15): syntax error
0(14242) parse error (113,11-15): bad command
0(14242) parse error (113,16-18): bad command
0(14242) parse error (113,23-27): bad command
0(14242) parse error (113,28-30): bad command
0(14242) parse error (113,31-34): bad command
0(14242) parse error (113,35-41): bad command
0(14242) parse error (113,42-56): bad command
0(14242) parse error (114,4-6): bad command
0(14242) parse error (121,4-5): syntax error
0(14242) parse error (121,4-5):
ERROR: bad config file (12 errors)
and here is my config file
#
# $Id: ser.cfg,v 1.25.2.1 2005/02/18 14:30:44 andrei Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd)
#fork=yes
#log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
fork=no
log_stderror=yes
*/
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
#port=5060
#children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
modparam("usrloc", "db_mode", 2)
# -- auth params --
# Uncomment if you are using auth module
#
modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this config),
# uncomment also the following parameter)
#
modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# ------------------------- request routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
break;
};
if (msg:len >= 2048 ) {
sl_send_reply("513", "Message too big");
break;
};
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy; that's
# particularly good if upstream and downstream entities
# use different transport protocol
if (!method=="REGISTER") record_route();
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
route(1);
break;
};
if (!uri==perfecthosting.biz) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
route(1);
break;
};
# if the request is for other domain use UsrLoc
# (in case, it does not work, use the following command
# with proper names and addresses in it)
if (uri==perfecthosting.biz) {
if (method=="REGISTER") {
Uncomment this if you want to use digest authentication
if (!www_authorize("perfecthosting.biz",
"subscriber")) {
www_challenge("perfecthosting.biz", "0");
break;
};
save("location");
break;
};
lookup("aliases");
if (!uri==perfecthosting.biz) {
append_hf("P-hint: outbound alias\r\n");
route(1);
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
append_hf("P-hint: usrloc applied\r\n");
route(1);
}
route[1]
{
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
}
i removed the dots from the modula locations because they were causeing
errors it used to sat 40 something errors.
im lost as far as syntax or the mysql so if you have any insight about this
it would be good if you could share
thanks, Alex Wood
Hi everybody,
USRLOC module can now operate in a DB mode : DB_ONLY. This is a cacheless mode - no memory cache is kept, all operation being directly done into DB.
This mode allows DB sharing between multiple proxies without the need of additional replication mechanism.
Drawbacks:
- some performance penalties due intensive DB usage
- location watcher disabled (cannot be bind to a record into mem) => PA cannot be used
- statistics do not work since events cannot be properly been traced without a mem cache
Still to be done:
- the get_all_ucontacts function (used by nathelper/mediaproxy for NAT pinging) use raw_query in order to increase performance by filtering the loaded contacts from DB.
For more info, see:
http://openser.org/docs/modules/1.1.x/usrloc.html#AEN252
regards,
bogdan
Hello,
perhaps somebody can explain for me why first example works without
append_branch() and second example NEED append_branch() to work?
In 1. example i rewrite Request-URI in main-route-block. SER calls the new
URI successfully. If i make append_branch() here, SER craches.
In 2. example i rewrite Request-URI in failure-block. If i do not make
append_branch() here, SER does not call the new URI. With append_branch()
everything is all right, SER calls successfully the new URI.
1. example
-------------------------
modparam("tm", "fr_inv_timer", 10) # set fr_inv_timer to 10 seconds
...
route{
...
if (lookup("location"))
{
...
route(1);
break;
}
else if (method == "INVITE" )
{
revert_uri();
avp_db_load("$ruri","s:redirect_number01");
t_on_failure("2");
attr2uri("redirect_number01");
t_relay();
break;
}
}
-------------------------
2. example (same ser.cfg)
-------------------------
failure_route[1] # entered when fr_inv_timer hits, 408 Timeout
{
revert_uri();
avp_db_load("$ruri","s:redirect_number01");
t_on_failure("2");
attr2uri("redirect_number01");
append_branch(); # why necessary?
t_relay();
break;
}
}
-------------------------
Alex
--
Lust, ein paar Euro nebenbei zu verdienen? Ohne Kosten, ohne Risiko!
Satte Provisionen f�r GMX Partner: http://www.gmx.net/de/go/partner
Hello,
Sometimes Openser receives REGISTER messages where the port in the Via
and in the Contact is invalid (some number greater than 65536). Does
anyone know what causes this? Is it just a bug at the user agent side
that I cannot do anything about?
thank you for any help
George
3(24398) ERROR: parse_via: invalid port number <101160>
3(24398) ERROR: parse_via on: <SIP/2.0/UDP
62.1.33.62:101160;branch=z9hG4bKYw5qCaB5TTD1PAvN
Max-Forwards: 70
User-Agent: IP PHONE 3 V1.49.002 CFG0
From: "psalidas" <sip:psalidas@i-call.gr>;tag=He0iTAjdDXQBQh0M
To: "psalidas" <sip:psalidas@i-call.gr>
Call-ID: MCk3KLwds4XOTvqi(a)62.1.33.621
CSeq: 8692 REGISTER
Contact: <sip:psalidas@62.1.33.62:101160>
Expires: 60
Content-Length: 0
>
3(24398) ERROR: parse_via parse error, parsed so far:<SIP/2.0/UDP
62.1.33.62:101160;branch=z9hG4bKYw5qCaB5TTD1PAvN
>
3(24398) ERROR: get_hdr_field: bad via
3(24398) ERROR: parse_msg: message=<REGISTER sip:i-call.gr SIP/2.0
Via: SIP/2.0/UDP 62.1.33.62:101160;branch=z9hG4bKYw5qCaB5TTD1PAvN
Max-Forwards: 70
User-Agent: IP PHONE 3 V1.49.002 CFG0
From: "psalidas" <sip:psalidas@i-call.gr>;tag=He0iTAjdDXQBQh0M
To: "psalidas" <sip:psalidas@i-call.gr>
Call-ID: MCk3KLwds4XOTvqi(a)62.1.33.621
CSeq: 8692 REGISTER
Contact: <sip:psalidas@62.1.33.62:101160>
Expires: 60
Content-Length: 0
Disclaimer
The information in this e-mail and any attachments is confidential. It is intended solely for the attention and use of the named addressee(s). If you are not the intended recipient, or person responsible for delivering this information to the intended recipient, please notify the sender immediately. Unless you are the intended recipient or his/her representative you are not authorized to, and must not, read, copy, distribute, use or retain this message or any part of it. E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses.
I think mediaproxy would be a better choice. It seemed to be easier to configure for me, and it does load balancing if you want it. Since your server is handling RTP and SIP when your are going through a NAT it can give you the capability to handle more than 50 calls at a time.
Also, I am not sure if rtpproxy rewrites the SDP information. That would be why your phones are sending back to the internal port instead of the external one.
>>> "Bart J. Smit" <bart(a)smits.co.uk> 2/18/2006 9:45:00 AM >>>
No, rtpproxy. Is there a difference in NAT support?
Bart...
-----Original Message-----
From: serusers-bounces(a)iptel.org [mailto:serusers-bounces@lists.iptel.org] On
Behalf Of George Lambson
Sent: 18 February 2006 15:54
To: serusers(a)lists.iptel.org
Subject: Re: [Serusers] Does SER need a public IP interface?
Are you using mediaproxy?
>>> "Bart J. Smit" <bart(a)smits.co.uk> 2/18/2006 7:16 AM >>>
I have based my attached SER config file on the very informative
'getting started 5' instructions/sample from http://www.onsip.org/.
I have SER on a DMZ with Asterisk on the same box, listening on 5065. I
can register two internal phones with SER and talk. I can register a
phone to the Asterisk and talk to the rest of the Asterisk
infrastructure through IAX2. I entered a log statement for my forward to
asterisk and I can see that it is being executed.
What I can't get to work is external phones. When I capture the RTP
packets with ethereal, I can see that the ones from SER to the phones
are properly addressed to the public IP of my NAT-ed phone. However the
return packets are addressed to the private IP of SER and thus never
make it back.
Is this double NAT configuration supported? It looks that way on the
getting started diagrams (both SER and Internet phones are behind NAT
routers). I understand that the NAT traversal mechanism in SER is there
to help clients overcome their NAT. Is there a similar mechanism for the
SER server itself, or does SER only work if it has a direct public
interface?
How do I convince my client phones to send their packets back to the
public IP of SER, rather than the private IP? What ser.cfg line
determines the source IP that SER gives out to the RTP stream? It would
be elegant if I can make this dependent on the source IP of the phones
(internal or external) but I really only need it to work for external
clients, as internal ones can simply register with Asterisk.
Any hints would be most appreciated,
Thanks,
Bart...
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers