Hi guys,
I'd like to propose another possibility for a highly-available and
scalable system design based on SER:
The problems I've encountered for scalable systems are:
- Distribution of the user location and alias location among the nodes
(user location is based on registrations, alias location comes from
web interfaces and is used for call forwarding).
- Reloading up to date location tables after breakdown and recovery of a
node
So I'm just thinking loud about the following provisioning system:
- Write a client which fulfills the this demands:
- Receive one or more locations from SER via a SER module or from a
web application and distribute them to other
known clients. Take care of retransmissions if a client isn't
reachable or reports a temporary failure.
- Receive one or more locations from other clients and write
them into the SER FIFO. If writing into the FIFO fails, try to
write directly into the database (location-table, alias-table etc.).
Report a temporary failure if this also fails.
Maybe a centralized server should be used which receives the locations
from the clients and distributes them to other clients, so that the
nodes just know about the server and nothing about other nodes. This
would make integration of new nodes easy.
On the other hand, it's another single point of failure, so a
decentralized solution should be considered. But that would mean that
you've to inform every node about the existence of a new node.
The protocol used between the nodes should be simple and fast. So I
think SOAP drops out here. Maybe XMLRPC or ICE
(http://www.zeroc.com/ice.html) could be used.
One might think now why not just use replication on SIP layer, but
t_replicate only supports one peer and you've no possibility to get
locations on a node while it's down. Replication of other location
tables like the alias-table is also not possible.
I'd be willing to release these parts as GPL for creating an open
framework for carrier-grade SER integration, so any feedback,
improvements or flames are highly welcome.
Cheers,
Andy
I am relatively new to SER. My SIP service provider requires me to
present the ANI in the "From" field in my INVITE message header in E.164
format. I am currently sending this information as follows:
From: "2125551212" <sip:2125551212@xxx.xxx.xxx.xxx>
They want it in E.164 format as follows:
From: "+12125551212" <sip:+12125551212@xxx.xxx.xxx.xxx>
I see function only to modify the SIP URI but not the other header or
SDP fields.
Could someone help me with a code snippet that I can use in ser.cfg to
do this conversion?
Regards,
SCM
Does anyone know if there is a way to authenticate SER to MS Active
Directory? I'd like to use an existing user database instead of
having to manage users myself, and most of our users are in Active
Directory.
Has anyone tried this?
What are most SER users using for authentication? Is anyone here
tying into any kind of existing organization user database?
We are using SER with the PostgreSQL module, so that SER and our
Asterisk PSTN gateway and voice mail system can use the same back-end
database for user records. (Anyone who's interested in how we did this,
let me know -- it's still a little shaky, but it pretty much works.)
Recently we have encountered a problem: it seems that if any database
error occurs, SER hangs or crashes. We have so far been able to mostly
work around these conditions by being Really Careful with the database,
but it is a little unsettling.
The database schema we're working from is practically identical to the
MySQL schema that ships with SER. Notably for this problem the lengths
of all CHARACTER VARYING fields are the same. The User-Agent field is
CHARACTER VARYING(50), for instance.
So ... today boss got a copy of Xten's "eyeBeam" software, set it up
to register to our SER ... and SER promptly locked up. I looked in the
PostgreSQL database log and found this:
Feb 10 13:39:32 mabell postgres[13058]: [267] ERROR: value too long for
type character varying(50)
Whoops. SER tried to insert eyeBeam's User-Agent data, PostgreSQL
returned a data integrity error, and SER went bye-bye.
So I did a little ALTER TABLE and adjusted the field to length 128 ...
then put this in ser.cfg:
# Disallow long user-agent
if (search("^User-Agent: .{100,}") ) {
log(1, "LOG: User agent too long\n");
sl_send_reply("479", "User agent too long!");
break;
};
But this is obviously a kludge ... and doesn't fix the problem of one of
the *other* fields being over-long.
Anyone have any thoughts on this? Robustness patches for the PostgreSQL
module or usrloc? Better ser.cfg workarounds to protect the world from
malformed or over-long SIP header fields? Should I just change all the
database fields to TEXT instead of CHARACTER VARYING(whatever) ?
--
Karl A. Krueger <kkrueger(a)whoi.edu>
Network Security -- Linux/Unix Systems Support -- Etc.
Woods Hole Oceanographic Institution
Hi,
I´ve configured freeradius and SER according to the Radius HOW TO
document, Accounting works very well but now I am doing some tests
trying to do user authentication however all the authentication
requests coming to the freeradius fails and X-lite sipphone is
receiving an Unauthorized message from SER, please some advice,
thanks
rafael
PS: config files...
in /usr/local/etc/raddb/users :
---------
test Auth-Type := Digest, User-Password == "test"
Reply-Message = "Hello, test with digest"
6609876 Auth-Type := Digest
User-Password := "9876",
Digest-Response = "lalalalala",
Reply-Message = "Hello, ibm1"
6604321 Auth-Type := Digest
User-Password := "4321",
Digest-Response = "lalalalala",
Reply-Message = "Hello, ibm2"
---------
Some relevant data in ser.cfg:
...
modparam("group_radius", "use_domain", 0)
....
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!radius_www_authorize("")) {
www_challenge("", "1");
break;
};
if (!save("location")) {
sl_reply_error();
};
break;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
break;
};
# does the user wish redirection on no availability?
(i.e., is he
# in the voicemail group?) -- determine it now and store it in
# flag 4, before we rewrite the flag using UsrLoc
if (radius_is_user_in("Request-URI", "voicemail")) {
log(1, "requested user is in voicemail group");
setflag(4);
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
# sl_send_reply("404", "Not Found");
log(1,"unable to locate user");
route(4);
break;
};
}; # End of "if(uri==myself)"
....
------------------RADIUSD -X Output ---------------------------:
rad_recv: Access-Request packet from host 127.0.0.1:33187, id=79, length=311
User-Name = "6604321(a)10.0.1.22"
Digest-Attributes = 0x0a0936363034333231
Digest-Attributes = 0x010b31302e302e312e3232
Digest-Attributes =
0x022a34323366333163373062336631643261643330383833633238303434316632663133643136613830
Digest-Attributes = 0x040f7369703a31302e302e312e3232
Digest-Attributes = 0x030a5245474953544552
Digest-Attributes = 0x050661757468
Digest-Attributes = 0x090a3030303030303162
Digest-Attributes =
0x08224433343132424232394131453131443939334232303035304241373836433642
Digest-Response = "a6a7812ac0331324f977453c228da2ed"
Service-Type = IAPP-Register
Sip-URI-User = "6604321"
Cisco-AVPair = "call-id=D3412ADB9A1E11D993B20050BA786C6B(a)10.0.1.22"
NAS-IP-Address = 127.0.0.1
NAS-Port = 5060
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 8
modcall[authorize]: module "preprocess" returns ok for request 8
modcall[authorize]: module "chap" returns noop for request 8
modcall[authorize]: module "mschap" returns noop for request 8
rlm_digest: Converting Digest-Attributes to something sane...
Digest-User-Name = "6604321"
Digest-Realm = "10.0.1.22"
Digest-Nonce = "423f31c70b3f1d2ad30883c280441f2f13d16a80"
Digest-URI = "sip:10.0.1.22"
Digest-Method = "REGISTER"
Digest-QOP = "auth"
Digest-Nonce-Count = "0000001b"
Digest-CNonce = "D3412BB29A1E11D993B20050BA786C6B"
rlm_digest: Adding Auth-Type = DIGEST
modcall[authorize]: module "digest" returns ok for request 8
rlm_realm: Looking up realm "10.0.1.22" for User-Name = "6604321(a)10.0.1.22"
rlm_realm: No such realm "10.0.1.22"
modcall[authorize]: module "suffix" returns noop for request 8
rlm_eap: No EAP-Message, not doing EAP
modcall[authorize]: module "eap" returns noop for request 8
users: Matched DEFAULT at 152
modcall[authorize]: module "files" returns ok for request 8
modcall: group authorize returns ok for request 8
rad_check_password: Found Auth-Type DIGEST
auth: type "digest"
Processing the authenticate section of radiusd.conf
modcall: entering group authenticate for request 8
rlm_digest: Configuration item "User-Password" is required for authentication.
modcall[authenticate]: module "digest" returns invalid for request 8
modcall: group authenticate returns invalid for request 8
auth: Failed to validate the user.
Delaying request 8 for 1 seconds
Finished request 8
Going to the next request
--- Walking the entire request list ---
Waking up in 1 seconds...
rad_recv: Access-Request packet from host 127.0.0.1:33188, id=80, length=311
User-Name = "6609876(a)10.0.1.22"
Digest-Attributes = 0x0a0936363039383736
Digest-Attributes = 0x010b31302e302e312e3232
Digest-Attributes =
0x022a34323366333163373062336631643261643330383833633238303434316632663133643136613830
Digest-Attributes = 0x040f7369703a31302e302e312e3232
Digest-Attributes = 0x030a5245474953544552
Digest-Attributes = 0x050661757468
Digest-Attributes = 0x090a3030303030303163
Digest-Attributes =
0x08224433343132424235394131453131443939334232303035304241373836433642
Digest-Response = "50fa695654b20e2eec54a1003fe15d9f"
Service-Type = IAPP-Register
Sip-URI-User = "6609876"
Cisco-AVPair = "call-id=D3412ADE9A1E11D993B20050BA786C6B(a)10.0.1.22"
NAS-IP-Address = 127.0.0.1
NAS-Port = 5060
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 9
modcall[authorize]: module "preprocess" returns ok for request 9
modcall[authorize]: module "chap" returns noop for request 9
modcall[authorize]: module "mschap" returns noop for request 9
rlm_digest: Converting Digest-Attributes to something sane...
Digest-User-Name = "6609876"
Digest-Realm = "10.0.1.22"
Digest-Nonce = "423f31c70b3f1d2ad30883c280441f2f13d16a80"
Digest-URI = "sip:10.0.1.22"
Digest-Method = "REGISTER"
Digest-QOP = "auth"
Digest-Nonce-Count = "0000001c"
Digest-CNonce = "D3412BB59A1E11D993B20050BA786C6B"
rlm_digest: Adding Auth-Type = DIGEST
modcall[authorize]: module "digest" returns ok for request 9
rlm_realm: Looking up realm "10.0.1.22" for User-Name = "6609876(a)10.0.1.22"
rlm_realm: No such realm "10.0.1.22"
modcall[authorize]: module "suffix" returns noop for request 9
rlm_eap: No EAP-Message, not doing EAP
modcall[authorize]: module "eap" returns noop for request 9
users: Matched DEFAULT at 152
modcall[authorize]: module "files" returns ok for request 9
modcall: group authorize returns ok for request 9
rad_check_password: Found Auth-Type DIGEST
auth: type "digest"
Processing the authenticate section of radiusd.conf
modcall: entering group authenticate for request 9
rlm_digest: Configuration item "User-Password" is required for authentication.
modcall[authenticate]: module "digest" returns invalid for request 9
modcall: group authenticate returns invalid for request 9
auth: Failed to validate the user.
Delaying request 9 for 1 seconds
Finished request 9
Going to the next request
--- Walking the entire request list ---
Waking up in 1 seconds...
--- Walking the entire request list ---
Sending Access-Reject of id 79 to 127.0.0.1:33187
Waking up in 1 seconds...
rad_recv: Access-Request packet from host 127.0.0.1:33189, id=81, length=311
User-Name = "6609876(a)10.0.1.22"
Digest-Attributes = 0x0a0936363039383736
Digest-Attributes = 0x010b31302e302e312e3232
Digest-Attributes =
0x022a34323366333163373062336631643261643330383833633238303434316632663133643136613830
Digest-Attributes = 0x040f7369703a31302e302e312e3232
Digest-Attributes = 0x030a5245474953544552
Digest-Attributes = 0x050661757468
Digest-Attributes = 0x090a3030303030303163
Digest-Attributes =
0x08224433343132424236394131453131443939334232303035304241373836433642
Digest-Response = "e4f68760f2b3eed0ad45942b32542c92"
Service-Type = IAPP-Register
Sip-URI-User = "6609876"
Cisco-AVPair = "call-id=D3412ADE9A1E11D993B20050BA786C6B(a)10.0.1.22"
NAS-IP-Address = 127.0.0.1
NAS-Port = 5060
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 10
modcall[authorize]: module "preprocess" returns ok for request 10
modcall[authorize]: module "chap" returns noop for request 10
modcall[authorize]: module "mschap" returns noop for request 10
rlm_digest: Converting Digest-Attributes to something sane...
Digest-User-Name = "6609876"
Digest-Realm = "10.0.1.22"
Digest-Nonce = "423f31c70b3f1d2ad30883c280441f2f13d16a80"
Digest-URI = "sip:10.0.1.22"
Digest-Method = "REGISTER"
Digest-QOP = "auth"
Digest-Nonce-Count = "0000001c"
Digest-CNonce = "D3412BB69A1E11D993B20050BA786C6B"
rlm_digest: Adding Auth-Type = DIGEST
modcall[authorize]: module "digest" returns ok for request 10
rlm_realm: Looking up realm "10.0.1.22" for User-Name = "6609876(a)10.0.1.22"
rlm_realm: No such realm "10.0.1.22"
modcall[authorize]: module "suffix" returns noop for request 10
rlm_eap: No EAP-Message, not doing EAP
modcall[authorize]: module "eap" returns noop for request 10
users: Matched DEFAULT at 152
modcall[authorize]: module "files" returns ok for request 10
modcall: group authorize returns ok for request 10
rad_check_password: Found Auth-Type DIGEST
auth: type "digest"
Processing the authenticate section of radiusd.conf
modcall: entering group authenticate for request 10
rlm_digest: Configuration item "User-Password" is required for authentication.
modcall[authenticate]: module "digest" returns invalid for request 10
modcall: group authenticate returns invalid for request 10
auth: Failed to validate the user.
Delaying request 10 for 1 seconds
Finished request 10
Going to the next request
Sending Access-Reject of id 80 to 127.0.0.1:33188
Waking up in 1 seconds...
--- Walking the entire request list ---
Waking up in 1 seconds...
--- Walking the entire request list ---
Sending Access-Reject of id 81 to 127.0.0.1:33189
Waking up in 2 seconds...
--- Walking the entire request list ---
Cleaning up request 8 ID 79 with timestamp 423f309b
Waking up in 1 seconds...
--- Walking the entire request list ---
Cleaning up request 9 ID 80 with timestamp 423f309c
Waking up in 1 seconds...
--- Walking the entire request list ---
Cleaning up request 10 ID 81 with timestamp 423f309d
Nothing to do. Sleeping until we see a request.
--
rrgv
Patrick,
This is a bash script that externnotify executes
#!/bin/ash
#
# This script is called by Asterisk every time a voice mail is
# left for a subscriber. The CONTEXT, EXTENSION, and VM_COUNT
# are passed by Asterisk.
#
# All we need to do is update a file in /var/spool/asterisk/mwi
# to tell our cron job that we have to send a SIP NOTIFY message
# to a particular UA
#
# This file is referenced in /etc/asterisk/voicemail.conf
#
# NOTE: The $2 argument is passed in to this script in the
# following form: MAILBOX@DOMAIN
#
# example: 4075551212@default
#
MWI_DIR=/var/spool/asterisk/mwi/
if [ -n ${2} ] ; then
if /bin/touch ${MWI_DIR}/${2} ; then
exit 0
else
exit 1
fi
else
exit 2
fi
The following is executed in CRON every minute. This script actually
notifies the subscribers by sending NOTIFY messages to SER. Please
note that our asterisk is a modified version that stores mailboxes in
a directory hash, so you can modify this to fit your needs.
#!/bin/sh
# This script send the SIP NOTIFY message to UA. The NOTIFY message
# can either enable or disable the UA message indicator. The script
# looks for any file in $VM_HOME and creates the NOTIFY message
#
# The actual NOTIFY message is sent to the SIP proxy by the sipsak
# utilty. After the message is send we delete the processed file
# from VM_HOME so we don't keep resending the same message. Most
# UAs will periodically send a SUBSCRIBE message to the SIP proxy.
# When this occurs the SIP proxy will place a file in the location
# /var/spool/mwi/delay and a less frequent CRON job will process it.
VM_ROOT=/var/spool/asterisk/voicemail
VM_HOME=/var/spool/asterisk/mwi
SIP_SERVER=71.110.20.33
SIP_PORT=5060
SIP_FROM=vmserver
SIP_PASSWORD=heslo
DB_NAME=ser
DB_SERVER=10.255.237.18
DB_OPTIONS="--skip-column-names --connect_timeout=3"
DB_USER=ser
DB_PASSWORD=heslo
# Allow glob expansions to return NULL
shopt -s nullglob
# Sanity check that VM_HOME exists, warn if it does not
if [ ! -d $VM_HOME ] ; then
echo "Cannot chdir to VM_HOME, exiting"
exit 1
fi
for file in $VM_HOME/*
do
file=$( basename $file @default )
# The file existance check may seem redundant, but it is
theoretically possible
# for this script to take longer than 1 cron cycle to run, or
for it to be run
# by hand while another copy is running, so we really do need
this check.
if [ -e ${VM_HOME}/${file}@default ] && [ ${#file} -eq 10 ]; then
QUERY="SELECT subscriber.domain FROM subscriber,
location WHERE subscriber.username='$file' AND subscriber.username =
location.username LIMIT 1"
DOMAIN=`mysql ${DB_OPTIONS} -h ${DB_SERVER}
-u${DB_USER} -p${DB_PASSWORD} -e "$QUERY" ${DB_NAME}`
# If the MySQL call fails, then $DOMAIN will hold the
error message instead
if [ $? -ne 0 ] ; then
echo "Error connecting to MySQL: $DOMAIN"
exit 2
fi
if [ -n "${DOMAIN}" ]; then
MAILBOX=$VM_ROOT/default/${file:0:3}/${file:3:3}/${file:6:4}
# Sanity check that INBOX exists, warn if it does not
if [ ! -d ${MAILBOX} ]; then
echo "${MAILBOX} does not exist"
continue
fi
# Delete all messages with a zero length. If
the subscriber still
# has voice mail files in their INBOX after
this step then notify
# them even if the total is zero, which will
extinguish their MWI
for message in ${MAILBOX}/INBOX/*.gsm
do
if [ ! -s $message ]; then
GSM=`basename $message .gsm`
rm -f ${MAILBOX}/INBOX/$GSM.*
fi
done
TOTAL_MESSAGES=0
NEW_MESSAGES=0
OLD_MESSAGES=0
if [ -d ${MAILBOX}/INBOX ]; then
tmp=( $( echo ${MAILBOX}/INBOX/*.txt ) )
NEW_MESSAGES=${#tmp[*]}
else
NEW_MESSAGES=0
fi
if [ -d ${MAILBOX}/Old ]; then
tmp=( $( echo ${MAILBOX}/Old/*.txt ) )
OLD_MESSAGES=${#tmp[*]}
else
OLD_MESSAGES=0
fi
TOTAL_MESSAGES=$(($NEW_MESSAGES + $OLD_MESSAGES))
if [ "$NEW_MESSAGES" == "0" ]; then
HAS_NEW="no"
else
HAS_NEW="yes"
fi
CONTENT_LENGTH=$(( 34 + ${#HAS_NEW} +
${#NEW_MESSAGES} + ${#OLD_MESSAGES} ))
SEQUENCE=$( printf "%06d" $RANDOM )
(
cat <<-EOM
NOTIFY sip:${file}@${DOMAIN} SIP/2.0
From: <sip:${SIP_FROM}@${DOMAIN}>
To: <sip:${file}@${DOMAIN}>
Contact: <sip:${file}@${SIP_SERVER}>
Call-ID: ${SEQUENCE}@${SIP_SERVER}
CSeq: ${SEQUENCE} NOTIFY
Event: message-summary
Content-Type: application/simple-message-summary
Content-Length: ${CONTENT_LENGTH}
Messages-Waiting: ${HAS_NEW}
Voicemail: ${NEW_MESSAGES}/${OLD_MESSAGES}
EOM
) | /usr/bin/sipsak shoot -a ${SIP_PASSWORD} -s sip:${file}@${DOMAIN} -f -
if [ $? -ne 0 ] ; then
echo "sipsak error for $file"
fi
else
echo "DOMAIN is null for $file"
fi
else
if [ ${#file} -ne 10 ] ; then
echo "Extension was not 10 digits: '$file' (${#file})"
else
echo "Problem with file: ${VM_HOME}/${file}@default"
fi
fi
rm ${VM_HOME}/${file}@default
done
exit 0
On Tue, 1 Mar 2005 10:06:56 -0500, Patrick Baker
<patricksbaker(a)gmail.com> wrote:
> could you show me an example of the sipsak command for the cisco phone
> - I can then just make an agi that will call it after vm is left.
>
> Best regards,
>
> Patrick B
>
>
> On Tue, 1 Mar 2005 10:03:35 -0500, Java Rockx <javarockx(a)gmail.com> wrote:
> > Since the SIP UA is registered with SER you'll need to have Asterisk
> > send a NOTIFY message to the user by means of SER.
> >
> > So you can send the NOTIFY to SER with a <From:> header as asterisk
> > and the <To> / R-URI as the Cisco UA.
> >
> > FYI, we do this using sipsak to send the NOTIFY to ser. This is
> > triggered either using the externnotify parameter in the Asterisk
> > voicemail.conf file and by CRON for periodic MWI updates.
> >
> > Regards,
> > Paul
> >
> >
> > On Tue, 1 Mar 2005 09:53:43 -0500, Patrick Baker
> > <patricksbaker(a)gmail.com> wrote:
> > > Hello,
> > >
> > > I'm sure this may have been asked but, I just wanted clarify how this
> > > would be accomplished. I'm looking to have the MWI light on my cisco
> > > phone turn on when a message is left in VM.
> > >
> > > Here is my current situation:
> > >
> > > sip user -> ser -> asterisk
> > >
> > > Best regards,
> > >
> > > Patrick b.
> > >
> > > _______________________________________________
> > > Serusers mailing list
> > > serusers(a)lists.iptel.org
> > > http://lists.iptel.org/mailman/listinfo/serusers
> > >
> >
>
Hi,
from my debug after trying to use the uac_auth in a failure route, I get the following:
Mar 31 16:37:46 sip ser[20394]: BUG:uac:uac_auth: empty reply on picked branch
I've modified the cvs version to compile on 0.9.0
Anyone?
Mvh,
Helge Waastad
I have a SER Proxy that is routing calls to a SIP Redirector which then
informs SER as to which gateway to send call to.
GW1 GW2
| |
SERProxy------->SIP Redirector
|
IP Phone
I would like for SER to take a 302 redirect and then proxy the call to
the gateway per the redirect..however, SER is currently serving the
redirect to the IP Phone..which is unauthorized to access the gateway.
How do I configure SER to actually proxy the call per the redirect on
behalf of the IP Phone?
hello --
some time ago i extended ser to support tls, basically
i implemented functions needed by the existing tls
api. i polished the code a bit and i am giving it away
freely. there are still some things to fix, but it
mostly works.
to use the code, copy tls directory into your ser tree
and optionally patch cfg.lex and cfg.y, then recompile
ser with TLS=on.
if you also patch cfg.lex and cfg.y then you can use
extended cfg syntax and specify different keys and
certificates for different listen sockets. this is
similar to apache virtual servers with ssl. without
the patches you can only use the default configuration
directives.
to iptel: would be great to have it in cvs, what do
you think ?
-- peter
-----------
example ser.cfg:
listen=tls:127.0.0.1:5061
listen=tls:127.0.0.1:5062
# defaults for outgoing tls connections
tls_certificate="default.crt"
tls_private_key = "default.key"
# domain1.com
tls_domain[127.0.0.1:5061] {
tls_certificate="domain1.crt"
tls_private_key = "domain1.key"
tls_method = sslv2
}
# domain2.com
tls_domain[127.0.0.1:5062] {
tls_certificate="domain2.crt"
tls_private_key="domain2.key"
}
__________________________________
Celebrate Yahoo!'s 10th Birthday!
Yahoo! Netrospective: 100 Moments of the Web
http://birthday.yahoo.com/netrospective/
Hi Jiri.
Two questions please.
1.)
Jiri Kuthan HYPERLINK
"mailto:serusers%40iptel.org?Subject=%5BSerusers%5D%20ENUM%20variable%20TLD%
3F&In-Reply-To=4032B769.8000804%40august.net"jiri at iptel.org
Wed Feb 18 02:25:07 CET 2004
* Previous message: HYPERLINK
"http://lists.iptel.org/pipermail/serusers/2004-February/006025.html"[Seruser
s] ENUM variable TLD?
* Next message: HYPERLINK
"http://lists.iptel.org/pipermail/serusers/2004-February/006022.html"[Seruser
s] current uri
* Messages sorted by: HYPERLINK
"http://lists.iptel.org/pipermail/serusers/2004-February/date.html#6026"[
date ] HYPERLINK
"http://lists.iptel.org/pipermail/serusers/2004-February/thread.html#6026"[
thread ] HYPERLINK
"http://lists.iptel.org/pipermail/serusers/2004-February/subject.html#6026"[
subject ] HYPERLINK
"http://lists.iptel.org/pipermail/serusers/2004-February/author.html#6026"[
author ]
_____
on development branch there is an updated enum module which
allows you to use private enum trees the way you are asking.
If you need it, there should be no conflicts if you take
devel version of enum and put it in your 8.12 source tree.
-jiri
At 01:52 AM 2/18/2004, Greg Fausak wrote:
>Normally I do enum lookups inside my
>domain, however, I want to be able to do
>an enum lookup at other TLD. Is there a
>way to do that? Maybe enum_query("e164.other.com")??
>
I have downloaded the latest code as you suggested but have not been able to
figure out how to specify a different TLD.
I have looked a documentation but that has not helped either.
Can you please tell me what the function I need is called?
2.)
Is there an updated ENUM module that would allow me to preform an ENUM query
based on a spcified prefix?
In other words, what if I would like to preform an ENUM query when a number
comes in with a "**" instead of the "+".
I have modified the c code to do this for me but was wondering if you have
released a "production" version of this code.
Thanks,
David Schwartz
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.796 / Virus Database: 540 - Release Date: 11/13/2004