This is usable if you have Juha Heinanen's patches (in "unstable" as
of December 17, 2003) for multiple suffixes for ENUM lookups. This
is a "temporary" hack until ENUM is rolled out globally (zzzzzz....)
If anyone has a +1-800 gateway (North America) that they would like
to see added, please send me an NS PTR or NAPTR for it and we'll put
it in place.
JT
At 5:10 PM +0100 1/8/04, Michael Haberler wrote:
Date: Thu, 08 Jan 2004 17:10:56 +0100
To: [snip]
From: Michael Haberler <mah(a)eunet.at>
Subject:
freenum.org - free "global" 800 service based on
infrastructure ENUM
Happy New Year!
You will recall we discussed setting up a little infrastructure ENUM
trial project. We would populate
freenum.org with NAPTR records
pointing to local gateway operators willing to gateway "free" calls.
Ok, works for us now! Axel has completed the SIP express router
setup for the at43 users, and Otmar has done the Asterisk part. The
new enum module for SER is needed so arbitrary domain suffices can
be used for lookup. A configuration snippet is attached. Any +43800
number listed in
freenum.org (or wildcards for ranges) will be
terminated via a local Asterisk gateway.
In simple words: add the below code between #start and #end and your
users will be able to dial any Austrian +43 800 number. Try the
nic.at number +43 800 888 888 to start with.
We encourage you to try this out with your SIP setup, and maybe you
can contribute some local termination of 800 or other free numbers.
If you want to contribute termination, drop us a mail and we'll add
the entries to
freenum.org. Let us know before you inform a sizeable
user base about this..
This rocks - it is the easiest way for global free numbers I've seen so far!
cheers,
-Michael
snippet from ser.cfg:
# catch voice:sip ENUM entries, only if PSTN not forced
if (enum_query("e164.arpa.", "voice")) {
if (is_uri_host_local()) {
route(5);
break;
};
if (!t_relay()) {
xlog("L_ERR", "%is [%Tf]: %rm %fu -> %ru [R4]: ENUM
destination: relaying failed\n");
sl_reply_error();
break;
};
break;
};
#start
# look up
freenum.org ENUM entries
if (enum_query("freenum.org")) {
if (!t_relay()) {
xlog("L_ERR", "%is [%Tf]: %rm %fu -> %ru [R4]:
freenum.org destination: relaying failed\n");
sl_reply_error();
break;
};
xlog("L_ERR", "%is [%Tf]: %rm %fu -> %ru [R4]:
freenum.org destination\n");
break;
};
#end
# nothing found, try PSTN
if (method=="CANCEL" || method=="BYE" ||
method=="ACK") {
xlog("L_INFO", "%is [%Tf]: %rm %fu -> %ru [R4]: just
forwarding to PSTN");
rewritehostport("1.2.3.4:5060");
t_relay();
break;
};