Dear alberto,
I am newbie to kamailio pabx and followed the steps by step and i have a
problem by accessing the web interface.
error: "You don't have permission to access /siremis/bin/ on this server."
please help me out.
davis
Hello all,
I have done some modification in my ser.cfg. And when I decided to
restart, it failed.
Here the output from "messages" :
Sep 3 06:44:57 solo /usr/local/sbin/ser[23168]: Maxfwd module-
initializing
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: permissions -
initializing
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: Default allow file
(/usr/local/etc/ser/permissions.allow) not found => empty rule set
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: Default deny file
(/usr/local/etc/ser/permissions.deny) not found => empty rule set
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: AVPops - initializing
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: CHECK_UA - initializing
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: convert_row(): No
memory left
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: convert_rows(): Error
while converting row #4207
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: convert_result(): Error
while converting rows
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: store_result(): Error
while converting result
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: preload_udomain():
Error while doing db_query
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: register_udomain():
Error while preloading domain 'location'
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: domain_fixup(): Error
while registering domain
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: ERROR: fix_expr :
fix_actions error
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: CHECK_UA - destroing
module
I had thinking that my modification were bad, so I leaved them. But SER
failed again with the same output.
I put some comments before the lines which used "check_ua" module, and
then it worked ! I had never experience a problem with "check_ua" before
that.
Can someone help me to understand why it failed ?
Hi!
I want out of Internet and NAT kamailio registration extension from the
internet but do not know how. You can help me letters.! can send your
configuration file kamailio.cfg to see also.
Thank!
Hello
I have a question. I hope that someone could clarify this to me.
I have the next situation.
I'm using a t_on_failure route along with the LCR module. So I have
something like this :
failure_route[1] {
if (t_was_cancelled()) {
xlog("L_INFO", "[$ci] $rm:$ru t_was_cancelled in
failure_route\n");
exit;
}
if ( t_check_status("486") ) {
xlog("L_INFO","[$ci] 486 Received\n");
}
if (t_check_status("603")) {
xlog("L_INFO","[$ci] 603 Received\n");
if (!next_gw()) {
t_reply("503", "Service not available, no more
gateways");
xlog("L_INFO", "[$ci] No hay mas gateways para
$rm:$ou\n");
exit;
} else {
xlog("L_INFO", "[$ci] $rm cambiando $ou por $ru
en failure_route");
}
t_on_failure("1");
}
t_relay();
}
Maybe I'm misunderstanding how the failure_route works but with this
configuration I was expecting that If I have a 603 from the callee I
will do the "next_gateway" configuration. And If I have a 486 I will
put a line in the log and then continue with the t_relay. So.. the 486
will be passed to the caller, but with the final answer from the caller
( ACK ) to the 486.. and I'm getting this error...
Sep 2 16:43:41 ERROR:tm:t_forward_nonack: no branch for forwarding
Sep 2 16:43:41 ERROR:tm:w_t_relay: t_forward_nonack failed
So it seems that tries to forward the ACK with t_relay?
Caller Proxy Callee
------>
INVITE
----->
INVITE
<------
486
------->
ACK
<------
486
-----> (error?)
ACK
But...
When I modified the next lines in the failure_route
if ( t_check_status("486") ) {
xlog("L_INFO","[$ci] 486 Received\n");
exit;
}
And add the "exit" parameter, i don't have the above error and the "486"
is passed back to the caller as "expected".
Can someone explain me this?
Thanks in advance..
Regards
Ricardo Martinez.-
A given system is sending me INVITEs of the form:
INVITE sip:6663338888@111.222.33.44;cic=9876;rn=6663331212;npdi SIP/2.0
that includes some URI parameters, eg the things after the semi-colon.
In this case, the cic=nnnn value is really some internal routing
number and not a real PSTN CIC value (like 0288 for AT&T). So
when this eventually reaches a switch on the PSTN, that switch
sees that someone has already determined the CIC and it
attempts to route using what really isn't a CIC at all.
I would like to strip this "cic=nnnn" out of the call
within SER, and while there are a number of documented
rewriteuri functions for altering the URI in SER, there
doesn't seem to be anything that can be used to get at
URI parameters. For the above, I would like to trim it to:
INVITE sip:6663338888@111.222.33.44;rn=6663331212;npdi SIP/2.0
as the rn= and npdi values are sane and can be used by the
destination switch.
Is there such a beast, or is the only options to add a function/module
or use the exec to invoke an external program to do the job?
Thanks in advance.
I just tried to get Siremis working with postgres. First I had
problems because I created the table and columns with uppercase
letters and the behaviour of mysql and postgres is different in this
aspect so the Siremis queries weren't successful.
Now I created the user access table the following way:
CREATE TABLE ob_users (
sysid serial NOT NULL,
userid varchar(15) NOT NULL,
password varchar(15) default NULL,
PRIMARY KEY (sysid)
);
I also modified Config.xml:
Driver="Pdo_Pgsql" instead of Driver="Pdo_Mysql"
and Siremis seems to work fine with postgres.
cheers,
karl heinz
Hello all,
I have done some modification in my ser.cfg. And when I decided to
restart, it failed.
Here the output from "messages" :
Sep 3 06:44:57 solo /usr/local/sbin/ser[23168]: Maxfwd module-
initializing
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: permissions -
initializing
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: Default allow file
(/usr/local/etc/ser/permissions.allow) not found => empty rule set
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: Default deny file
(/usr/local/etc/ser/permissions.deny) not found => empty rule set
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: AVPops - initializing
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: CHECK_UA - initializing
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: convert_row(): No
memory left
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: convert_rows(): Error
while converting row #4207
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: convert_result(): Error
while converting rows
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: store_result(): Error
while converting result
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: preload_udomain():
Error while doing db_query
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: register_udomain():
Error while preloading domain 'location'
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: domain_fixup(): Error
while registering domain
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: ERROR: fix_expr :
fix_actions error
Sep 3 06:44:58 solo /usr/local/sbin/ser[23168]: CHECK_UA - destroing
module
I had thinking that my modification were bad, so I leaved them. But SER
failed again with the same output.
I put some comments before the lines which used "check_ua" module, and
then it worked ! I had never experience a problem with "check_ua" before
that.
Can someone help me to understand why it failed ?
Hello,
just committed to GIT support for 'include' in config file. Hopefully
this helps in nicer structuring and maintenance of your configs.
The syntax is simple:
include path_to_file
The path_to_file can be relative or absolute. If it is not absolute
path, first attempt is to locate it relative to current directory, and
if fails, relative to directory of the file that includes it. There is
no restriction where include can be used or what can contain - any part
of config file is ok. There is a limit of maximum 10 includes in depth,
otherwise you can use as many includes as you want. Reporting of the cfg
file syntax errors prints now the file name for easier troubleshooting.
Example:
route {
...
include /sr/checks.cfg
...
}
--- /sr/checks.cfg ---
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
---
Testing and feedback is much appreciated.
Cheers,
Daniel
--
Daniel-Constantin Mierla
* http://www.asipto.com/
On 03.09.2009 12:00 Uhr, Rajesh wrote:
Yes i did cretae.. i completed authentication and presence module
successfully.. iam caught up with this.. am posting my cfg file below.
kindly correct me if iam wrong.
**************************************************************************************************************************************************
####### Global Parameters #########
debug=3
log_stderror=yes
log_facility=LOG_LOCAL0
##fork changed to NO manually from yes
fork=yes
#fork=yes
children=4
/* uncomment the following lines to enable debugging */
#debug=6
#fork=no
#log_stderror=yes
/* uncomment the next line to disable TCP (default on) */
#disable_tcp=yes
/* uncomment the next line to enable the auto temporary blacklisting of
not available destinations (default disabled) */
#disable_dns_blacklist=no
/* uncomment the next line to enable IPv6 lookup after IPv4 dns
lookup failures (default disabled) */
#dns_try_ipv6=yes
/* uncomment the next line to disable the auto discovery of local aliases
based on revers DNS on IPs (default on) */
#auto_aliases=no
/* uncomment the following lines to enable TLS support (default off) */
#disable_tls = no
#listen = tls:your_IP:5061
#tls_verify_server = 1
#tls_verify_client = 1
#tls_require_client_certificate = 0
#tls_method = TLSv1
#tls_certificate = "/usr/local//etc/kamailio/tls/user/user-cert.pem"
#tls_private_key = "/usr/local//etc/kamailio/tls/user/user-privkey.pem"
#tls_ca_list = "/usr/local//etc/kamailio/tls/user/user-calist.pem"
port = 5067
/* uncomment and configure the following line if you want Kamailio to
bind on a specific interface/port/proto (default bind on all
available) */
#listen=udp:192.168.1.2:5060
####### Modules Section ########
#set module path
mpath="/usr/local//lib/kamailio/modules/"
/* uncomment next line for MySQL DB support */
loadmodule "db_mysql.so"
loadmodule "mi_fifo.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "pv.so"
loadmodule "textops.so"
loadmodule "usrloc.so"
loadmodule "maxfwd.so"
loadmodule "imc.so"
loadmodule "uri_db.so"
loadmodule "siputils.so"
loadmodule "xlog.so"
loadmodule "acc.so"
loadmodule "registrar.so"
loadmodule "auth.so"
loadmodule "auth_db.so"
loadmodule "alias_db.so"
loadmodule "domain.so"
loadmodule "presence.so"
loadmodule "presence_xml.so"
#n#loadmodule "nathelper.so"
##insert function tested here
# ----------------- setting module-specific parameters ---------------
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
# ----- rr params -----
# add value to ;lr param to cope with most of the UAs
modparam("rr", "enable_full_lr", 1)
# do not append from tag to the RR (no need for this script)
modparam("rr", "append_fromtag", 0)
# ----- rr params -----
modparam("registrar", "method_filtering", 1)
/* uncomment the next line to disable parallel forking via location */
# modparam("registrar", "append_branches", 0)
/* uncomment the next line not to allow more than 10 contacts per AOR */
#modparam("registrar", "max_contacts", 10)
# ----- uri_db params -----
/* by default we disable the DB support in the module as we do not need it
in this configuration */
modparam("uri_db", "use_uri_table", 0)
modparam("uri_db", "db_url", "")
# ----- acc params -----
/* what sepcial events should be accounted ? */
modparam("acc", "early_media", 1)
modparam("acc", "report_ack", 1)
modparam("acc", "report_cancels", 1)
/* by default ww do not adjust the direct of the sequential requests.
if you enable this parameter, be sure the enable "append_fromtag"
in "rr" module */
modparam("acc", "detect_direction", 0)
/* account triggers (flags) */
modparam("acc", "failed_transaction_flag", 3)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
modparam("acc", "log_extra",
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
/* uncomment the following lines to enable DB accounting also */
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
modparam("domain", "db_url",
"mysql://openser:openserrw@localhost/openser")
modparam("acc","db_extra","src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
# ----- usrloc params -----
modparam("usrloc", "db_mode", 2)
modparam("usrloc", "db_url",
"mysql://openser:openserrw@localhost/openser")
# ----- auth_db params -----
/* uncomment the following lines if you want to enable the DB based
authentication */
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("auth_db", "db_url","mysql://openser:openserrw@localhost/openser")
modparam("auth_db", "load_credentials", "")
###registrar params added for imc
# -- registrar params --
modparam("registrar", "default_expires", 120)
# -- registrar params --
modparam("usrloc", "db_mode", 0)
# -- imc params --
modparam("imc", "imc_cmd_start_char", "#")
modparam("imc|usrloc", "db_url",
"mysql://openser:openserrw@192.168.64.75/openser")
##the following three lines were added seperately for imc
modparam("imc", "rooms_table","imc_rooms")
modparam("imc", "rooms_table","imc_members")
modparam("imc", "hash_size", 8)
# -- tm params --
modparam("tm", "fr_timer", 10 )
modparam("tm", "fr_inv_timer", 15 )
modparam("tm", "wt_timer", 10 )
# ----- alias_db params -----
/* uncomment the following lines if you want to enable the DB based
aliases */
modparam("alias_db",
"db_url","mysql://openser:openserrw@localhost/openser")
# ----- domain params -----
/* uncomment the following lines to enable multi-domain detection
support */
modparam("domain", "db_url",
"mysql://openser:openserrw@localhost/openser")
modparam("domain", "db_mode", 1) # Use caching
# ----- multi-module params -----
/* uncomment the following line if you want to enable multi-domain support
in the modules (dafault off) */
modparam("alias_db|auth_db|usrloc|uri_db", "use_domain", 1)
# ----- presence params -----
/* uncomment the following lines if you want to enable presence */
modparam("presence|presence_xml", "db_url",
"mysql://openser:openserrw@localhost/openser")
modparam("presence_xml", "force_active", 1)
modparam("presence", "server_address", "sip:192.168.64.75:5060")
# -- nathelper
#n#modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:7722")
#n#modparam("nathelper", "natping_interval", 30)
#n#modparam("nathelper", "ping_nated_only", 1)
#n#modparam("nathelper", "sipping_bflag", 7)
#n#modparam("nathelper", "sipping_from", "sip:pinger@kamailio.org")
#n#modparam("registrar|nathelper", "received_avp", "$avp(i:80)")
#n#modparam("usrloc", "nat_bflag", 6)
####### Routing Logic ########
# main request routing logic
route{
insert_hf("To-username: test");
if (!mf_process_maxfwd_header("10"))
{
sl_send_reply("483","Too Many Hops");
exit;
}
########The following set of lines were added for implementing imc
# registrations -
##the following line has been added for creating chat rooms
##insert_hf (#create chat-000)
if(is_method("REGISTER")) {
save("location");
exit;
}
##if(uri=~"sip:q*@")
## if(uri=~"sip:chat0000@192.168.64.75")
##the below line has been edited by Rajesh.
if(uri=~"sip:chat0000@192.168.64.75")
{
# IMC - message
#imc xdbg("script: message from [$fu ] r-uri [$ru ] msg
[$rb]\n");
##the above two lines are edited for imc by Rajesh.
xdbg("script: message from [$fu ] chatroom000 [$ru ] msg
[$rb]\n");
if(is_method("MESSAGE"))
{
log("MESSAGE received -> processing with imc\n");
sl_send_reply("200", "ok");
imc_manager(); exit;
} else {
sl_send_reply("404", "not found");
exit;
};
} else {
xdbg("script: message not for room, from [$fu ] r-uri [$ru] msg
[$rb]\n");
if(!lookup("location"))
{
sl_send_reply("404", "not found");
exit;
}
t_relay();
#sl_send_reply("200", "ok");
exit();
};
#######The above lines were added for implementing imc
#insert function tested below
insert_hf("Test1");
# NAT detection
route(4);
if (has_totag()) {
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
if (is_method("BYE")) {
setflag(1); # do accounting ...
setflag(3); # ... even if the transaction fails
}
route(1);
} else {
if (is_method("SUBSCRIBE") && uri == myself) {
# in-dialog subscribe requests
route(2);
exit;
}
if ( is_method("ACK") ) {
## insert functioin tested below
insert_hf("Test_in_ACK");
if ( t_check_trans() ) {
# non loose-route, but stateful ACK; must be an ACK
after a 487 or e.g. 404 from upstream server
t_relay();
exit;
} else {
# ACK without matching transaction ... ignore and
discard.\n");
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
#initial requests
# CANCEL processing
if (is_method("CANCEL"))
{
if (t_check_trans())
t_relay();
exit;
}
t_check_trans();
# authentication
route(3);
# record routing
if (!is_method("REGISTER|MESSAGE"))
record_route();
# account only INVITEs
if (is_method("INVITE")) {
#insert_hf("To-username: test");
setflag(1); # do accounting
}
if (!uri==myself)
/* replace with following line if multi-domain support is used */
##if (!is_uri_host_local())
{
append_hf("P-hint: outbound\r\n");
# if you have some interdomain connections via TLS
##if($rd=="tls_domain1.net") {
## t_relay("tls:domain1.net");
## exit;
##} else if($rd=="tls_domain2.net") {
## t_relay("tls:domain2.net");
## exit;
##}
route(1);
}
# requests for my domain
insert_hf ("Test2");
if( is_method("PUBLISH|SUBSCRIBE"))
route(2);
if (is_method("REGISTER"))
{
if (!save("location"))
sl_reply_error();
exit;
}
if ($rU==NULL) {
# request with no Username in RURI
sl_send_reply("484","Address Incomplete");
exit;
}
# apply DB based aliases (uncomment to enable)
##alias_db_lookup("dbaliases");
if (!lookup("location")) {
switch ($retcode) {
case -1:
case -3:
t_newtran();
t_reply("404", "Not Found");
exit;
case -2:
sl_send_reply("405", "Method Not Allowed");
exit;
}
}
# when routing via usrloc, log the missed calls also
setflag(2);
route(1);
}
##insert function added below
##insert_hf ("Test4");
route[1] {
##insert function added below
insert_hf ("Test5");
#n# if (check_route_param("nat=yes")) {
#n# setbflag(6);
#n# }
#n# if (isflagset(5) || isbflagset(6)) {
#n# route(5);
#n# }
/* example how to enable some additional event routes */
if (is_method("INVITE")) {
insert_hf ("Test5");
##tried insert function here.
#t_on_branch("1");
##tried here
insert_hf("To-username: test");
t_on_reply("1");
t_on_failure("1");
}
if (!t_relay()) {
sl_reply_error();
}
exit;
}
# Presence route
/* uncomment the whole following route for enabling presence server */
route[2]
{
##tried here for insert function.
#insert_hf("Test_Presence");
#p# if (!t_newtran())
#p# {
#p# sl_reply_error();
#p# exit;
#p# };
#p#
#p# if(is_method("PUBLISH"))
#p# {
#p# handle_publish();
#p# t_release();
#p# }
#p# else
#p# if( is_method("SUBSCRIBE"))
#p# {
#p# handle_subscribe();
#p# t_release();
#p# }
#p# exit;
# if presence enabled, this part will not be executed
if (is_method("PUBLISH") || $rU==null)
{
sl_send_reply("404", "Not here");
exit;
}
return;
}
# Authentication route
/* uncomment the whole following route for enabling authentication */
route[3] {
if (is_method("REGISTER"))
{
# authenticate the REGISTER requests (uncomment to enable auth)
if (!www_authorize("192.168.64.75", "subscriber"))
{
www_challenge("192.168.64.75", "0");
exit;
}
###the following lines are uncommented
if ($au!=$tU)
{
sl_send_reply("403","Forbidden auth ID");
exit;
}
}
else
{
# authenticate if from local subscriber (uncomment to enable auth)
if (from_uri==myself)
{
if (!proxy_authorize("", "subscriber")) {
proxy_challenge("", "0");
exit;
}
if (is_method("PUBLISH"))
{
if ($au!=$tU) {
sl_send_reply("403","Forbidden auth ID");
exit;
}
} else {
if ($au!=$fU) {
sl_send_reply("403","Forbidden auth ID");
exit;
}
}
consume_credentials();
# caller authenticated
}
}
return;
}
# Caller NAT detection route
/* uncomment the whole following route for enabling Caller NAT Detection */
route[4]{
#n# force_rport();
#n# if (nat_uac_test("19")) {
#n# if (method=="REGISTER") {
#n# fix_nated_register();
#n# } else {
#n# fix_nated_contact();
#n# }
#n# setflag(5);
#n# }
return;
}
# RTPProxy control
/* uncomment the whole following route for enabling RTPProxy Control */
route[5] {
#n# if (is_method("BYE")) {
#n# unforce_rtp_proxy();
#n# } else if (is_method("INVITE")){
#n# force_rtp_proxy();
#n# }
#n# if (!has_totag()) add_rr_param(";nat=yes");
return;
}
branch_route[1] {
xdbg("new branch at $ru\n");
}
onreply_route[1] {
xdbg("incoming reply\n");
#n# if ((isflagset(5) || isbflagset(6)) &&
status=~"(183)|(2[0-9][0-9])") {
#n# force_rtp_proxy();
#n# }
#n# if (isbflagset(6)) {
#n# fix_nated_contact();
#n# }
}
failure_route[1] {
#n# if (is_method("INVITE)
#n# && (isbflagset(6) || isflagset(5))) {
#n# unforce_rtp_proxy();
#n# }
if (t_was_cancelled()) {
exit;
}
# uncomment the following lines if you want to block client
# redirect based on 3xx replies.
##if (t_check_status("3[0-9][0-9]")) {
##t_reply("404","Not found");
## exit;
##}
# uncomment the following lines if you want to redirect the failed
# calls to a different new destination
##if (t_check_status("486|408")) {
## sethostport("192.168.2.100:5060");
## append_branch();
## # do not set the missed call flag again
## t_relay();
##}
}
**************************************************************************************************************************************************
Daniel-Constantin Mierla wrote:
Hello,
have you created the db tables: kamdbctl create?
Cheers,
Daniel
On 03.09.2009 11:44 Uhr, Rajesh wrote:
Dear Team,
Iam configuring imc for kamailio-1.5 and while iam
trying to load the module, i get the following error .Kindly guide me
with a solution
ERROR:db_mysql:db_mysql_submit_query: driver error on query: Unknown
column 'name' in 'field list'
Sep 3 12:24:20 [18583] ERROR:core:db_do_query: error while submitting
query
Sep 3 12:24:20 [18583] ERROR:imc:add_from_db: failed to querry table
Sep 3 12:24:20 [18583] ERROR:imc:mod_init: failed to get information
from db
Sep 3 12:24:20 [18583] ERROR:core:init_mod: failed to initialize module
imc
Sep 3 12:24:20 [18583] ERROR:core:main: error while initializing modules
--