Hello everybody,
currently the openser.org web site is hosted by Voice-System server. It
has to be moved on a separate hosting server, so that developers and
contributors can have full access to it.
Are you aware of a good hosting service? It has to be a Linux/Unix
server, allow ssh access, provide a good bandwidth and the price to be
as much as possible.
I have opened a topic in openser forum, too, -- you can use what you
like more to reply.
Daniel
Hello all,
I'm hoping someone will offer an opinion as to how I should approach the
following and if I am thinking along the correct lines:
I am creating a web application where a user can dictate which device
they want a call delivered to. So if I have a user with sip url
"sip:2000@server" and they have registered with the SER server from a
pda, pc and laptop, SER will currently parallel fork a call to all these
destinations causing all softphones to ring (correct?). However I want a
user to choose from a drop down menu in their browser (which I'm
developing with servlets and JSP's) their preferred phone e.g. pda and
then SER will fork the call to the softphone on the pda first.
So basically my current plan is to retrieve the information from the
user about their preferred phone (which will be associated with a
particular IP address) and then dynamically modify the ser.cfg for a
sequential forking rule for that user. I would appreciate opinions as to
whether I am approaching this correctly or if there's an alternative
method for such functionality (perhaps such as forking the call to the
device which last registered or something)?
Many Thanks,
Aisling.
-------------------Legal Disclaimer---------------------------------------
The above electronic mail transmission is confidential and intended only for the person to whom it is addressed. Its contents may be protected by legal and/or professional privilege. Should it be received by you in error please contact the sender at the above quoted email address. Any unauthorised form of reproduction of this message is strictly prohibited. The Institute does not guarantee the security of any information electronically transmitted and is not liable if the information contained in this communication is not a proper and complete record of the message as transmitted by the sender nor for any delay in its receipt.
Undocummented code = non existing code (for almomst everyone except the developer and few guys reading the devel list, updating the working copy of the CVS, and checking the new code).....I know it is unpleasant, but two lines with an overview is not asking too much.....isn't it?
my contribution,
Samuel.
Unclassified.
>>> Jan Janak <jan(a)iptel.org> 06/21/05 11:58AM >>>
On 21-06-2005 09:20, Juha Heinanen wrote:
> Greger V. Teigre writes:
>
> > Let's try to make 0.9.x documentation as complete as possible now
> > leading up to the release!!
>
> nathelper README doesn't describe all nat_uac_test modes. tm module
> README seems to lack description of several exported functions.
>
> these both are example of bad iptel.org policy. no new features should
> be allowed to be added/changed in the code unless also the documentation
> is updated.
Are you suggesting that commits should be rejected if they do not
update documentation as well ? What is better, having undocumented
code or having no code ?
Jan.
_______________________________________________
Serdev mailing list
serdev(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serdev
I was taking a more detailled look at the code and it seems that the Contact header will not be added into the reply if you use save_noreply+sl_send_reply because the Contact buffer is added inside the registrar module....but I recall that it worked. I suggest you to give it a try and see the answer with ethereal|ngrep|* maybe it is taken after when constructing the answer from the sipmsg.
Anyhow it would be easy to add a save_extended_expires command that makes what you need but, as I said, people can start using these SIP patches to build even more non-compliant proxies with SER....
Samuel.
Unclassified.
>>> "Greger V. Teigre" <greger(a)teigre.com> 06/21/05 07:19AM >>>
You're right of course :-)
Samuel's approach is more correct, but I'm not sure you will be able to generate the correct reply using save_noreply and sl_reply (with Contact) ?! Does save_noreply generate the reply?
g-)
---- Original Message ----
From: Java Rockx
To: Greger V. Teigre
Cc: serusers
Sent: Monday, June 20, 2005 02:21 PM
Subject: Re: [Serusers] Is there an AVP to alter "expires=" in
REGISTERmessages?
> Greger,
>
> That would be possible, but the way SER generates the 200OK reply, it
> would contain the altered "expires=" value. By doing so, the ATA
> would take that new value and use it, so if the ATA sent the REGISTER
> with an expires=300 and SER replied with a 200OK and a contact header
> containing expires=360, the ATA would not send another REGISTER for
> 360 seconds.
>
> I was fooling around with sip_msg.c and reply.c were I padded the
> expires with 60 seconds before saving to usrloc and then removing the
> pad before sending the reply and it works, but I would just feel
> better by not altering the source code.
>
> I guess I'd just feel more comfortable if SER had some sort of AVP or
> modparam for the registrar module that did this automagically.
>
> Regards,
> Paul
>
>
> On 6/20/05, Greger V. Teigre <greger(a)teigre.com> wrote:
> It was supposed to be short, but maybe too short. I meant doing the
> subst on the REGISTER message before save.
> g-)
> ---- Original Message ----
> From: Greger V. Teigre
> To: Java Rockx ; serusers
> Sent: Monday, June 20, 2005 09:01 AM
> Subject: Re: [Serusers] Is there an AVP to alter "expires=" in
> REGISTERmessages?
>
>> Hi Paul,
>> Would it be possible to "do it upside down" ? ;-) I.e. do a
>> subst("/^Expires:(.*)[0-9]$/ Expires: yourvalue+60/gi");
>> g-)
>>
>> ---- Original Message ----
>> From: Java Rockx
>> To: serusers
>> Sent: Sunday, June 19, 2005 04:28 PM
>> Subject: [Serusers] Is there an AVP to alter "expires=" in REGISTER
>> messages?
>>
>>> Hi All.
>>>
>>> We've got some ATAs that don't quite re-REGISTER in a timely fashion
>>> and therefore SER expires the usrloc record a few seconds before the
>>> ATA sends another REGISTER message.
>>>
>>> Is there an AVP or something to add, for example, 60 seconds to the
>>> "expires=" value in the REGISTER message prior to calling save()? By
>>> doing so, these "broken" ATAs would re-REGISTER before SER removes
>>> the usrloc record from cache.
>>>
>>> Regards,
>>> Paul
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Serusers mailing list
>>> serusers(a)lists.iptel.org
>>> http://lists.iptel.org/mailman/listinfo/serusers
>>
>>
>>
>> _______________________________________________
>> Serusers mailing list
>> serusers(a)lists.iptel.org
>> http://lists.iptel.org/mailman/listinfo/serusers
I think that a fork is bad for everybody. Whatever way you put it, it
will still involve extra overhead at least for each code merge.
So this mail is an attempt to come to a compromise that would be
acceptable for everybody.
My first proposal would be to have another branch on ser cvs (berlios).
Something like openser_0.x.y (where the version number should reflect
somehow that it's newer than 0.9 but not unstable).
Bogdan and Daniel would mantain this branch and they would be able to
release from it as often as they want. It would be some kind of stable
on steroids :-)
This would have the main advantage that code merges/diffs/fixes
propagation would be much easier and much faster. Administrating all the
stuff will be also easier (like common bug tracking system a.s.o).
It would be also easier for users, it will be much more easier to keep
track of the changes and to choose an appropiate version.
There must be however some rules. Something like: backporting/forwadporting
from unstable/stable should be ok, the same for minor patches (e.g. xlog
colors), but not major code changes, not present in unstable and without
the code maintainer approval (to maintain future compatibility).
Adding new stuff (new modules) should also be ok, but it would be
preferable that these module come from either unstable or experimental.
The mailing list for development should remain serdev. For users it
could be a different one (if the changes or the mail traffic gets too big).
As far as integrating new contributions faster in unstable, I agree that
this is a problem, but I think we can sort it out. The experimental
repository is a beginning and if there are better ideeas on how to speed
things up while maintaing sanity, please speak. Maybe some kind of
reviewed patches (e.g: someone sends a patch that adds a new feature in
core, Bogdan reviews it decides it's ok and blesses it => I will
integrate much faster something blessed by other ser developer).
If you don't agree with my proposal, please say what you don't like and
what you would like changed so that it would be acceptable for you.
I'm sure that we can reach a compromise and hopefully improve ser
development pace in the process.
Andrei
I am new to using SER.I installed ser-0.8.14_src.tar.gz on
Linux-redhat-2.4.18-14 with
mysql-standard-5.0.6-beta-linux-i686.tar.gz.Mysql can run successfully.The
following is what
I have done:(the main directory:/usr/local/src/ser-0.8.14)
step 1:make all
step 2:ser_mysql.sh create
The following are the commands and the error messages:
[root@redhat scripts]# ser_mysql.sh create
MySql password for root:
Domain (realm) for the default user 'admin': blrc.com
./ser_mysql.sh: line 1: gen_ha1: command not found
HA1 calculation failed
what's the matter?What should I do the next?Could you help me?
Here are the 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 # debug level (cmd line: -dddddddddd)
#fork=yes
#log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
debug=7
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"
# ------------------ 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"
# 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"
# ----------------- 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)
# ------------------------- 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;
};
# 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
record_route();
# loose-route processing
if (loose_route()) {
t_relay();
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) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("iptel.org", "subscriber")) {
www_challenge("iptel.org", "0");
break;
};
save("location");
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
sl_reply_error();
};
}
thx!
_________________________________________________________________
享用世界上最大的电子邮件系统― MSN Hotmail。 http://www.hotmail.com
Hi All.
I just need a sanity check regarding avp_pushto() for serial forking.
Someone please correct me if I'm wrong here.
When processing an INVITE message which results in a 486 Busy status my
failure_route[] gets invoked.
In the failure route I use avp_pushto() to load the next leg of the call in
to the $ruri and then call append_branch() and lookup(location) prior to
t_relay()ing the message.
Using ngrep I do see the R-URI being changed to the value used in the
avp_pushto() call, but the IP address that the INVITE is then sent to is the
same as the IP address of the SIP router, which I cannot understand because
I do call lookup("location") before t_relay()
In otherwords, if my sip router,
sip.mycompany.com<http://sip.mycompany.com>has an IP of
71.72.73.74 <http://71.72.73.74> and I use avp_pushto() to set the R-URI to
1001_at_sip.mycompany.com, lookup(location) does return TRUE, but ngrep
still shows the INVITE leaving the SIP router and going to
71.72.73.74<http://71.72.73.74>(ie, itself) rather than the IP address
in usrloc.
Is there anything obvious that I'm not doing that would cause
lookup(location) to return TRUE, but not change the R-URI accordingly?
Regards,
Paul
is there anyway to stop ser from loading users from db during startup?
Jack Wei
____________________________________________________
Yahoo! Sports
Rekindle the Rivalries. Sign up for Fantasy Football
http://football.fantasysports.yahoo.com
Hi
I have managed to get voice calls sniffed, by using a external sniffer.
Does anyone know how I could bind a username/caller/caller tag to each
wav file. I am not sure this is possible because the voip stream doesnt
really have this info, but since my users are making calls by sending
invites etc to ser, could I use ser to get the ID's and then call the
sniffer to tag the names....or has anyone come across a really good voip
sniffer
Iqbal
Hi All.
We've got some ATAs that don't quite re-REGISTER in a timely fashion and
therefore SER expires the usrloc record a few seconds before the ATA sends
another REGISTER message.
Is there an AVP or something to add, for example, 60 seconds to the
"expires=" value in the REGISTER message prior to calling save()? By doing
so, these "broken" ATAs would re-REGISTER before SER removes the usrloc
record from cache.
Regards,
Paul