Hi everybody!
I am running SER + RTPPROXY and I am trying to establish a call between a UA
with public IP address and a UA with private IP address connecting to the proxy
through a Access Point that has an extern ip address that is private too:
UA1 (192.168.0.100) <--> (192.168.0.1) AP (192.168.1.1) <--> (192.168.1.2) SER
(public IP) <--> (public IP) UA2
I just used the function force_rtp_proxy of nathelper module to force SER to
change the sdp body of INVITE and reply messages, and in this way the fields c=
and m= of the sdp get changed correctly.
I can establish a call and the UAs send RTP packets to the rtpproxy. The
problem is that the rtpproxy doesn't forward the RTP packets coming from the UA
with public address (UA2) towards the UA with private address (UA1).
Are there special flags I have to set in order to make rtpproxy work properly?
Do I have to use other functions of nathelper module besides force_rtp_proxy? I
am writing my own module for SER and I programmed it in such a way that the
force_rtp_proxy function is called (not from the configuration file but from
the module itself) for every INVITE request and reply, so that every RTP stream
has to pass through the rtpproxy.
If I try to use 2 UAs with public addresses everything works properly...
Last question: how can I run rtpproxy in debug mode? And where can I see the
log files???
Please someone help me!
Thanks a lot!
Chiara
I have just upgraded from 1.0.0 to 1.1.0-snapshot of a couple days ago,
and now I get the following errors:
Aug 18 14:50:56 eowyn OpenSER[16760]: ERROR: tcp_blocking_connect:
timeout 10 s elapsed from 10 s
Aug 18 14:50:56 eowyn OpenSER[16760]: ERROR: tcpconn_connect:
tcp_blocking_connect failed
Aug 18 14:50:56 eowyn OpenSER[16760]: ERROR: tcp_send: connect failed
Aug 18 14:50:56 eowyn OpenSER[16760]: msg_send: ERROR: tcp_send failed
Aug 18 14:50:56 eowyn OpenSER[16760]: ERROR:tm:t_forward_nonack: sending
request failed
I'm using OpenBSD 3.9-stable amd64.
What could be the problem?
Thanks.
P.S.
It could be a good idea to add in the 1.0.x to 1.1.x upgrade web page
that the "module_exports" structure has changed.
P.S. 2
My system is a 64 bit one, but the standard library directory is the
usual "lib" and NOT "lib64".
--
___________________________________________________
__
|- giannici(a)neomedia.it
|ederico Giannici http://www.neomedia.it
___________________________________________________
Sure
In sip.conf create a [user] and a [peer] or you can use [friend] if the
para's are the same
[SER]
type=user
disallow=all
allow=g729
allow=ulaw
allow=alaw
context=default
canreinvite=no
permit=10.0.0.2/255.255.255.255
host=10.0.0.2
trustrpid=no
[SER]
type=peer
insecure=yes
host=10.0.0.2
context=default
nat=no
canreinvite=no
promiscredir=yes
disallow=all
allow=g729
allow=ulaw
trustrpid=no
Rick
_____
From: serusers-bounces(a)lists.iptel.org
[mailto:serusers-bounces@lists.iptel.org] On Behalf Of Daniel Mirrha Santos
Sent: Friday, August 18, 2006 8:48 AM
To: Ser
Subject: [Serusers] Connect Ser on a Asterisk
Hi,
I'm using SER like a public switch and I need to register it on a Asterisk
server. Does anybody know how could I do that?
Regards,
Daniel
I think Ser also can fire some kind of interruption that calls some
routine when the call rings for some time. This routine being called
should send that call to voicemail.
Anyone knows how can I do that in ser.cfg?
Thanks,
Ricardo.
(Also thanks Juan for your post!)
Juan wrote:
> Hi Ricardo.
> SER doesn't care if the call is answered or not.
> Asterisk yes. From the little I know about * you will have to setup a
> mailbox for each customer so if he/she is not online or doesn't answer the
> call it will be redirected after certain amount of time to the mailbox.
> Hope this helps.
> Regards
>
> Juan
>
> -----Original Message-----
> From: serusers-bounces(a)lists.iptel.org
> [mailto:serusers-bounces@lists.iptel.org] On Behalf Of Ricardo Carvalho
> Sent: Thursday, August 17, 2006 1:33 PM
> To: serusers(a)lists.iptel.org
> Subject: [Serusers] How to send Calls from Ser to Asterisk Voicemail?
>
> How should I configure ser.cfg to enable Ser to send calls to Asterisk
> Voicemail when after ringing for some while, the phone isn't answered?
>
> Thanks,
>
> Ricardo.
> _______________________________________________
> Serusers mailing list
> Serusers(a)lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>
>
Hi,
I would like to know is it possible to setup SER with multiple media proxy. If its not possible than please suggest me what is the best way to solve the problem mentioned below.
The problem is I have a setup of SER with Media proxy running in Singapore and I also have some users in US. But I want to use one SER, which is running in singapore, since it connects with DB and doing the AAA. And my users in US also register on the same proxy. But when my US users make IP to IP calls since in current setup their media is first coming to singapore than going to US, they face a latency and poor quality. How can I avoid this without running multiple instances of SER.
What I plan to do is setup another media proxy in US and depending on the Nated contact of user agents I give them appropriate media proxy address.
Thanking you in advance,
Best Regards,
Abdul Qadir
Best Regards,
Abdul Qadir
---------------------------------
Do you Yahoo!?
Get on board. You're invited to try the new Yahoo! Mail Beta.
Dear all,
First of all, I would like to say thanks to all of you who has been helped me, so I have succeed to build my openser server. Thank you very much. Thanks
Now, I am building a serweb. So, the client can register easily from their computer to the openser server. So, they can join the voip communication by using the openser server that I have been built.
But, When I tried to build the serweb, I have a problem. This is the error message that I have received from the client browser:
Parse error: parse error, unexpected T_VARIABLE in /var/www/html/serweb/config.php on line 217
Fatal error: Failed opening required 'var/www/phplib/db_mysql.inc' (include_path='.:/usr/share/pear') in /var/www/html/serweb/user_interface/prepend.php on line 23
What`s wrong in the configuration? I do hope anyone can help me..Please..
2. can openser use serweb? because as I know, serweb is used for SER. or the openser has it`s own "serweb"? can anybody can tell me what is it?
What`s wrong? I do hope anybody can help me..Please help me..Please
Thanks you very much
Regards,
Ferianto
---------------------------------
Talk is cheap. Use Yahoo! Messenger to make PC-to-Phone calls. Great rates starting at 1¢/min.
Dear all,
First of all, I would like to say thanks to all of you who has been helped me, so I have succeed to build my openser server. Thank you very much. Thanks
Now, I am building a serweb. So, the client can register easily from their computer to the openser server. So, they can join the voip communication by using the openser server that I have been built.
But, When I tried to build the serweb, I have a problem. This is the error message that I have received from the client browser:
Parse error: parse error, unexpected T_VARIABLE in /var/www/html/serweb/config.php on line 217
Fatal error: Failed opening required 'var/www/phplib/db_mysql.inc' (include_path='.:/usr/share/pear') in /var/www/html/serweb/user_interface/prepend.php on line 23
What`s wrong in the configuration? I do hope anyone can help me..Please..
2. can openser use serweb? because as I know, serweb is used for SER. or the openser has it`s own "serweb"? can anybody can tell me what is it?
Note:
This is the configuration in serweb that I have made. I am so sorry because the configuration is too long. Sorry.
1. config.php
<?
/*
* $Id: config.php,v 1.30 2003/12/12 22:03:10 jiri Exp $
*/
class Csub_not {
var $uri, $desc;
function Csub_not($uri, $desc){
$this->uri=$uri;
$this->desc=$desc;
}
}
class CREG_list_item {
var $reg, $label;
function CREG_list_item($reg, $label){
$this->reg=$reg;
$this->label=$label;
}
}
class Capplet_params {
var $name, $value;
function Capplet_params($name, $value){
$this->name=$name;
$this->value=$value;
}
}
class Ctab{
var $name, $page, $enabled;
function Ctab($enabled, $name, $page){
$this->name=$name;
$this->page=$page;
$this->enabled=$enabled;
}
}
class Cconfig {
var $db_host;
var $db_name;
var $db_user;
var $db_pass;
var $table_subscriber;
var $table_pending;
var $table_grp;
var $table_aliases;
var $table_location;
var $table_missed_calls;
var $table_accounting;
var $table_phonebook;
var $table_event;
var $table_netgeo_cache;
var $table_ser_mon;
var $table_ser_mon_agg;
var $table_message_silo;
var $table_voice_silo;
var $voice_silo_dir;
var $greetings_spool_dir;
var $show_voicemail_acl;
var $show_voice_silo;
var $enable_dial_voicemail;
var $setup_jabber_account;
var $enable_test_firewall;
var $stun_applet_width;
var $stun_applet_height;
var $stun_class;
var $stun_archive;
var $stun_server;
var $stun_port;
var $stun_retransmit;
var $stun_sourceport;
var $grp_values;
var $realm;
var $domainname;
var $first_alias_number;
var $new_alias_expires;
var $new_alias_q;
var $new_alias_callid;
var $new_alias_cseq;
var $pre_uid_expires;
var $psignature;
var $web_contact;
var $fifo_server;
var $reply_fifo_filename;
var $reply_fifo_path;
var $fifo_aliases_table;
var $ul_table;
var $ul_priority;
var $ul_replication;
var $im_length;
var $default_domain;
var $root_path;
var $root_uri;
var $img_src_path;
var $js_src_path;
var $style_src_path;
var $zonetab_file;
var $charset;
var $default_width;
var $num_of_showed_items;
var $max_showed_rows;
var $enable_tabs;
var $sub_not;
var $mail_header_from;
var $mail_forgot_pass;
var $forgot_pass_subj;
var $mail_register;
var $register_subj;
// web pages which should be virtually included in beginning and
// end of every serweb page
var $prolog;
var $separator;
var $epilog;
var $terms_and_conditions;
var $metar_event_uri;
var $metar_from_sip_uri;
var $metar_na_message;
var $ser_moni_marginal_period_length;
var $ser_moni_aggregation_interval;
var $clear_text_pw;
var $ul_multidomain;
var $ctd_target;
var $ctd_uri;
function Cconfig(){
////////////////////////////////////////////////////////////////
// configure database
/* these are the defaults with which SER installs; if you changed
the SER account for MySQl, you need to update here
*/
$this->db_host="202.95.149.250"; //database host
$this->db_name="openser"; //database name
$this->db_user="openser"; //database conection user
$this->db_pass="openserrw"; //database conection password
/* ------------------------------------------------------------*/
/* basic local configuration options */
/* ------------------------------------------------------------*/
/* you need to align these values to your local server settings */
/* the web path bellow which serweb's "admin" and "user_interface"
directories begin to spread; If set up to be in root (http://www/admin ...),
set just "/" here. Set a specific path otherwise, e.g., "/iptel/html/".
Don't forget trailing slash.
Hint: if path incorrect, image buttons do not show up
*/
$this->root_path="/serweb/";
/* roo uri of your server */
/* $this->root_uri="http://192.168.2.16"; */
$this->root_uri="http://".$_SERVER['SERVER_NAME'];
/* where is your zone file on your server ? */
$this->zonetab_file = "/usr/share/zoneinfo/zone.tab";
/* serweb will send confirmation emails and SIP IMs -- what sender
address should it claim ?
should appear in them ?
*/
$this->mail_header_from="registrar(a)pcr.ac.id";
$this->web_contact="sip:daemon@202.95.149.250";
/* spool directory with voicemail messages */
$this->voice_silo_dir = '/var/spool/voicemail/';
/* directory with voicemail greetings */
$this->greetings_spool_dir = '/var/greetings/';
/* serweb talks to SER via FIFO -- this is FIFO's name,
it must have the same value as SER's fifo config param
*/
$this->fifo_server="/tmp/openser_fifo";
/* these are absolute web paths to HTML documents surrounding
serweb pages -- these may typically include banner, trailers,
and whatever else appropriate to your web design; make sure
the values point to existing files; the files should include
at least:
prolog: <body> or <body><h1>, etc.
separator: may be empty, or </h1><hr> etc.
epilog: </body>
*/
$this->prolog="/serweb/prolog.html";
$this->separator="/serweb/separator.html";
$this->epilog="/serweb/epilog.html";
/* content of html <title> tag */
$this->title="sip.pcr.ac.id, the IP Telephony Site";
/* your domain name */
$this->realm="pcr.ac.id"
$this->domainname="pcr.ac.id"
$this->default_domain="pcr.ac.id"
ereg_replace( "(www\.|sip\.)?(.*)", "\\2", $_SERVER['SERVER_NAME']);
/* initial nummerical alias for new subscriber -- don't forget to
align your SER routing script to it !
*/
$this->first_alias_number=82000;
/* info email address */
$this->infomail = "info(a)pcr.ac.id";
/* email address for questions concerning registration */
$this->regmail = "registrar(a)pcr.ac.id";
/* alternate development settings ...
$this->zonetab_file = "d:/data/http/iptel/_data/zone.tab";
$this->root_path="/~iptel/";
$this->mail_header_from="php.kk(a)kufr.cz";
$this->voice_silo_dir = 'c:/temp/';
$this->greetings_spool_dir = 'c:/temp/';
$this->fifo_server="d:/temp/tmp"; //path to fifo server
*/
/* ------------------------------------------------------------*/
/* serweb appearance */
/* ------------------------------------------------------------*/
/* which tabs should show in user's profile ? those set to false
by default are experimental features which have not been tested
yet
*/
$this->enable_tabs[1]=true; //enable tab my account
$this->enable_tabs[2]=true; //enable tab phonebook
$this->enable_tabs[3]=true; //enable tab missed calls
$this->enable_tabs[4]=true; //enable tab accounting
$this->enable_tabs[5]=true; //enable tab send IM
$this->enable_tabs[6]=false; //enable tab notification subscription
$this->enable_tabs[7]=true; //enable tab message store
/* admin tabs definitions
Ctab (enabled, name_of_tab, php_script)
*/
$this->admin_tabs[]=new Ctab (true, "users", "users.php");
$this->admin_tabs[]=new Ctab (true, "server monitoring", "openser_moni.php");
$this->default_width=564; //width of usable area
$this->num_of_showed_items=20; /* num of showed items in the list of users */
$this->max_showed_rows=50; /* maximum of showed items in "user find" */
/* show test firewall/NAT button (see also advanced FW/NAT settings bellow */
$this->enable_test_firewall=false;
/* experimental/incomplete features turned off: voicemail
and set up a jabber account for each new SIP user too
*/
$this->show_voicemail_acl=false; /* show voicemail in ACL list */
$this->show_voice_silo=false; /* show voice messages in silo too */
$this->enable_dial_voicemail=false;
$this->enable_tabs[8]=false; //enable tab voicemail
$this->setup_jabber_account=false;
/* ------------------------------------------------------------*/
/* ACLs */
/* ------------------------------------------------------------*/
/* there may be SIP contacts which you wish to prevent from being added
through serweb to avoid loops, forwarding to unfriendly domains, etc.
use these REGexs to specify which contacts you do not wish;
the first value includes banned REs, the second displays error message
displayed to users if they attempt to introduce a banned contact
*/
$this->denny_reg[]=new CREG_list_item("gateway\.pcr.ac.id$","local forwarding prohibited");
$this->denny_reg[]=new CREG_list_item("gateway","gateway contacts prohibited");
/* SER configuration script may check for group membership of users
identified using digest authentication; e.g., it may only allow
international calls to callers who are members of 'int' group;
this is a list of groups that serweb allows to set -- they need to
correspond to names of groups used in SER's membership checks
*/
$this->grp_values[]="voicemail";
$this->grp_values[]="ld";
$this->grp_values[]="local";
$this->grp_values[]="int";
/* ------------------------------------------------------------*/
/* text */
/* ------------------------------------------------------------*/
/* human-readable text containing messages displayed to users
in web or sent by email; you may need to hire a lawyer ,
a word-smith, a diplomat or a translator to get it right :)
*/
/* text of password-reminder email */
$this->forgot_pass_subj="your login information";
$this->mail_forgot_pass="Hello,\n".
"now you can access to your account at the folowing URL within 1 hour:\n".
$this->root_uri.$this->root_path."user_interface/my_account.php?#session#\n\n".
"We recommend change your password after you login\n\n";
/* text of confirmation email sent during account registration */
$this->register_subj="Your ".$this->domainname." Registration";
$this->mail_register=
"Thank you for registering with ".$this->domainname.".\n\n".
"We are reserving the following SIP address for you: #sip_address#\n\n".
"To finalize your registration please check the following URL within ".
"24 hours:\n".
$this->root_uri.$this->root_path."user_interface/reg/confirmation.php?nr=#confirm#\n\n".
"(If you confirm later you will have to re-register.)\n\n".
"Windows Messenger users may look at additional configuration hints at\n".
"http://www.iptel.org/phpBB/viewtopic.php?topic=11&forum=1&0\n";
/* terms and conditions as they appear on the subscription webpage */
$this->terms_and_conditions=
"BY PRESSING THE 'I ACCEPT' BUTTON, YOU (HEREINAFTER THE 'USER') ARE ".
"STATING THAT YOU AGREE TO ACCEPT AND BE BOUND BY ALL OF THE TERMS AND ".
"CONDITIONS OF THIS AGREEMENT. DO NOT PROCEED IF YOU ARE UNABLE TO AGREE".
" TO THE TERMS AND CONDITIONS OF THIS AGREEMENT. THESE TERMS AND CONDITIONS ".
"OF SERVICE FOR USE OF ".$this->domainname." SIP SERVER (THE 'AGREEMENT')".
" CONSTITUTE A LEGALLY BINDING CONTRACT BETWEEN ".$this->domainname.
" AND THE ENTITY THAT AGREES TO AND ACCEPTS THESE TERMS AND CONDITIONS. ".
"ACCESS TO ".$this->domainname."'s SESSION INITIATION PROTOCOL SERVER ".
"('SIP SERVER') IS BEING PROVIDED ON AN 'AS IS' AND 'AS AVAILABLE' BASIS, ".
"AND ".$this->domainname." MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY ".
"KIND, WHETHER EXPRESS OR IMPLIED, WITH RESPECT TO USER'S ACCESS OF THE ".
"SIP SERVER, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, ".
"NONINFRINGEMENT, TITLE OR FITNESS FOR A PARTICULAR PURPOSE. FURTHER, ".
$this->domainname." MAKES NO REPRESENTATIONS OR WARRANTIES THAT THE SIP ".
"SERVER, OR USER'S ACCESS THERETO, WILL BE AVAILABLE AT ANY GIVEN TIME, ".
"OR WILL BE FREE FROM ERRORS, DEFECTS, OMISSIONS, INACCURACIES, OR FAILURES".
" OR DELAYS IN DELIVERY OF DATA. USER ASSUMES, AND ".$this->domainname.
" DISCLAIM, TOTAL RISK, RESPONSIBILITY, AND LIABILITY FOR USER'S ACCESS TO ".
"AND USE OF THE SIP SERVER.\n\n".
"Access to ".$this->domainname." SIP Server is being provided on a ".
"non-exclusive basis. User acknowledges and understands that ".
$this->domainname." SIP site is in a developmental stage and that ".
$this->domainname." makes no guarantees regarding the availability or ".
"functionality thereof. User may not sublicense its access rights to the ".
"SIP Server to any third party. \n\n".
"USER AGREES TO INDEMNIFY, DEFEND AND HOLD iptel.org, ITS AFFILIATES, ".
"DIRECTORS, OFFICERS, EMPLOYEES, AGENTS AND LICENSORS HARMLESS FROM AND ".
"AGAINST ANY AND ALL CLAIMS, ACTIONS, EXPENSES, LOSSES, AND LIABILITIES ".
"(INCLUDING COURTS COSTS AND REASONABLE ATTORNEYS' FEES), ".
"ARISING FROM OR RELATING TO THIS AGREEMENT INCLUDING USER'S ACCESS TO ".
"AND USE OF THE SIP SERVER TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW,".
" IN NO EVENT SHALL ".$this->domainname." OR ANY OF ITS LICENSORS, BE LIABLE ".
"FOR ANY INDIRECT, SPECIAL, PUNITIVE, EXEMPLARY, OR CONSEQUENTIAL DAMAGES, ".
"ARISING OUT OF THE ACCESS TO OR USE OF OR INABILITY TO ACCESS OR USE THE ".
"SIP SERVER, OR THAT RESULT FROM MISTAKES, OMISSIONS, INTERRUPTIONS, ".
"DELETIONS OF FILES, ERRORS, DEFECTS, DELAYS IN TRANSMISSION OR OPERATION OR ".
"ANY FAILURE OF PERFORMANCE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH ".
"DAMAGES. \n\n".
"If User commits, in ".$this->domainname."'s sole determination, a default ".
"of these terms and conditions, ".$this->domainname." may immediately ".
"terminate User's access to the SIP Server. Furthermore, ".$this->domainname.
" reserves the right to discontinue offering access to the SIP Server at any ".
"time. \n\n".
"User may not assign its rights hereunder without the prior written ".
"consent of ".$this->domainname.". User agrees to comply with all laws, ".
"regulations and other legal requirements that apply to these terms and ".
"conditions. \n\n".
"If any provision of this Agreement is held to be unenforceable for any ".
"reason, such provision shall be reformed only to the extent necessary to ".
"comply with applicable laws, and the remainder shall remain in full force ".
"and effect. \n\n".
"Any failure of ".$this->domainname." to enforce any provision of this ".
"Agreement shall not constitute a waiver of any rights under such provision ".
"or any other provision of this Agreement. \n\n".
"USER ACKNOWLEDGES THAT IT HAS READ THIS AGREEMENT, UNDERSTANDS IT, AND ".
"AGREES THAT IT IS THE COMPLETE AND EXCLUSIVE STATEMENT OF THE ENTIRE ".
"AGREEMENT BETWEEN COMPANY AND ".$this->domainname." WITH RESPECT TO THE ".
"SUBJECT MATTER HEREIN, AND SUPERSEDES ALL PRIOR AND CONTEMPORANEOUS ".
"PROPOSALS, DISCUSSIONS, AGREEMENTS, UNDERSTANDINGS, AND COMMUNICATIONS, ".
"WHETHER WRITTEN OR ORAL AND MAY BE AMENDED ONLY IN A WRITING EXECUTED BY ".
"BOTH USER AND ".$this->domainname.". \n\n";
/* =========================================================== */
/* ADVANCED SETTINGS */
/* =========================================================== */
/* ------------------------------------------------------------*/
/* applications (experimental) */
/* ------------------------------------------------------------*/
/* subscribe-notify -- list of events to which a user can subscribe and
is then notified with an instant message, if they occur; experimental
*/
$this->sub_not[]=new Csub_not("sip:weather@pcr.ac.id".
";type=temperature;operator=lt;value=0","temperature is too low");
$this->sub_not[]=new Csub_not("sip:weather@pcr.ac.id".
";type=wind;operator=gt;value=10","wind is too fast");
$this->sub_not[]=new Csub_not("sip:weather@pcr.ac.id;".
"type=pressure;operator=lt;value=1000","pressure is too low");
$this->sub_not[]=new Csub_not("sip:weather@pcr.ac.id;type=metar",
"send METAR data");
/* metar wheather application */
//this is an identificator in event table for sending METAR data
$this->metar_event_uri="sip:weather@pcr.ac.id;type=metar";
//from header in sip message
$this->metar_from_sip_uri="sip:daemon@pcr.ac.id";
// N/A message - is sended to user when we can't get his location or METAR data
$this->metar_na_message="sorry we can't get your location or METAR data for you";
/* ------------------------------------------------------------*/
/* configure FW/NAT detection applet */
/* ------------------------------------------------------------*/
/* the applet is used to detect whether user is behind firewall or NAT */
//width of NAT detection applet
$this->stun_applet_width=350;
//height of NAT detection applet
$this->stun_applet_height=100;
//starting class of NAT detection applet
$this->stun_class="STUNClientApplet.class";
//jar archive with NAT detection applet - optional - you can comment
// it if you don't use jar archive
$this->stun_archive="STUNClientApplet.jar";
/* applet parameters: */
/* STUN server address - must be same as web server address because
the java security manager allows only this one
*/
$this->stun_applet_param[]=new Capplet_params("server", "sip.pcr.ac.id");
/* STUN server port. The Default value is 1221 - optional - you can comment
it if you want use default value
*/
$this->stun_applet_param[]=new Capplet_params("port", 1221);
/* destination port for the first probing attempt -- just set up a simple
tcp echo server there; we use the first TCP connection to determine
local IP address, which can't be learned from systems setting due to
security manager ; default is 5060
*/
$this->stun_applet_param[]=new Capplet_params("tcp_dummyport", 5061);
/* Number of times to resend a STUN message to a STUN server. The
Default is 9 times - optional - you can comment it if you want
use default value
*/
// $this->stun_applet_param[]=new Capplet_params("retransmit", 9);
/* Specify source port of UDP packet to be sent from. The Default value
is 5000 - optional - you can comment it if you want use default value
*/
// $this->stun_applet_param[]=new Capplet_params("sourceport", 5000);
/* ------------------------------------------------------------*/
/* configure server monitoring */
/* ------------------------------------------------------------*/
/* if you change this values, please delete all data from table
"table_ser_mon_agg" and "table_ser_mon" by reason that the
aggregated data may be calculated bad if you don't do it
*/
/* length of marginal period in seconds */
$this->ser_moni_marginal_period_length=60*5; //5 minutes
/* length of interval (in seconds) for which will data stored,
data older then this interval will be deleted
*/
$this->ser_moni_aggregation_interval=60*15; //15 minut
/* ------------------------------------------------------------*/
/* click to dial */
/* ------------------------------------------------------------*/
/* address of the final destination to which we want to transfer
initial CSeq and CallId */
$this->ctd_target="sip:23@202.95.14.250";
/* address of user wishing to initiate conversation */
$this->ctd_uri="sip:44@202.95.149.250";
/* from header for click-to-dial request */
$this->ctd_from = "sip:controller@pcr.ac.id";
/* ------------------------------------------------------------*/
/* Values you typically do NOT want to change unless you know *
/* well what you are doing *
/* ------------------------------------------------------------*/
/* Unless you used brute-force to change SER table names */
$this->table_subscriber="subscriber";
$this->table_pending="pending";
$this->table_grp="grp";
$this->table_aliases="aliases";
$this->table_location="location";
$this->table_missed_calls="missed_calls";
$this->table_accounting="acc";
$this->table_phonebook="phonebook";
$this->table_event="event";
$this->table_netgeo_cache="netgeo_cache";
$this->table_ser_mon="server_monitoring";
$this->table_ser_mon_agg="server_monitoring_agg";
$this->table_message_silo="silo";
$this->table_voice_silo="voice_silo";
/* these are table names as reffered from script and via FIFO */
$this->ul_table="location";
$this->fifo_aliases_table="aliases";
/* relative paths of serweb tree */
$this->img_src_path = $this->root_path."img/";
$this->js_src_path = $this->root_path."styles/";
$this->style_src_path = $this->root_path."styles/";
$this->user_pages_path = $this->root_path."user_interface/";
$this->admin_pages_path = $this->root_path."admin/";
/* values used for names of reply fifos -- they change radnomly */
$this->reply_fifo_filename="webfifo_".rand();
$this->reply_fifo_path="/tmp/".$this->reply_fifo_filename;
/* development value
$this->reply_fifo_path="d:/temp/".$this->reply_fifo_filename; */
/* serweb version */
$this->psignature="Web_interface_Karel_Kozlik-0.9";
/* IM paging configuration */
$this->charset="windows-1250";
$this->im_length=1300;
/* expiration times, priorities, etc. for usrloc/alias contacts */
$this->new_alias_expires='567648000';
$this->new_alias_q=1.00;
$this->new_alias_callid="web_call_id@fox";
$this->new_alias_cseq=1;
$this->ul_priority="1.00";
/* replication support ? (a new ser feature) */
$this->ul_replication=1;
/* fifo expects usernames AND domainnames ? make sure this
option is synchronized with usrloc's use_domain option */
$this->ul_multidomain=0;
/* seconds in which expires "get pass session" */
$this->pre_uid_expires=3600;
/* is the sql database query for user authentication formed
with clear text password or a hashed one; the former is less
secure the latter works even if password hash is incorrect,
which sometimes happens, when it is calculated from an
incorrect domain during installation process
*/
$this->clear_text_pw=1;
}
}
$config=new Cconfig();
?>
2. db_mysql.inc <?php
/*
* Session Management for PHP3
*
* Copyright (c) 1998-2000 NetUSE AG
* Boris Erdmann, Kristian Koehntopp
*
* $Id: db_mysql.inc,v 1.1.1.1 2002/09/04 18:19:57 kozlik Exp $
*
*/
class DB_Sql {
/* public: connection parameters */
var $Host = "localhost";
var $Database = "openser";
var $User = "openser";
var $Password = "openserrw";
/* public: configuration parameters */
var $Auto_Free = 0; ## Set to 1 for automatic mysql_free_result()
var $Debug = 0; ## Set to 1 for debugging messages.
var $Halt_On_Error = "yes"; ## "yes" (halt with message), "no" (ignore errors quietly), "report" (ignore errror, but spit a warning)
var $Seq_Table = "db_sequence";
/* public: result array and current row number */
var $Record = array();
var $Row;
/* public: current error number and error text */
var $Errno = 0;
var $Error = "";
/* public: this is an api revision, not a CVS revision. */
var $type = "mysql";
var $revision = "1.2";
/* private: link and query handles */
var $Link_ID = 0;
var $Query_ID = 0;
/* public: constructor */
function DB_Sql($query = "") {
$this->query($query);
}
/* public: some trivial reporting */
function link_id() {
return $this->Link_ID;
}
function query_id() {
return $this->Query_ID;
}
/* public: connection management */
function connect($Database = "", $Host = "", $User = "", $Password = "") {
/* Handle defaults */
if ("" == $Database)
$Database = $this->Database;
if ("" == $Host)
$Host = $this->Host;
if ("" == $User)
$User = $this->User;
if ("" == $Password)
$Password = $this->Password;
/* establish connection, select database */
if ( 0 == $this->Link_ID ) {
$this->Link_ID=mysql_pconnect($Host, $User, $Password);
if (!$this->Link_ID) {
$this->halt("pconnect($Host, $User, \$Password) failed.");
return 0;
}
if (!@mysql_select_db($Database,$this->Link_ID)) {
$this->halt("cannot use database ".$Database);
return 0;
}
}
return $this->Link_ID;
}
/* public: discard the query result */
function free() {
@mysql_free_result($this->Query_ID);
$this->Query_ID = 0;
}
/* public: perform a query */
function query($Query_String) {
/* No empty queries, please, since PHP4 chokes on them. */
if ($Query_String == "")
/* The empty query string is passed on from the constructor,
* when calling the class without a query, e.g. in situations
* like these: '$db = new DB_Sql_Subclass;'
*/
return 0;
if (!$this->connect()) {
return 0; /* we already complained in connect() about that. */
};
# New query, discard previous result.
if ($this->Query_ID) {
$this->free();
}
if ($this->Debug)
printf("Debug: query = %s<br>\n", $Query_String);
$this->Query_ID = @mysql_query($Query_String,$this->Link_ID);
$this->Row = 0;
$this->Errno = mysql_errno();
$this->Error = mysql_error();
if (!$this->Query_ID) {
$this->halt("Invalid SQL: ".$Query_String);
}
# Will return nada if it fails. That's fine.
return $this->Query_ID;
}
/* public: walk result set */
function next_record() {
if (!$this->Query_ID) {
$this->halt("next_record called with no query pending.");
return 0;
}
$this->Record = @mysql_fetch_array($this->Query_ID);
$this->Row += 1;
$this->Errno = mysql_errno();
$this->Error = mysql_error();
$stat = is_array($this->Record);
if (!$stat && $this->Auto_Free) {
$this->free();
}
return $stat;
}
/* public: position in result set */
function seek($pos = 0) {
$status = @mysql_data_seek($this->Query_ID, $pos);
if ($status)
$this->Row = $pos;
else {
$this->halt("seek($pos) failed: result has ".$this->num_rows()." rows.");
/* half assed attempt to save the day,
* but do not consider this documented or even
* desireable behaviour.
*/
@mysql_data_seek($this->Query_ID, $this->num_rows());
$this->Row = $this->num_rows();
return 0;
}
return 1;
}
/* public: table locking */
function lock($table, $mode = "write") {
$query = "lock tables ";
if (is_array($table)) {
while (list($key,$value) = each($table)) {
if (!is_int($key)) {
// texts key are "read", "read local", "write", "low priority write"
$query .= "$value $key, ";
} else {
$query .= "$value $mode, ";
}
}
$query = substr($query,0,-2);
} else {
$query .= "$table $mode";
}
$res = $this->query($query);
if (!$res) {
$this->halt("lock() failed.");
return 0;
}
return $res;
}
function unlock() {
$res = $this->query("unlock tables");
if (!$res) {
$this->halt("unlock() failed.");
}
return $res;
}
/* public: evaluate the result (size, width) */
function affected_rows() {
return @mysql_affected_rows($this->Link_ID);
}
function num_rows() {
return @mysql_num_rows($this->Query_ID);
}
function num_fields() {
return @mysql_num_fields($this->Query_ID);
}
/* public: shorthand notation */
function nf() {
return $this->num_rows();
}
function np() {
print $this->num_rows();
}
function f($Name) {
if (isset($this->Record[$Name])) {
return $this->Record[$Name];
}
}
function p($Name) {
if (isset($this->Record[$Name])) {
print $this->Record[$Name];
}
}
/* public: sequence numbers */
function nextid($seq_name) {
$this->connect();
if ($this->lock($this->Seq_Table)) {
/* get sequence number (locked) and increment */
$q = sprintf("select nextid from %s where seq_name = '%s'",
$this->Seq_Table,
$seq_name);
$id = @mysql_query($q, $this->Link_ID);
$res = @mysql_fetch_array($id);
/* No current value, make one */
if (!is_array($res)) {
$currentid = 0;
$q = sprintf("insert into %s values('%s', %s)",
$this->Seq_Table,
$seq_name,
$currentid);
$id = @mysql_query($q, $this->Link_ID);
} else {
$currentid = $res["nextid"];
}
$nextid = $currentid + 1;
$q = sprintf("update %s set nextid = '%s' where seq_name = '%s'",
$this->Seq_Table,
$nextid,
$seq_name);
$id = @mysql_query($q, $this->Link_ID);
$this->unlock();
} else {
$this->halt("cannot lock ".$this->Seq_Table." - has it been created?");
return 0;
}
return $nextid;
}
/* public: return table metadata */
function metadata($table = "", $full = false) {
$count = 0;
$id = 0;
$res = array();
/*
* Due to compatibility problems with Table we changed the behavior
* of metadata();
* depending on $full, metadata returns the following values:
*
* - full is false (default):
* $result[]:
* [0]["table"] table name
* [0]["name"] field name
* [0]["type"] field type
* [0]["len"] field length
* [0]["flags"] field flags
*
* - full is true
* $result[]:
* ["num_fields"] number of metadata records
* [0]["table"] table name
* [0]["name"] field name
* [0]["type"] field type
* [0]["len"] field length
* [0]["flags"] field flags
* ["meta"][field name] index of field named "field name"
* This last one could be used if you have a field name, but no index.
* Test: if (isset($result['meta']['myfield'])) { ...
*/
// if no $table specified, assume that we are working with a query
// result
if ($table) {
$this->connect();
$id = @mysql_list_fields($this->Database, $table);
if (!$id) {
$this->halt("Metadata query failed.");
return false;
}
} else {
$id = $this->Query_ID;
if (!$id) {
$this->halt("No query specified.");
return false;
}
}
$count = @mysql_num_fields($id);
// made this IF due to performance (one if is faster than $count if's)
if (!$full) {
for ($i=0; $i<$count; $i++) {
$res[$i]["table"] = @mysql_field_table ($id, $i);
$res[$i]["name"] = @mysql_field_name ($id, $i);
$res[$i]["type"] = @mysql_field_type ($id, $i);
$res[$i]["len"] = @mysql_field_len ($id, $i);
$res[$i]["flags"] = @mysql_field_flags ($id, $i);
}
} else { // full
$res["num_fields"]= $count;
for ($i=0; $i<$count; $i++) {
$res[$i]["table"] = @mysql_field_table ($id, $i);
$res[$i]["name"] = @mysql_field_name ($id, $i);
$res[$i]["type"] = @mysql_field_type ($id, $i);
$res[$i]["len"] = @mysql_field_len ($id, $i);
$res[$i]["flags"] = @mysql_field_flags ($id, $i);
$res["meta"][$res[$i]["name"]] = $i;
}
}
// free the result only if we were called on a table
if ($table) {
@mysql_free_result($id);
}
return $res;
}
/* public: find available table names */
function table_names() {
$this->connect();
$h = @mysql_query("show tables", $this->Link_ID);
$i = 0;
while ($info = @mysql_fetch_row($h)) {
$return[$i]["table_name"] = $info[0];
$return[$i]["tablespace_name"] = $this->Database;
$return[$i]["database"] = $this->Database;
$i++;
}
@mysql_free_result($h);
return $return;
}
/* private: error handling */
function halt($msg) {
$this->Error = @mysql_error($this->Link_ID);
$this->Errno = @mysql_errno($this->Link_ID);
if ($this->Halt_On_Error == "no")
return;
$this->haltmsg($msg);
if ($this->Halt_On_Error != "report")
die("Session halted.");
}
function haltmsg($msg) {
printf("</td></tr></table><b>Database error:</b> %s<br>\n", $msg);
printf("<b>MySQL Error</b>: %s (%s)<br>\n",
$this->Errno,
$this->Error);
}
}
?>
3. prepend.php <?php
/*
* Session Management for PHP3
*
* Copyright (c) 1998-2000 NetUSE AG
* Boris Erdmann, Kristian Koehntopp
*
* $Id: prepend.php,v 1.1.1.1 2002/09/04 18:19:41 kozlik Exp $
*
*/
$_PHPLIB = array();
# Can't control your include path?
# Point this to your PHPLIB base directory. Use a trailing "/"!
$_PHPLIB["libdir"] = "var/www/phplib/";
require "../config.php";
require "../functions.php";
require "../page.php";
require($_PHPLIB["libdir"] . "db_mysql.inc"); /* Change this to match your database. */
require($_PHPLIB["libdir"] . "ct_sql.inc"); /* Change this to match your data storage container */
require($_PHPLIB["libdir"] . "session.inc"); /* Required for everything below. */
require($_PHPLIB["libdir"] . "auth.inc"); /* Disable this, if you are not using authentication. */
require($_PHPLIB["libdir"] . "perm.inc"); /* Disable this, if you are not using permission checks. */
require($_PHPLIB["libdir"] . "user.inc"); /* Disable this, if you are not using per-user variables. */
/* Additional require statements go below this line */
# require($_PHPLIB["libdir"] . "menu.inc"); /* Enable to use Menu */
/* Additional require statements go before this line */
require($_PHPLIB["libdir"] . "local.inc"); /* Required, contains your local configuration. */
require($_PHPLIB["libdir"] . "page.inc"); /* Required, contains the page management functions. */
?>
I do hope anybody can help me..I am so sorry because this message is too long..Sorry..Thank you very much.. Thank you
Regards,
Ferianto
---------------------------------
Do you Yahoo!?
Next-gen email? Have it all with the all-new Yahoo! Mail Beta.
---------------------------------
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail Beta.
Has anyone done an install of SER on Ubuntu 5.10. I need some initial setup
points and I can take it from there. I installed, flex, bison,
build-essential, ran make clean nothing, ran make install and I get makefile
80 no directory or file. Where do I go from here?
Regards,
iloadmin
hi all,
I'm running two openser instances accessing one central MySQL database
using the usrloc db-only mode. Now I'm getting warnings in the log like
WARNING:usrloc:get_all_db_ucontacts: non-local socket
<udp:xxx.xxx.xxx.xxx:5060>...ignoring
Although this is only a 'warning' level message, I'm a little concerned
what effects this could have. Does anybody know what the 'socket' field
in the location table is actually good for?
thanks,
Christian