[Serusers] cpl scripts with the ser-0.8.12

ser die serdiehard at yahoo.com
Thu Aug 26 08:21:47 CEST 2004


hello friends,
 
atlast i got success with the cpl scripts
 
but one small problem is coming i.e 
 
we have three numbers 214103,215104,216105
 
i have written script for the 214103 like this where if any body call s to 214103 it should
redirect the call to the 215104 
so when 216105 calls to 214103 the call has to goto the 215104 with out disturbing the 214103 but here 
the call is going to the twol numbers 214103,215104 who ever picks up first the second call is being hanged up.
 
cpl script  is 
 
 
---+
| user                     | cpl_xml                                                                                                                                                                                                                                    | cpl_bin                                                  |
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
| 214103 at xxx.xxx.xxx.in | <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cpl PUBLIC '-//IETF//DTD RFCxxxx CPL 1.0//EN' 'cpl.dtd'>
<cpl>
  <incoming>
    <location url="sip:215104 at xxx.xxx.xxx.in">
      <redirect />
    </location>
  </incoming>
</cpl>

 
 
 
my ser.cfg is 
**********************************************************************************************************
 
 

 

debug=8 # 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=no # (cmd. line: -v)

dns=no # (cmd. line: -r)

rev_dns=no # (cmd. line: -R)

port=5060

children=4

fifo="/tmp/ser_fifo"

fifo_mode=438

# ------------------ 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/exec.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/domain.so"

loadmodule "/usr/local/lib/ser/modules/cpl-c.so"

loadmodule "/usr/local/lib/ser/modules/xlog.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/acc.so"

# !! Nathelper

loadmodule "/usr/local/lib/ser/modules/nathelper.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 (whichtrue in this config),

# uncomment also the following parameter)

#

modparam("auth_db", "password_column", "password")

modparam("usrloc","db_url","mysql://ser:heslo@localhost:3306/ser")

modparam("acc", "log_level", 1)

modparam("acc", "log_flag", 1)

modparam("acc", "db_flag", 1)

modparam("acc", "db_missed_flag", 2)

modparam("acc", "log_fmt", "miocfst")

modparam("acc", "failed_transactions" ,1)

#modparam("acc", "radius_flag", 1)

# -- rr params --

# add value to ;lr param to make some broken UAs happy

modparam("rr", "enable_full_lr", 1)

# !! Nathelper

modparam("registrar", "nat_flag", 6)

modparam("nathelper", "natping_interval", 30) # Pinginterval 30 s

modparam("nathelper", "ping_nated_only", 1) # Pingonly clients behind NAT

 

# -- cpl-c module --

modparam("cpl-c","cpl_db","mysql://ser:heslo@localhost/ser")

modparam("cpl-c","cpl_table","cpl")

modparam("cpl-c","cpl_dtd_file","/usr/local/etc/ser/cpl-06.dtd")

modparam("cpl-c","log_dir","/var/log/")

modparam("cpl-c","proxy_recurse",0)

# ------------------------- 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 toobig");

break;

};

# !! Nathelper

# Special handling for NATed clients; first,NAT test is

# executed: it looks for via!=received andRFC1918 addresses

# in Contact (may fail if line-folding isused); 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 mayindicate that

# a NAT-enabled proxy takes care ofit; unless it is

# a REGISTER

if (method == "REGISTER" || !search("^Record-Route:")) {

log("LOG: Someone trying toregister from private IP, rewriting\n");

# This will work only for useragents that support symmetric

# communication. We tested quitemany of them and majority is

# smart enough to be symmetric. Insome phones it takes a configuration

# option. With Cisco 7960, it iscalled NAT_Enable=Yes, with kphone it is

# called "symmetric media" and"symmetric signalling".

fix_nated_contact(); # Rewritecontact with source IP of signalling

if (method == "INVITE") {

fix_nated_sdp("1"); # Adddirection=active to SDP

};

force_rport(); # Add rportparameter to topmost Via

setflag(6); # Mark as NATed

};

};

setflag(1);

setflag(2);

# we record-route all messages -- to make surethat

# subsequent messages will go through ourproxy; that's

# particularly good if upstream and downstreamentities

# use different transport protocol

if (!method=="REGISTER") record_route();

# subsequent messages withing a dialog shouldtake 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==myself) {

# mark routing logic in request

append_hf("P-hint: outbound\r\n");

route(1);

break;

};

# if the request is for other domain useUsrLoc

# (in case, it does not work, use thefollowing command

# with proper names and addresses in it)



# Uncomment this if you want to use digestauthentication

if (uri==myself)

{

if(method=="REGISTER")

{

if(!www_authorize("xxx.xxxx.xxx.in", "subscriber")) {

www_challenge("xxx.xxxx.xxx.in", "0");

break;

};

save("location");

break;

};

 

 

if (method=="INVITE")

{

log(1, "INVITE\n");

cpl_process_register();

setflag(1); /* set foraccounting (the same valueas in log_flag!) */

};

if (method=="MESSAGE")

{

log(1, "MESSAGE\n");

setflag(1); /* set foraccounting (the same valueas in log_flag!) */

};

if ( method=="BYE" || method=="CANCEL" )

{

log (1, "BYE or CANCEL\n");

setflag(1);

};

lookup("aliases");

if (!uri==myself) {

append_hf("P-hint: outboundalias\r\n");

route(1);

break;

};

# native SIP destinations are handledusing our USRLOC DB

if (!lookup("location")) {

sl_send_reply("404", "NotFound");

break;

};

};

append_hf("P-hint: usrloc applied\r\n");

route(1);

}

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 toprivate 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 alltransactions (for example,

# re-INVITEs from public to private UA arehard to identify as

# NATed at the moment of request processing);look at replies

t_on_reply("1");

# send it out now; use stateful forwarding asit works reliably

# even for UDP2TCP

if (!t_relay()) {

sl_reply_error();

};

}

# !! Nathelper

onreply_route[1] {

# NATed transaction ?

if (isflagset(6) && status =~ "(183)|2[0-9][0-9]")

{

fix_nated_contact();

force_rtp_proxy();

# otherwise, is it a transaction behind a NAT andwe did not

# know at time of request processing ? (RFC1918contacts)

} else if (nat_uac_test("1")) {

fix_nated_contact();

};

}

 
*****************************************************************************************************
 
with regards
rama kanth
 
 
 
 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20040825/27286af9/attachment.htm>


More information about the sr-users mailing list