Hi List,
I have installed SER from souce using "make / install:. I would like
to know, how to uninstall SER if we install from source.
I am stuck now.. Any help appreciated.
Thanks in advance.
krc.
Hi Folks!
Is it possible for SER to listen to a multicast address just by placing
a multicast address as a listen value in the configuration file??
Something like listen=224.0.1.75 or listen=sip.mcast.net??
(I've tried without much success...did I miss something?)
Or it requires some reprograming of the network part? When opening
sockets in udp_server.c, it considers only unicast type, is it right?
Thanks!
Samuel.
Unclassified
Hi
i've a problem with MSN. When I try to subscribe my user with MSN
(4.7.2009) ser doesn't autorizie me, but when I try with kphone and the
same user, it works correctly. In fact I can see on contact table the row
of my user.
I have exported SIP_DOMAIN=sip.quellidelpirana.it
I think that the condition if (uri==myself) doesn't match my IP address.
any idea??
this is my ser.cfg.
###############################################
# $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
debug=3
fork=yes
log_stderror=no
check_via=no
dns=no
rev_dns=no
port=5060
children=4
fifo="/tmp/ser_fifo"
alias=217.57.90.117
alias=sip.quellidelpirana.it
alias=webby.spidlink.com
# ------------------ module loading ----------------------------------
loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so"
loadmodule "/usr/lib/ser/modules/tm.so"
loadmodule "/usr/lib/ser/modules/rr.so"
loadmodule "/usr/lib/ser/modules/maxfwd.so"
loadmodule "/usr/lib/ser/modules/usrloc.so"
loadmodule "/usr/lib/ser/modules/registrar.so"
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/lib/ser/modules/auth_db.so"
loadmodule "/usr/lib/ser/modules/acc.so"
loadmodule "/usr/lib/ser/modules/exec.so"
loadmodule "/usr/lib/ser/modules/group.so"
loadmodule "/usr/lib/ser/modules/textops.so"
loadmodule "/usr/lib/ser/modules/nathelper.so"
loadmodule "/usr/lib/ser/modules/xlog.so"
# ----------------- setting module-specific parameters ---------------
# -- registrar params --
# modparam("registrar", "use_domain", 1)
# -- usrloc params --
modparam("usrloc", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("usrloc", "db_mode", 2)
# -- auth params --
# Uncomment if you are using auth module
#
modparam("auth_db", "db_url", "mysql://ser:heslo@localhost/ser")
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")
# -- tm modules ---
modparam("tm", "fr_inv_timer", 15 )
#-- acc params --
modparam("acc","db_url", "mysql://ser:heslo@localhost/ser")
modparam("acc", "log_missed_flag", 3)
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1)
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 3)
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# -- nathelper params --
modparam("registrar", "nat_flag", 6)
modparam("nathelper", "natping_interval", 30) # Ping interval 30 s
modparam("nathelper", "ping_nated_only", 1)
#----- main routing logic
route{
log(1, "");
log(1, "Avvio procedura di Route");
xlog("L_NOTICE", "method <%rm> from <%fu> - <%is> source address");
xlog("L_NOTICE", "request URI <%ru> - to URI <%tu>");
# if (nat_uac_test("2")) {
# log(1, "src address different than via header->NAT
detected\n");
# log(1, "force_rport and fix_nated_contact and setflag(5)\n");
#try NAT traversal, works only if the client is symmetrical
# force_rport();
# fix_nated_contact();
# append_hf("P-hint: fixed NAT contact for request\r\n");
# flag 5 indicates that incoming request is from NATed client
# setflag(5);
# };
# 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;
};
# !! Nathelper
# Special handling for NATed clients; first, NAT test is
# executed: it looks for via!=received and RFC1918 addresses
# in Contact (may fail if line-folding is used); also,
# the received test should, if completed, should check all
# vias for rpesence of received
if (nat_uac_test("3")) {
# Allow RR-ed requests, as these may indicate that
# a NAT-enabled proxy takes care of it; unless it is
# a REGISTER
if (method == "REGISTER" || ! search("^Record-Route:")) {
log("LOG: Someone trying to register from private
IP,rewriting \n");
# This will work only for user agents that support
symmetric
# communication. We tested quite many of them and
majority is
# smart enough to be symmetric. In some phones it
takes a configuration
# option. With Cisco 7960, it is called
NAT_Enable=Yes, with kphone it is
# called "symmetric media" and "symmetric signalling".
fix_nated_contact(); # Rewrite contact with source IP
of signalling
log("LOG: fix_nated_contact\n");
if (method == "INVITE") {
fix_nated_sdp("1"); # Add direction=active to SDP
};
force_rport(); # Add rport parameter to topmost Via
log("LOG: force_rport");
setflag(6); # Mark as NATed
};
};
# 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();
# loose-route processing
if (loose_route()) {
log(1, "loose_route processing\n");
t_relay();
break;
};
if (!uri==myself) {
# mark routing logic in request
log(1, "marked routing logic in request - OUT FROM
uri==myself");
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==myself) {
log(1, "qui arrivo.....");
if (method=="REGISTER") {
log("LOG: in register main");
if (!www_authorize("sip.quellidelpirana.it",
"subscriber")) {
log(1, "Auth: NO - requesting
authentification\n");
www_challenge("sip.quellidelpirana.it", "0");
break;
} else {
log(1, "Auth: YES");
# consume_credentials();
};
save("location");
break;
};
lookup("aliases");
if (!uri==myself) {
log(1, "marked routing logic in request - IN
uri==myself");
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]
{
log(1, "Red Route 1...");
# !! Nathelper
if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
!search("^Route:")){
sl_send_reply("479", "We don't forward to private IP addresses");
break;
};
# if client or server know to be behind a NAT, enable relay
if (isflagset(6)) {
force_rtp_proxy();
};
# NAT processing of replies; apply to all transactions (for example,
# re-INVITEs from public to private UA are hard to identify as
# NATed at the moment of request processing); look at replies
t_on_reply("1");
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
}
# !! Nathelper
# all incoming replies for t_onrepli-ed transactions enter here
onreply_route[1] {
log(1, "-------------------------------------------\n");
log(1, "onreply_route[1] entered\n");
if (isflagset(6)) {
log(1, "transaction was sent to a NATED client -> fix
nated contact\n");
fix_nated_contact();
append_hf("P-hint: fixed NAT contact for response\r\n");
}
if ( (status=~"100") ) {
log(1, "status 100 received\n");
};
if ( (status=~"180") ) {
log(1, "status 180 received\n");
};
if ( (status=~"202") ) {
log(1, "status 202 received\n");
};
if ( (status=~"200" || status=~"183") ) {
log(1, "status 2xx or 183");
if ( isflagset(7) ) {
log(1, "marked(7) as NATED-INVITE ->
force_rtp_proxy \n");
force_rtp_proxy();
append_hf("P-hint: response forced to rtp proxy\r\n");
};
};
}
ngrep result is
U 157.27.242.227:3194 -> 217.57.90.117:5060
REGISTER sip:sip.quellidelpirana.it SIP/2.0..Via: SIP/2.0/UDP
157.27.242.227:9759..From:
<sip:giandrea@sip.quellidelpirana.it>;tag=43ec173f-30be-4151-8dd8-9311cfe1e4b0..To:
<sip:giandrea@sip.
quellidelpirana.it>..Call-ID:
6f6d3b9b-bc1a-406a-9593-cd7ee88073ab@157.27.242.227..CSeq: 1
REGISTER..Contact: <sip:157.27.242.227:9759>;methods="INVITE, MESSAGE,
INFO, SUBSCRIBE, OPTIONS, BYE
, CANCEL, NOTIFY, ACK"..User-Agent: Windows RTC/1.0..Expires:
1200..Event: registration..Allow-Events: presence..Content-Length:
0....
#
U 217.57.90.117:5060 -> 157.27.242.227:9759
SIP/2.0 401 Unauthorized..Via: SIP/2.0/UDP 157.27.242.227:9759..From:
<sip:giandrea@sip.quellidelpirana.it>;tag=43ec173f-30be-4151-8dd8-9311cfe1e4b0..To:
<sip:giandrea@sip.quellidelpirana.it>
;tag=b27e1a1d33761e85846fc98f5f3a7e58.c99d..Call-ID:
6f6d3b9b-bc1a-406a-9593-cd7ee88073ab@157.27.242.227..CSeq: 1
REGISTER..WWW-Authenticate: Digest realm="sip.quellidelpirana.it", nonce="40e
c0b5b5a0c4bf6e043f0b4c78f8a17e6f42cf2"..Server: Sip EXpress router
(0.8.13-dev-30-db_api (i386/linux))..Content-Length: 0..Warning: 392
217.57.90.117:5060 "Noisy feedback tells: pid=1082 req
_src_ip=157.27.242.227 req_src_port=3194
in_uri=sip:sip.quellidelpirana.it out_uri=sip:sip.quellidelpirana.it
via_cnt==1"....
#
Below is a call flow for a situation that fails -
I have attached the ser.cfg file, and two ethereal sniffs - these are
for fax call attempts - one with record_route commented out (which
succeeds) , and one with record_route(), which fails.
Note that in the failure case, with record_route(), the re-invite from
208.226.140.40 gets to the proxy at 208.226.140.141, but the proxy never
sends that to the origination UA, 208.226.140.142.
The fax case looks nearly identical to the call flow below, which was
taken from a call attempt with a SIP phone placed on hold.
From TRT --
We are having a problem with a Re-Invite between and endpoint and the
SER proxy. The call flow is:
Assumptions: Record route turned on in Proxy
UA-Orig
Proxy
UA-Term
192.168.1.10
192.168.1.20 192.168.1.30
------------------Invite sip:1@192.168.1.20------->
<--------------- 100 Trying ----------------------------
--------
Invite sip:1@192.168.1.30 --------->
<-------------- 100 Trying --------------------
<------------------180 Ringing ----------------
<---------------- 180 Ringing -------------------------
<------------------ 200 OK ---------------------
<---------------- 200 OK-------------------------------
--------------------- ACK sip:1@192.168.1.20 à
---------
Ack sip:1@192.168.1.30 ------>
******** Call is connected and voice path is established
*************************
******** Termination puts call on hold and sends NULL SDP via Re-Invite
******
<--------
Invite sip:1@192.168.1.20-------
** Note: to and from tags are set correctly, call id is same as original
Invite, Sequence incremented
---------- 100 Trying ------------------------->
---------- Invite
sip:1@192.168.1.30 -------->
** Invite is being sent back to termination. It is not identifying this
call as an existing call in the proxy.
TRT
--
Bert Berlin
Director, System Test
Quintum Technologies, Inc.
71 James Way
Eatontown,NJ 07724
ph 732-460-9000 ext 247
#
# $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
#
# simple quick-start config script
# Uses proxy registrar to route call, so won't work unless UA is registered.
#
# ----------- global configuration parameters ------------------------
debug=8 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=yes # (cmd line: -E)
/* Uncomment these lines to enter debugging mode */
fifo="/tmp/ser_fifo"
sip_warning=yes
check_via=yes # (cmd. line: -v)
dns=yes # (cmd. line: -r)
rev_dns=yes # (cmd. line: -R)
listen=208.226.140.141
port=5060
listen=208.226.140.141
port=5000
listen=208.226.140.141
port=5061
listen=208.226.140.141
port=6000
children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so"
loadmodule "/usr/lib/ser/modules/tm.so"
loadmodule "/usr/lib/ser/modules/rr.so"
loadmodule "/usr/lib/ser/modules/maxfwd.so"
loadmodule "/usr/lib/ser/modules/usrloc.so"
loadmodule "/usr/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/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)
modparam("registrar", "default_expires", 120) #sets default for expiry if registrant doesn't specify
modparam("registrar", "default_q", 1000)# sets default q value in registration
# ------------------------- request routing logic -------------------
alias=quintum.com
alias=208.226.140.141
alias=208.226.140.41
alias=engweb(a)quintum.com
alias=208.226.140.141(a)quintum.com
alias=208.226.140.41(a)quintum.com
# 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;
};
############################################
# store user location if a REGISTER appears
if (method=="REGISTER") {
save("location");
break;
};
if (uri==myself) #where myself is defined by the aliases above
{
#look for the registered contact in the location table of database
#and if find it, rewrite the uri and forward statefully to the destination
if (lookup ("location"))##Lookup finds the contact info and rewrites the header
{
record_route();#send everything back through the proxy
t_relay();
break;
}
else
{
sl_send_reply("404","user not found");#and if you really don't know what to do, send this back
break;
}
};
}
Hi List,
is there a possiblity to authenticate one ser against another?
Users -- SER1 ---- SER2 -- GW
- SER1 authenticates all local users
- SER2 should only allow SIP from multiple SER1 and create CDRs
Is this possible in SER, or should we rather stay with IP-based access controll, e.g. firewalling or vpn?
Would it make sense to add header fields to achieve this task?
Greetings,
Martin
Hi Andayesh!
I've posted the modifications made by the student some time ago:
http://lists.iptel.org/pipermail/serusers/2004-May/008487.html
Basically, adding support for RTC API should not be that hard:
1. Use ngrep or ethereal to watch the SIP transactions between two
RTC-API user agent.
2. Capture the SIP traffic between an RTC-API user agent and ser-pa.
3. Modify pa to use the same syntax as the RTC-API.
regards,
Klaus
PS: Please send emails always to the mailing list.
andayesh wrote:
> Hi Klaus,
>
> I have seen a message you have posted, indicating one of your students has done something with PA module to work with RTC / api. I have the same problem.
> Can u help me?
>
> Regards,
> Keyvan
>
>
hello friends,
i have downloaded serweb_2004-01-04 from web
and untared in the /var/www/ location
and in config.php i changed the
this->db_host="202.*.*.*";
this->db_name="ser";
this->db_ser="ser";
this->db_pass="heslo";
now when i acess my web page by
http://202.*.*.*/serweb_2004-01-04/html/admin/index.html
it gives login page when i type user ser
password heslo
no change is there
but in the error logs of httpd i got this info
[Wed Jul 07 12:51:21 2004] [error] [client 202.*.*.*]
File does not exist: /var/www/prolog.html
[Wed Jul 07 12:51:21 2004] [error] [client 202.*.*.*]
File does not exist: /var/www/separator.html
[Wed Jul 07 12:51:21 2004] [error] [client 202.*.*.*]
File does not exist: /var/www/epilog.html
[Wed Jul 07 12:51:21 2004] [error] [client 202.*.*.*]
File does not exist: /var/www/iptel, referer: http://
202.*.*.*/serweb_2004-01-04/html/admin/index.php
[Wed Jul 07 12:51:21 2004] [error] [client 202.*.*.*]
File does not exist: /var/www/iptel, referer: http://
202.*.*.*/serweb_2004-01-04/html/admin/index.php
[Wed Jul 07 12:51:47 2004] [error] [client 202.*.*.*]
File does not exist: /var/www/prolog.html, referer:
http://202.*.*.*/serweb_2004-01-04/html/admin/index.php
[Wed Jul 07 12:51:47 2004] [error] [client 202.*.*.*]
File does not exist: /var/www/separator.html, referer:
http://202.*.*.*/serweb_2004-01-04/html/admin/index.php
[Wed Jul 07 12:51:47 2004] [error] [client 202.*.*.*]
File does not exist: /var/www/epilog.html, referer:
http://202.*.*.*/serweb_2004-01-04/html/admin/index.php
[Wed Jul 07 12:51:47 2004] [error] [client
202.65.128.19] File does not exist: /var/www/iptel,
referer:
http://202.*.*.*/serweb_2004-01-04/html/admin/index.php
[Wed Jul 07 12:51:47 2004] [error] [client
202.65.128.19] File does not exist: /var/www/iptel,
referer:
http://202.*.*.*/serweb_2004-01-04/html/admin/index.php
[Wed Jul 07 13:00:59 2004] [error] [client 202.*.*.*]
Directory index forbidden by rule: /var/www/
__________________________________
Do you Yahoo!?
Yahoo! Mail - 50x more storage than other providers!
http://promotions.yahoo.com/new_mail
Dreadfully sorry to bother you folks again, but over the last ten
hours, minus a short break for leftover tamales, I've done nothing
but confuse myself even further.
I believe the main piece I need to know, now, is simply how I should
be going about forwarding outbound calls, from private addresses, to a
PSTN gateway. Here is my crude drawing from a few days ago, slightly
updated to our new plan.
+--------+ +------------------------+ +-------+ +--------------+
| Phones |___| IP Router & SER Server |___| I'net |___| PSTN Gateway |
| 10.x | | 10.0.0.1 --- 17.28.6.1 | | * | | 17.40.2.42 |
+--------+ +------------------------+ +-------+ +--------------+
I have tried a ridiculous number of combinations of using and not using
nathelper, forcing and not forcing rtp proxy, loose and strict routing,
handling first by method or first by destination, and so on.
The only thing that's been consistent is mhomed=1 is absolutely
necessary, and none of the NAT functions seem to update the private
address in the SDP packet. Do they need to be used in route[0],
route[x], or does it not matter?
What is the advantage to using rewritehostport(...) and t_relay() over
t_relay_to(...)? Or record_route() and forward(...)? Or blindly
loose_route()'ing all over the place?
If someone could *please* advise me on the "proper" theory for how to
set up routing for the above graphical situation, I would be very,
very grateful.
Elsewhere, what should be done with ACK requests? When SER sends my
phone an OK, my phone replies ACK to SER. When this hits my "if
(loose_route) { if (t_relay()) { sl_reply_error(); }; };" block, which
I see in many example configs out there, processing stops, presumably
because t_relay() returns a 0 rather than a negative number. What's
the proper way to process ACKs? Do they ever need to be relayed, or
are they always single point to point.
Hopefully my last desperate call for help to you all,
Jeremy (who is now off to find a nice wall with which to bang his head
on until hearing back from the list)
--
Jeremy M. Dolan <mailto:jmd@pobox.com> <http://jmd.us/>
PGP: 1024D/3C68A1BA 9470 210C A476 FFBB 6D11 0223 0D1C ABFC 3C68 A1BA
> Hi Guys,
>
> I would like to set up your server for testing purposes.
>
> I will install it on a pentium box using redhat 9.
>
> The server is running,
> ser is installed,
> Mysql is running.
> I need to set up the SerWeb but the documentation is poor.
>
> I have tried to install also the radius server but I do not have the libradius.so.0 so the installation was not completed.
>
> Who can help !!!
>
> If you have the doc in german or romanian it will do it for me.
>
> thank you
>
> my phone number is 416 298 9400 ext 2362.
>
> I can call you back.