Hi all!
Does someone know where I can find documentation about the database
structure used with OpenSER. I mean the signification of the tables and
their fields.
Thanks in advance
Greg
Greetings all,
Sorry for the somewhat off-topic post. I will be using SER on a
ipv6-only network and am looking for some hardware SIP phones that
support IPv6.
Currently, I've found very few (and unfortunately all now defunct)
links on iptel's phone list that point to IPv6 capable hardphones, as
well as: http://www.moimstone.com/e_product/s01.php which has very
little detail other than "Support IPv6 (Optional), IPv4".
Does anybody know of other hardware SIP phones that support IPv6? Has
anybody actually used hardware IPv6 phones with (Open)SER?
Thanks,
~Aaron
Hi, all
First of all, I read [SER - Getting
Started<http://siprouter.onsip.org/doc/gettingstarted/>]
and downloaded [ SER Source
package<ftp://siprouter.onsip.org/pub/gettingstarted/packages/ser-0.9.7-pre1.Gettin…>]
after I make the package under debug mode, it runs well.
Now, I can receive REGISTER requests and send 200 OK Responses and play a
SIP proxy server
I want to test "auth_mysql.cfg" in Chapter 7.... so,
i remove "exclude_modules?= jabber mysql\" in Makefile
but i still can't compile the mysql.so
Is there some more detail documents or suggestions for me?
Thank!
Good day all,
I'm trying to use the CPL module and I'm having trouble figuring out how
to load the cpl xml script into the cpl database.
Thanks for your pointers
Marvin
Hi there,
I have problem in loading module TM for voicemail setup here.
I use SER 0.9.7 as server and the latest SEMS for voicemail usage.
I tried to add my ser.cfg with script that can handle the voicemail but I found errors when run SER.
Below is my ser.cfg: (Please take a look at line 54 and 56)
debug=9
fork=yes
log_stderror=yes
listen=202.95.149.2 # put your server IP address here
port=5060
children=4
dns=no
rev_dns=no
fifo="/tmp/ser_fifo"
fifo_db_url="mysql://ser:heslo@localhost/ser"
fifo_mode=0666
unix_sock="/tmp/ser_sock"
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/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/uri_db.so"
loadmodule "/usr/local/lib/ser/modules/uri.so"
loadmodule "/usr/local/lib/ser/modules/avp.so"
loadmodule "/usr/local/lib/ser/modules/avpops.so"
loadmodule "/usr/local/lib/ser/modules/domain.so"
loadmodule "/usr/local/lib/ser/modules/permissions.so"
loadmodule "/usr/local/lib/ser/modules/msilo.so"
modparam("auth_db|permissions|uri_db|usrloc","db_url", "mysql://ser:heslo@localhost/ser")
modparam("auth_db|uri_db|usrloc", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "password_column", "password")
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "rtpproxy_sock", "/var/run/rtpproxy.sock")
modparam("usrloc", "db_mode", 2)
modparam("registrar", "nat_flag", 6)
modparam("rr", "enable_full_lr", 1)
modparam("tm", "fr_inv_timer", 27)
modparam("tm", "fr_inv_timer_avp", "inv_timeout") modparam("tm", "fr_timer", 10 )
modparam("tm", "wt_timer", 10 )
line 54: modparam("tm", "pass_provisional_replies", 1)
# configure tm to append this when tw_appent voicemail_headers is used
line 56: modparam("tm", "tw_append","voicemail_headers:P-Email-Address=avp[$email]")
# appends for dtmf per INFO
modparam( "tm", "tw_append","info_append:hdr[Content-Length];hdr[Content-Type];msg[body]")
modparam("permissions", "db_mode", 1)
modparam("permissions", "trusted_table", "trusted")
modparam("msilo", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("msilo", "db_table", "silo")
modparam("msilo","registrar","sip:registrar@pcr.ac.id")
modparam("msilo","expire_time",259200)
modparam("msilo","check_time",30)
modparam("msilo","clean_period",5)
# configure avpops db connection
modparam( "avpops", "avp_url", "mysql://ser:heslo@localhost/ser" )
modparam( "avpops", "avp_table", "subscriber" )
modparam( "avpops", "uuid_column", "id" )
# configure aliases, the number doesn't matter as long as there are no collisions)
modparam( "avpops", "avp_aliases", "email=i:67" )
# scheme to access the database
modparam( "avpops", "db_scheme",
"email_scheme:table=subscriber;value_col=email_address;value_type=string")
#modparam( "avpops", "db_scheme",
# "language_scheme:table=subscriber;value_col=language;value_type=string")
alias="pcr.ac.id"
route {
# -----------------------------------------------------------------
# Sanity Check Section
# -----------------------------------------------------------------
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483", "Too Many Hops");
break;
};
if (msg:len > max_len) {
sl_send_reply("513", "Message Overflow");
break;
};
/*
if (method != "ACK" && method != "INVITE" && method != "BYE"
&& method != "CANCEL" && method != "INFO" ){
log("unsupported method\n");
sl_send_reply("500","unsupported method");
break;
}
*/
# make transaction
if (!t_newtran()){
log("could not create transaction\n");
sl_send_reply("500","could not create transaction");
break;
}
# actively absorb ACKs
if (method == "ACK") {
t_relay();
break;
}
# pass INFO to SEMS
if (method=="INFO") {
if(!t_write_unix("/tmp/sems_sock","sems/info_append")){
log("could not contact sems\n");
t_reply("500","could not contact media server");
}
}
if (uri =~ "sip:101.*@") {
if (!t_write_unix("/tmp/sems_sock","myapp")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:102.*@") {
if (!t_write_unix("/tmp/sems_sock","myconfigurableapp")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:103.*@") {
if (!t_write_unix("/tmp/sems_sock","myannounceapp")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:104.*@") {
if (!t_write_unix("/tmp/sems_sock","myjukebox")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:105.*@") {
if (!t_write_unix("/tmp/sems_sock","mycc")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:106.*@") {
if (!t_write_unix("/tmp/sems_sock","ivr_announce")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
############ default sems apps
if (uri =~ "sip:110.*@") {
if (!t_write_unix("/tmp/sems_sock","echo")){
log("could not contact echo\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:111.*@") {
if (!t_write_unix("/tmp/sems_sock","announcement")){
log("could not contact announcement\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:112.*@") {
if (!t_write_unix("/tmp/sems_sock","conference")){
log("could not contact conference\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:113.*@") {
if (!t_write_unix("/tmp/sems_sock","mailbox")){
log("could not contact mailbox\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:114.*@") {
if (!t_write_unix("/tmp/sems_sock","early_announce")){
log("could not contact early_announce\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:115.*@") {
# load email avp with some email address
avp_write("root@localhost","$email");
# use voicemail_headers append to pass it to sems
if (!t_write_unix("/tmp/sems_sock","voicemail/voicemail_headers")){
log("could not contact voicemail\n");
t_reply("500","could not contact media server");
break;
}
break;
}
t_reply("404","Not found");
# -----------------------------------------------------------------
# Record Route Section
# -----------------------------------------------------------------
if (method!="REGISTER") {
record_route();
};
if (method=="BYE" || method=="CANCEL") {
unforce_rtp_proxy();
}
# -----------------------------------------------------------------
# Loose Route Section
# -----------------------------------------------------------------
if (loose_route()) {
if (has_totag() && (method=="INVITE" || method=="ACK")) {
if (nat_uac_test("19")) {
setflag(6);
force_rport();
fix_nated_contact();
};
force_rtp_proxy("l");
};
route(1);
break;
};
# -----------------------------------------------------------------
# Offline Message Store Section
# -----------------------------------------------------------------
if (is_from_local()) {
if (method=="REGISTER") {
save("location");
log("REGISTER received -> dumping messages with MSILO\n");
# MSILO - dumping user's offline messages
if (m_dump())
{
log("MSILO: offline messages dumped - if they were\n");
}else{
log("MSILO: no offline messages dumped\n");
};
break;
};
# domestic SIP destinations are handled using our USRLOC DB
if(!lookup("location"))
{
if (! t_newtran())
{
sl_reply_error();
break;
};
# we do not care about anything else but MESSAGEs
if (!method=="MESSAGE")
{
if (!t_reply("404", "Not found"))
{
sl_reply_error();
};
break;
};
log("MESSAGE received -> storing using MSILO\n");
# MSILO - storing as offline message
if (m_store("0"))
{
log("MSILO: offline message stored\n");
if (!t_reply("202", "Accepted"))
{
sl_reply_error();
};
}else{
log("MSILO: offline message NOT stored\n");
if (!t_reply("503", "Service Unavailable"))
{
sl_reply_error();
};
};
break;
};
# if the downstream UA does not support MESSAGE requests
# go to failure_route[1]
t_on_failure("1");
t_relay();
break;
};
# forward to current uri now; use stateful forwarding that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
sl_reply_error();
};
# -----------------------------------------------------------------
# Call Type Processing Section
# -----------------------------------------------------------------
if (uri!=myself) {
route(5);
route(1);
break;
};
if (uri==myself) {
if (method=="ACK") {
route(6);
break;
} else if (method=="CANCEL") {
route(3);
break;
} else if (method=="INVITE") {
route(3);
break;
} else if (method=="REGISTER") {
route(2);
break;
};
lookup("aliases");
if (uri!=myself) {
route(5);
route(1);
break;
};
if (!lookup("location")) {
sl_send_reply("404", "User Not Found");
break;
};
};
route(1);
}
failure_route[1] {
# forwarding failed -- check if the request was a MESSAGE
if (!method=="MESSAGE")
{
break;
};
log(1,"MSILO:the downstream UA doesn't support MESSAGEs\n");
# we have changed the R-URI with the contact address, ignore it now
if (m_store("1"))
{
log("MSILO: offline message stored\n");
t_reply("202", "Accepted");
}else{
log("MSILO: offline message NOT stored\n");
t_reply("503", "Service Unavailable");
};
}
route[1] {
# -----------------------------------------------------------------
# Default Message Handler
# -----------------------------------------------------------------
t_on_reply("1");
if (!t_relay()) {
if (method=="INVITE" && isflagset(6)) {
unforce_rtp_proxy();
};
sl_reply_error();
};
}
route[2] {
# -----------------------------------------------------------------
# REGISTER Message Handler
# ----------------------------------------------------------------
if (!search("^Contact:\ +\*") && nat_uac_test("19")) {
setflag(6);
fix_nated_register();
force_rport();
};
sl_send_reply("100", "Trying");
if (!www_authorize("pcr.ac.id","subscriber")) {
www_challenge("pcr.ac.id","0");
break;
};
if (!check_to()) {
sl_send_reply("401", "Unauthorized");
break;
};
consume_credentials();
if (!save("location")) {
sl_reply_error();
};
}
route[3] {
# -----------------------------------------------------------------
# CANCEL and INVITE Message Handler
# -----------------------------------------------------------------
if (!allow_trusted() && nat_uac_test("19")) {
setflag(6);
}
lookup("aliases");
if (method=="INVITE" && !allow_trusted())
{
if (!proxy_authorize("pcr.ac.id","subscriber")) {
proxy_challenge("pcr.ac.id","0");
break;
} else if (!check_from()) {
sl_send_reply("403", "Use From=ID");
break;
};
consume_credentials();
};
if (uri=~"^sip:9[0-9]*@") {
route(4);
break;
};
if (uri!=myself) {
route(5);
route(1);
break;
};
if (!lookup("location")) {
if (uri=~"^sip:[0-9]{10}@") {
route(4);
break;
};
sl_send_reply("404", "User Not Found");
break;
};
if (isflagset(6)) {
force_rport();
fix_nated_contact();
force_rtp_proxy();
};
t_on_reply("1");
if (!t_relay()) {
if(isflagset(6)) {
unforce_rtp_proxy();
}
sl_reply_error();
};
}
route[4] {
# -----------------------------------------------------------------
# PSTN Handler
# -----------------------------------------------------------------
rewritehostport("202.95.149.2:5060"); # INSERT YOUR PSTN GATEWAY IP ADDRESS
avp_write("i:45", "inv_timeout");
if (isflagset(6)) {
force_rport();
fix_nated_contact();
force_rtp_proxy();
};
route(1);
}
onreply_route[1] {
if (isflagset(6) && status=~"(180)|(183)|2[0-9][0-9]") {
if (!search("^Content-Length:\ +0")) {
force_rtp_proxy();
};
};
if (nat_uac_test("1")) {
fix_nated_contact();
};
}
--------------------------------------------------------------------------------------------------------------------
If I uncomment line 54 and 56, below is the output when I run SER:
0(4425) set_mod_param_regex: parameter <pass_provisional_replies> not found in module <tm>
0(4425) parse error (54,19-20): Can't set module parameter
0(4425) set_mod_param_regex: tm matches module tm
0(4425) set_mod_param_regex: found <tw_append> in module tm [/usr/local/lib/ser/modules/tm.so]
0(4425) ERROR:tm:parse_tw_append: bad alias spec <$email>
0(4425) parse error (56,19-20): Can't set module parameter
0(4425) set_mod_param_regex: tm matches module tm
-----------------------------------------------------------------------------------------------------------------------
If I comment line 54 and 56, below is the output:
0(0) ERROR:tm:fixup_t_write: unknown append name <voicemail_headers>
0(0) ERROR: fix_expr : fix_actions error
ERROR: error -6 while trying to fix configuration
0(0) MSILO: destroy module ...
0(0) DEBUG: tm_shutdown : start
0(0) DEBUG: unlink_timer_lists : emptying DELETE list
0(0) DEBUG: tm_shutdown : emptying hash table
0(0) DEBUG: tm_shutdown : releasing timers
0(0) DEBUG: tm_shutdown : removing semaphores
0(0) DEBUG: tm_shutdown : destroying tmcb lists
0(0) DEBUG: tm_shutdown : done
0(5050) shm_mem_destroy
0(5050) destroying the shared memory lock
-----------------------------------------------------------------------------------------------------------
Please tell me what's wrong. And please tell me whether if my configuration on ser.cfg is right or wrong because I doubt it.
Thanx before...
Regards,
Meidiana
---------------------------------
Have a burning question? Go to Yahoo! Answers and get answers from real people who know.
Hi,
i want to migrate from SER 0.9.4 to OpenSER 1.1.0 and i would like to
mantain the MySQL DB actually in use.
is it possible? which tables i have to alter and how?
thanks,
Stefano
Hi,
How does one determine which part of a SIP conversation an ACK packet is
responding to? I would have guessed that it would be in tne CSeq, but that
field just says, for example,
CSeq: 3 ACK
The only method I have come up with so far is looking at the source and
destination ports + the destination of the Request-LIne and try to determine
the most recent message it might be responding to.
Thanks,
Mark Price
Hi!
I wonder if the creation of the serweb default admin user works. Because
the function credentials() is never called inside postgresqldb.sh and
mysql....
regards
klaus
--
Klaus Darilion
nic.at
> -----Original Message-----
> From: users-bounces(a)openser.org
> [mailto:users-bounces@openser.org] On Behalf Of Andreas Granig
> Sent: Tuesday, December 05, 2006 8:20 AM
> To: Marcos Hack
> Cc: Thomas Deillon; users(a)openser.org
> Subject: Re: [Users] Load Balancing
>
> Marcos Hack wrote:
> > I don't know these modules, but here we solve this problem using a
> > unique VIP (Virtual IP) for all openSER cluster nodes.
>
> How do you ensure that all messages belonging to one
> transaction are balanced to the same physical server? Is
> there now SIP support in LVS?
>
I use UltraMonkey (www.ultramonkey.org), but it's basically a packaging
of Linux-HA and LVS.
LVS supports connection persistence, and that works very well. The
level of granularity of load balancing is on a per-IP basis, not
per-transaction (LVS only does L3 load-balancing, not L4-7). But
assuming a reasonable value for the persistence timeout, there should be
no problems with SIP transactions (and I haven't experienced anything
problematic).
Ldirectord also supports SIP health checks (they're pretty basic OPTIONS
requests, but it's something), and will fail over to working SIP
proxies. Of course, in-progress transactions will fail as the OpenSER
process on one box doesn't have the stateful knowledge of the other.
Regards,
- Brad
The contents of this e-mail are intended for the named addressee only. It contains information that may be confidential. Unless you are the named addressee or an authorized designee, you may not copy or use it, or disclose it to anyone else. If you received it in error please notify us immediately and then destroy it.
I am trying to forward requests so that the request is
completely gone and the UA is forwarded to the final
destination with no signaling from the forwarding
system.
For example: "5551212@" would be forwarded to 1.1.1.2
but 1.1.1.2 would not get a redirect request from
1.1.1.1 rather, directly from the UA.
Any thoughts?
Thanks! FR
____________________________________________________________________________________
Access over 1 million songs - Yahoo! Music Unlimited
(http://music.yahoo.com/unlimited)