Hi,
I am under training of Networking, and my project for final exams is VOIP. I read about SER and downloaded 0.8.12 version. I have linux 9 and would like to give demo on the same system. In our institute we have two IP phones (Hardware/Hard Phones).
Please help me in installing the same. As I am new for this. I would appreciate if I can get step wise instruction for the same.
Thanks in advance.
Sarfaraz
==========================
Sarfaraz I. Chougule
PANVEL
Tel. 91-22-27490797
Office: 91-22-30380540
==========================
* Juha Heinanen <jh(a)tutpro.com> [041107 12:12]:
> Jiri Kuthan writes:
>
> > I see them rather as an unordered set.
>
> why i was asking is that tm module doesn't currently support serial
> forking and perhaps it could be done via AVPs instead, but that would
> require priorities.
I think you can use jan's avp module to make something like that happen
.-) tough. you would need to forward to different users..
-Atle
>
> -- juha
>
> _______________________________________________
> Serdev mailing list
> serdev(a)lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serdev
>
Hi ,I am a student studying in VoIP and implementing my theory in SER.
I try to access mysql database to get some information, but have a problem aboout paramaters of exe_msg.
My goal is :count the number of contact addresses that certain user registered, and take
this is my solution:
exec_msg(' Count="select count(contact) from location where username=\"$SIP_HF_CONTACT\" "'
CountResult=`mysql -user -pheslo -e "$Count" ser`;
')
What is the result of "CountResult" ?
I suppose originally that it will be the the number of the query, but it seems not.........
If not, what it will be? How can I get my answer what I want to get ?
Looking for all of the documents, I still can't find the information about how to access databases with exec_msg function.
Hoping someone can give me some advises ^^.
Thannks in advance.
Lee
Hi,
Thanks for the great work on avpops. It is really an existing module which
opens lots of opportunities. I read some document, just want to make sure I
understood it correctly...
. Every avp type should be saved in a different table. For example, I have
two caller id settings for each subscriber, inter-domain and intra-domain. I
should use one table for each setting. To load them, should I just use
"avp_db_load" with their respective table name? Another question is, since
the table name is optional, what happens if it is not given? When is it
loading from?
. It looks like that one avp can have multiple values. For example, you can
have avp_write("sip:addr1@test.com", "i:2") and
avp_write("sip:addr2@test.com", "i:2"). So avp name i:2 has both values.
. If an avp has multiple values, I can use avp_pushto() to do a parallel
forking.
. Can I use an avp for the existing function? For example, I'd like to use
different caller id inside "Remote-Party-ID". If I already load avp name
i:10 with the right caller id, can I use append_hf() to add a new field with
the avp?
. In the example of Trusted IPs, what if I don't care about any username or
domain? For example, I have a PSTN gateway shared by all domains. Should I
put "" in uuid, username and domain columns? Then what do I put in source
for avp_db_load()? It seems that source can only take either username or
domain or both. Maybe define a uuid value and associate all gateways with
the same uuid.
Thanks again for the great work,
Richard
Hi ..I have a problem with aliases....when I set an alias my serctl
replies with 200 added..it's ok...but when I try serctl alias show + the
alias serctl replies with 404 not found...
Hi everyone~
I am a student studying in VoIP and implementing my theory in SER.
I try to access mysql database to get some information, but have a problem aboout paramaters of exe_msg.
My goal is :count the number of contact addresses that certain user registered, and take
this is my solution: exec_msg(' Count="select count(contact) from location where username=\"$SIP_HF_CONTACT\" "'
CountResult=`mysql -user -pheslo -e "$Count" ser`;
')
What is the result of "CountResult" ?
I suppose originally that it will be the the number of the query, but it seems not.........
If not, what it will be? How can I get my answer what I want to get ?
Looking for all of the documents, I still can't find the information about how to access databases with exec_msg function.
Hoping someone can give me some advises ^^.
Thannks in advance.
Lee
hi
we have 1 ser + 1 asterisk on different computers
we want to forward incoming calls from the server with fixed prefix (eg 00) to asterisk.
i tried different solutions but how is the connection logic between ser and asterisk? should i have a registered user in asterisk which collects all the traffic coming from ser or not? how can i setup the ser and asterisk to have then "talking"?
thnx in advance for help
Graziano
By setting the environment variable LOCALBASE and the make variable
"prefix", the install of ser can be *almost* completely in user disk
space. The exception I encountered is in serctl and sc scripts. They
have lines like
PID_FILE=/var/run/ser.pid
which is out of bounds for a /home user.
Perhaps this value could be read from the ser.cfg file. Alternatively
an environment variable like SER_PID_FILE could introduced and PID_FILE
could pick it up if set.
Also "serctl restart" fails on an error if ser is not running. The way
others servers, eg apache, work is for restart to mean
"if (alive) kill; start". That way the end point of "restart" is always
a running server with a newly read configuration or a server that failed
to start because of configuration failure. It does not depend upon the
previous state. The combination "stop" followed by "start" already gives
you a version of "restart" that fails on error if the server is not up.
By running ser directly both problems can be worked around.
John.
Hello.
It works for me. In fact this is a pending question that i have. i
found this configuration looking for another problem solution in the mailing
list. The "domaintables" file is a flat file like this.
domain
your.domain.com
It solves my problem. Con someone tell me if this is ok? I used this
configuration trying to avoid the use of sql data base.
Thanks in advance.
Ricardo.
-----Mensaje original-----
De: Bastian Schern [mailto:ml01@in-bln.de]
Enviado el: Viernes, 05 de Noviembre de 2004 17:07
Para: Ricardo Martinez
CC: 'serusers(a)lists.iptel.org'
Asunto: Re: [Serusers] BYE / CANCEL Problem
Ricardo Martinez schrieb:
[...]
> #module domain
> modparam("domain", "db_url", "/usr/local/etc/ser/domaintables")
> modparam("domain", "domain_table", "domain")
> modparam("domain", "domain_col", "domain")
[...]
Does it work with a flat file?
Please, can you show me the structure of such a file?
Regards
Bastian
Hello list
Beside the BYE problem that i post in a past mail, i detected
another weird behaivor of SER. When i made a call from a registered
endpoint (64.76.148.242) to a PSTN-number through a PSTN-Gateway. The
destination devices keep ringing even if i send a CANCEL message. I don't
understand why. Here is the debug
U 64.76.148.242:5060 -> sersip.mydomain.com:5060
CANCEL sip:005622408196@sersip.mydomain.com SIP/2.0
Via: SIP/2.0/UDP 64.76.148.242:5060;branch=z9hG4bK1f42736da4462
From: <sip:5555832351@sersip.mydomain.com>;tag=1f42736da4
To: <sip:005622408196@sersip.mydomain.com>
Call-ID: 1f629d42-2d9e-73aa-826d-0002a400f1e9(a)64.76.148.242
CSeq: 462 CANCEL
Date: Wed, 01 Jun 2005 07:22:16 GMT
User-Agent: AddPac SIP Gateway
Content-Length: 0
Max-Forwards: 70
#
U sersip.mydomain.com:5060 -> 64.76.148.242:5060
SIP/2.0 404 Not Found IT!
Via: SIP/2.0/UDP 64.76.148.242:5060;branch=z9hG4bK1f42736da4462
From: <sip:5555832351@sersip.mydomain.com>;tag=1f42736da4
To:
<sip:005622408196@sersip.mydomain.com>;tag=a6a1c5f60faecf035a1ae5b6e96e979a-
3932
Call-ID: 1f629d42-2d9e-73aa-826d-0002a400f1e9(a)64.76.148.242
CSeq: 462 CANCEL
Server: Sip EXpress router (0.8.14 (i386/linux))
Content-Length: 0
Warning:392 sersip.mydomain.com:5060 "Noisy feedback tells: pid=16760
req_src_ip=64.76.148.242 req_src_port=5060
in_uri=sip:005622408196@sersip.mydomain.com
out_uri=sip:005622408196@sersip.mydomain.com via_cnt==1"
It seems to be related with my past message. Can someone help me here, i'm
very confused. Here is my ser.cfg.
Thanks in advance.
#
# $Id: ser.cfg,v 1.21.2.2 2003/10/13 22:53:06 jiri Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
debug=0 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=yes # (cmd line: -E)
#Uncomment these lines to enter debugging mode
#fork=no
#log_stderror=yes
check_via=yes # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
#children=4
fifo="/tmp/ser_fifo"
fifo_mode=0666
# ------------------ 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"
loadmodule "/usr/local//lib/ser/modules/exec.so"
# Para trabajar con NAT
loadmodule "/usr/local//lib/ser/modules/mediaproxy.so"
loadmodule "/usr/local//lib/ser/modules/domain.so"
loadmodule "/usr/local//lib/ser/modules/dbtext.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"
loadmodule "/usr/local/lib/ser/modules/auth_radius.so"
loadmodule "/usr/local/lib/ser/modules/group_radius.so"
loadmodule "/usr/local/lib/ser/modules/acc.so"
# ----------------- setting module-specific parameters ---------------
# ----------------- setting module-specific parameters ---------------
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# module authorization
modparam("auth_radius","radius_config","/usr/local/etc/radiusclient/radiuscl
ient.conf")
modparam("auth_radius","service_type",15)
#module accounting
modparam("acc","radius_config","/usr/local/etc/radiusclient/radiusclient.con
f")
modparam("acc","log_level",1)
modparam("acc", "service_type", 15)
modparam("acc", "radius_flag", 1)
modparam("acc", "radius_missed_flag", 3)
modparam("acc", "failed_transactions", 1)
modparam("acc", "report_ack", 0)
#group radius
modparam("group_radius","radius_config","/usr/local/etc/radiusclient/radiusc
lient.conf")
modparam("group_radius", "use_domain", 1)
#module mediaproxy
modparam("mediaproxy", "natping_interval", 60)
modparam("mediaproxy", "mediaproxy_socket", "/var/run/mediaproxy.sock")
#modparam("mediaproxy", "sip_asymmetrics",
"/usr/local/etc/ser/sip-asymmetrics-clients")
#modparam("mediaproxy", "rtp_asymmetrics",
"/usr/local/etc/ser/rtp-asymmetrics-clients")
modparam("registrar", "nat_flag", 5)
#module domain
modparam("domain", "db_url", "/usr/local/etc/ser/domaintables")
modparam("domain", "domain_table", "domain")
modparam("domain", "domain_col", "domain")
# ------------------------- 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 > max_len ) {
sl_send_reply("513", "Message too big");
break;
};
# subsequent messages withing a dialog should take the
# path determined by record-routing
record_route();
if (loose_route()) {
if (method=="BYE" || method=="CANCEL") {
log(1, "NAT: BYE o CANCEL recibido --> terminando la
sesion de media\n");
end_media_session();
setflag(1);
};
t_relay();
break;
};
# Maracamos las llamadas para accounting
setflag(1);
if (client_nat_test("1")) {
log(1, "NAT: Requerimiento de IP privada --> fixed contact
(en rutina principal)\n");
setflag(5);
force_rport();
fix_contact();
append_hf("P-hint: fixed NAT contact for request\r\n");
};
# (in case, it does not work, use the following command
# with proper names and addresses in it)
if (uri==myself) {
if (method=="REGISTER") {
# Challenge/Response
if ( !radius_www_authorize("")) {
www_challenge("", "1");
break;
};
# Mandamos un mensaje de Log si es que un cliente NATEADO se
registro.
if (isflagset(5)) {
log(1, "NAT: Cliente NAT'eado registrado (dentro del
chequeo de REGISTER)\n");
};
save("location");
break;
}; # FIN DE CHEQUEO DE REGISTRO
# lookup("aliases");
# CHEQUEO EL INVITE DE LA LLAMADA A REALIZARSE SOLO SI ES DE MI
DOMINIO SIPPROXY.MAGENTA.CL
if (method=="INVITE" && search("^From: <sip:.*@64.76.148.231>")) {
if ( !radius_proxy_authorize("")) {
proxy_challenge("", "1");
log (1, "LOG: Llamada no AUTORIZADA\n");
break;
};
};
if ( (uri=~"^sip:0.*@.*") ){
if (method=="INVITE") {
log(1,"FORWARDING : Llamada hacia plataforma
H.323\n");
route(3);
break;
};
};
# Llamadas hacia dominio H.323 (todo lo que comienza con 111, 777,
333 y 00xxxxxxxx)
if ( (uri=~"^sip:111.*@.*") | (uri=~"^sip:777.*@.*") |
(uri=~"^sip:333.*@.*") ){
if (method=="INVITE") {
log(1,"FORWARDING : Llamada hacia plataforma
H.323\n");
route(1);
break;
};
};
# Llamadas SIP locales
if (!lookup("location")) { #Usuarios que no estan en "location"
database.
route(4);
break;
};
setflag(3);
# Manejo para llamadas NAT'das
if (method=="INVITE") {
log(1, "ROUTING: Reply processing (online user) enabled to
handle NAT'd resonses\n");
t_on_reply("1");
if ( (isflagset(5)) && (method=="INVITE" ||
method=="ACK") ) {
log(1, "NAT: Invite received --> enabling
media proxy (else del lookup 2do if)\n");
use_media_proxy();
append_hf("P-hint: request forced to media
proxy\r\n");
};
};
# Do it ? (Ricardo Martinez)
};
append_hf("P-hint: USRLOC\r\n");
if (!t_relay()) {
sl_reply_error();
break;
};
} /* end of initial routing logic */
#--------- Route 1 hacia SIPQUEST -------------------------------
route[1]
{
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
# Esta NATEADO?
if (isflagset(5)) {
log(1, "NAT: At least one participant NAT'd --> enable reply
processing (hacia GW)\n");
t_on_reply("1");
if (method=="INVITE") {
log(1, "NAT: Invite received --> enabling proxied
media session (hacia GW)\n");
setflag(1);
use_media_proxy();
};
};
rewritehostport("sipquest.mydomain.com:5060");
append_hf("P-hint: GATEWAY\r\n");
if (!t_relay()) {
sl_reply_error();
break;
};
}
#------- Route 3 : Trafico de Internet hacia la PSTN -------------------
route[3] {
setflag(1);
#Esta NETEADO?
if (isflagset(5)) {
log(1, "NAT: At least one participant NAT'd --> enable reply
processing (hacia GW)\n");
t_on_reply("1");
if (method=="INVITE") {
log(1, "NAT: Invite received --> enabling proxied
media session (hacia GW)\n");
#setflag(1);
use_media_proxy();
};
};
rewritehostport("gw1.mydomain.com:5060");
append_hf("P-hint: GATEWAY\r\n");
t_relay();
break;
}
#------ Route 4 : Llamadas a usuarios Off-line ------------------------
route[4] {
if (!t_newtran()) {
sl_reply_error();
};
if (!t_reply("404", "Not Found IT!")) {
sl_reply_error();
};
break;
}
# ---------------------------- Begin On-Reply Routes
--------------------------
onreply_route[1] {
# If we've got here, it's because we've previously passed through a
block
# which handles NAT requests and has set a t_on_reply condition. DB
03-08-2004
if (status =~ "(183)|(2[0-9][0-9])") {
if (client_nat_test("1") || isflagset(5)) {
log(1, "NAT: Reply from NAT'd client --> fixing contact
(onreply_route)\n");
fix_contact();
use_media_proxy();
setflag(5);
};
log(1, "NAT: NAT'd transaction answered --> enabling media proxy
(onreply_route)\n");
# use_media_proxy();
};
}
# ------------------------------ End On-Reply Routes
--------------------------
Ricardo.-