rate-de.dat V:1.02-Germany [04-Jul-1999 22:56:37]

This commit is contained in:
akool 1999-07-04 20:46:39 +00:00
parent 9da06e269b
commit 917fd329f3
3 changed files with 215 additions and 98 deletions

View File

@ -1,6 +1,6 @@
V:1.02-Germany [02-Jul-1999 19:13:54]
# $Id: country-de.dat,v 1.4 1999/07/02 19:17:01 akool Exp $
# $Id: country-de.dat,v 1.5 1999/07/04 20:46:39 akool Exp $
#
N:Usbekistan

View File

@ -1,4 +1,4 @@
V:1.02-Germany [02-Jul-1999 21:27:20]
V:1.02-Germany [04-Jul-1999 22:56:37]
# Währungsformat
U:%.3f DM
@ -8,7 +8,7 @@ U:%.3f DM
#
# (C) Copyright 1999 by Andreas Kool (akool@isdn4linux.de)
#
# $Id: rate-de.dat,v 1.27 1999/07/02 19:17:10 akool Exp $
# $Id: rate-de.dat,v 1.28 1999/07/04 20:46:44 akool Exp $
#
# Zonenzuordnung für Deutschland
#
@ -337,6 +337,7 @@ T:W/18-08=0.049996/60
T:E,H/*=0.049996/60 Wochenende
Z:102 o.tel.o online 01011
A:0191501 # Proxy: proxy.otelo-online.de:8080; DNS: 195.50.149.33 und 195.50.140.6; Mail: mail.otelo-online.de; User: otelo; Passwort: online
S:Internet by call
T:W/09-21=0.059044/60 Geschaeftszeit
T:W/21-09=0.059044/60
T:E,H/*=0.059044/60
@ -587,6 +588,7 @@ T:W/18-08=0.05/0,0.049996(60)/1
T:E,H/*=0.05/0,0.049996(60)/1 Wochenende
Z:102 o.tel.o online 01011
A:0191501 # (Benutzername: otelo; Passwort: online)
S:Internet by call
T:W/09-21=0.05/0,0.059044(60)/1 Geschaeftszeit
T:W/21-09=0.05/0,0.059044(60)/1
T:E,H/*=0.05/0,0.059044(60)/1
@ -3833,6 +3835,7 @@ A:+49176,+49179 # E2
T:*/*=0.49/60
Z:102 01019freenet
A:01929 # DNS: 62.104.197.193 und 212.81.191.16; POP3: pop3.01019freenet.de; SMTP: mx.01019freenet.de; User: mobilcom; Passwort: mobilcom
S:Internet by call
# eXpress Net: http://www.express-net.de
A:01928120 # eXpress Net # Zugang wie bei Mobilcom
T:*/*=0.05/60 FreeNet
@ -3870,6 +3873,7 @@ A:+49176,+49179 # E2
T:*/*=0.49(60)/1
Z:102 01019freenet
A:01929 # (Benutzername und Passwort: egal, min. 1 Buchstabe)
S:Internet by call
T:*/*=0.05(60)/1 FreeNet
Z:200 Gruppe A
A:Andorra, Belgien, Dänemark, Finnland, Frankreich, Gibraltar
@ -3923,6 +3927,7 @@ A:+49176,+49179 # E2
T:*/*=0.49(60)/1
Z:102 01019freenet
A:01929 # (Benutzername und Passwort: egal, min. 1 Buchstabe)
S:Internet by call
T:*/*=0.05(60)/1 FreeNet
Z:200 Gruppe A
A:Andorra, Belgien, Dänemark, Finnland, Frankreich, Gibraltar
@ -4788,6 +4793,7 @@ T:W/18-08=0.46/60 Freizeit
T:E,H/*=0.46/60 Wochenende
Z:102 TelePassport-Online
A:01924924 # Proxy: proxy.telepassport.de; DNS: 212.41.64.33 und 212.41.68.33; User: tele; Passwort: tele
S:Internet by call
T:*/*=0.06/60
Z:200 Euro 1
A:Andorra, Belgien, Dänemark, Färöer, Finnland, Frankreich, Griechenland
@ -4841,6 +4847,7 @@ A:+49176,+49179 # E2
T:*/*=0.56/60
Z:102 TelePassport-Online
A:01924924 # (Benutzername: beliebig; Passwort: beliebig)
S:Internet by call
T:W/08-18=0.08/60 Geschäftszeit
T:W/18-08=0.06/60 Freizeit
T:E,H/*=0.08/60 Wochenende
@ -4895,6 +4902,7 @@ A:+49176,+49179 # E2
T:*/*=0.56/60
Z:102 TelePassport-Online
A:01924924 # (Benutzername: beliebig; Passwort: beliebig)
S:Internet by call
T:W/08-18=0.08/60 Geschäftszeit
T:W/18-08=0.06/60 Freizeit
T:E,H/*=0.08/60 Wochenende
@ -4953,6 +4961,7 @@ A:+49176,+49179 # E2
T:*/*=0.56/60
Z:102 TelePassport-Online
A:01924924 # (Benutzername: beliebig; Passwort: beliebig)
S:Internet by call
T:*/*=0.06/60
Z:200 International 1
A:Andorra, Belgien, Dänemark, Färöer, Finnland, Frankreich, Griechenland
@ -5009,6 +5018,7 @@ T:W/18-08=0.48/60 Freizeit
T:E,H/*=0.48/60 Wochenende
Z:102 TelePassport-Online
A:01924924 # (Benutzername: beliebig; Passwort: beliebig)
S:Internet by call
T:W/08-18=0.08/60 Geschäftszeit
T:W/18-08=0.06/60 Freizeit
T:E,H/*=0.08/60 Wochenende
@ -5058,6 +5068,7 @@ A:+49176,+49179 # E2
T:*/*=0.56/60
Z:102 TelePassport-Online
A:01924924 # (Benutzername: beliebig; Passwort: beliebig)
S:Internet by call
T:*/*=0.08/60
Z:200 Global 1
A:Belgien, Dänemark, Finnland, Frankreich, Griechenland, Großbritannien
@ -5113,6 +5124,7 @@ T:W/18-08=0.48/60 Freizeit
T:E,H/*=0.48/60 Wochenende
Z:102 TelePassport-Online
A:01924924 # (Benutzername: beliebig; Passwort: beliebig)
S:Internet by call
T:W/08-18=0.08/60 Geschäftszeit
T:W/18-08=0.06/60 Freizeit
T:E,H/*=0.06/60 Wochenende
@ -9918,6 +9930,7 @@ A:+49176,+49179 # E2
T:*/*=0.48/60
Z:102 net@home
A:0192340 # DNS: 195.222.195.222 und 195.222.195.223; User: esprit; Passwort: telecom
S:Internet by call
T:*/*=0.058/60 Internet
Z:103 CALL POP
# Verfügbarkeit nach Vorwahlbereichen:
@ -9925,6 +9938,7 @@ Z:103 CALL POP
# 01.05.99: 06/07/08/09
# 01.06.99: 02/052/054/056/057/059
A:0192343 # (Benutzername: Call, Passwort: POP)
S:Internet by call
T:*/*=0.058/60
Z:200 Euro 1/Welt 1
A:Belgien, Dänemark, Finnland, Frankreich
@ -11523,6 +11537,7 @@ A:+49176,+49179 # E2
T:*/*=0.69/60
Z:100 Talknet by call
A:019251 # Proxy: proxy.tli.de:8080; DNS: 195.252.128.53 und 195.252.128.54; User: talknet; Passwort: talknet
S:Internet by call
T:W/07-19=0.09(60)/180
T:W/19-22=0.07(60)/180
T:W/22-07=0.05(60)/180
@ -11586,50 +11601,37 @@ A:+4366211811
T:*/*=0.25/60
Z:41 Telefonauskunft Ausland (Austria, dial 01051004366211812)
A:+4366211812
T:*/*=0.25/60
Z:200
A:Großbritannien
A:USA
T:*/*=0.16/60
Z:201
A:Niederlande
A:Schweden
T:*/*=0.21/60
Z:202
A:Kanada
A:Frankreich
A:Alaska
A:Hawaii
T:*/*=0.22/60
Z:203
A:Dänemark
A:Norwegen
A:Finnland
A:Belgien
A:Schweiz
T:*/*=0.23/60
Z:204
A:Österreich
A:Australien
T:*/*=0.25/60
Z:207
A:Neuseeland
A:Hongkong
A:Japan
T:*/*=0.29/60
Z:208
A:Liechtenstein
T:*/*=0.31/60
Z:209
A:Spanien
A:Italien
T:*/*=0.32/60
Z:210
A:Luxemburg
T:*/*=0.34/60
Z:212
A:Monaco
T:*/*=0.36/60
Z:200
T:*/*=0.25/60
A:Australien, Österreich
Z:201
T:*/*=0.23/60
A:Belgien, Dänemark, Finnland, Norwegen, Schweiz
Z:202
T:*/*=0.22/60
A:Frankreich, Kanada, Alaska, Hawaii
Z:203
T:*/*=0.21/60
A:Niederlande, Schweden
Z:204
T:*/*=0.16/60
A:Großbritannien, USA
Z:205
T:*/*=0.29/60
A:Neuseeland, Hongkong, Japan
Z:206
T:*/*=.32/60
A:Italien, Sapnien
Z:207
T:*/*=0.34/60
A:Luxembourg
Z:208
T:*/*=0.36/60
A:Monaco
Z:209
T:*/*=0.39/60
Z:213
A:Österreich Mobilfunk
T:*/*=0.75/60
@ -11637,19 +11639,23 @@ Z:214 impossible
# Mobilfunk in den folgenden Ländern ist über 01051 nicht möglich!
# Daher wird hier erst mal ein viel zu hoher Preis dafür
# definiert.
A:Großbritannien Mobilfunk
A:Australien Mobilfunk
A:Belgien Mobilfunk
A:Niederlande Mobilfunk
A:Schweiz Mobilfunk
A:Italien Mobilfunk
A:Dänemark Mobilfunk
A:Schweden Mobilfunk
A:Norwegen Mobilfunk
A:Finnland Mobilfunk
A:Spanien Mobilfunk
A:Großbritannien Mobilfunk
A:Italien Mobilfunk
A:Japan Mobilfunk
A:Liechtenstein Mobilfunk
A:Luxemburg Mobilfunk
A:Monaco Mobilfunk
A:Neuseeland Mobilfunk
A:Niederlande Mobilfunk
A:Norwegen Mobilfunk
A:Österreich Mobilfunk
A:Schweden Mobilfunk
A:Schweiz Mobilfunk
A:Spanien Mobilfunk
A:+491618 # T-C-Tel Voice Mail
A:+491610,+491611,+491612,+491613,+491614,+491615,+491616,+491617,+491619 # C
A:+49170,+49171 # D1
@ -12363,6 +12369,7 @@ C:Arcor Online
A:0192070 # Proxy: proxy.arcor-ip.de:80; DNS: 145.253.2.11 und 145.253.2.75; Mail: mail.arcor-ip.de; User: arcor; Passwort: internet
C:Yahoo! Online
A:0192020 # Proxy: proxy.arcor-ip.de:80; DNS: 145.253.2.11 und 145.253.2.75; Mail: mail.arcor-ip.de; User: arcor; Passwort: internet
S:Internet by call
T:*/*=0.06/60
Z:40 Telefonauskunft
A:11870
@ -13893,8 +13900,8 @@ C:Tarif: Westcom privat
D:dtag
Z:2-4 National
T:W/08-18=0.16(60)/1 Standard
T:W/18-08=0.09(60)/1 Spar
T:E/*=0.09(60)/1 Spar
T:W/18-08=0.08(60)/1 Spar
T:E,H/*=0.08(60)/1 Spar
A:+49
Z:10-15 Mobil
A:+491618 # T-C-Tel Voice Mail
@ -13981,9 +13988,9 @@ T:W/06-08=0.10/60 Sparzeit
T:W/08-18=0.15/60 Hauptzeit
T:W/18-21=0.10/60 Freizeit
T:W/21-06=0.05/60 Traumzeit
A:+49
T:E,H/06-21=0.10/60 Freizeit
T:E,H/21-06=0.05/60 Nacht
A:+49
Z:10-15 Mobil
A:+491618 # T-C-Tel Voice Mail
A:+491610,+491611,+491612,+491613,+491614,+491615,+491616,+491617,+491619 # C
@ -14612,12 +14619,13 @@ T:*/*=0.847/0,0.121/6.7
# 39:First Telecom 28.05.1999 as
# 40:Esprit 01.05.1999 ak
# 50:Talkline 01.05.1999 ak
# 51:01051 Telecom 04.06.1999 je
# 51:01051 Telecom 02.07.1999 je
# 66:Interroute 02.07.1999 je
# 70:Arcor 01.05.1999 ak
# 78:3U 01.05.1999 ak
# 79:Viatel 20.06.1999 je
# 85:GTS-WESTCom 01.05.1999 ak
# 90:Viag Interkom 29.05.1999 je
# 85:GTS-WESTCom 02.07.1999 je
# 90:Viag Interkom 02.07.1999 je
#
# 2. Angemeldet:
# 13:Tele 2 27.05.1999 as

View File

@ -1,4 +1,4 @@
/* $Id: isdnrate.c,v 1.8 1999/07/03 10:24:14 akool Exp $
/* $Id: isdnrate.c,v 1.9 1999/07/04 20:47:05 akool Exp $
*
* ISDN accounting for isdn4linux. (rate evaluation)
*
@ -19,6 +19,9 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log: isdnrate.c,v $
* Revision 1.9 1999/07/04 20:47:05 akool
* rate-de.dat V:1.02-Germany [04-Jul-1999 22:56:37]
*
* Revision 1.8 1999/07/03 10:24:14 akool
* fixed Makefile
*
@ -60,11 +63,12 @@ static char options[] = "Vvd:hb:s:txu";
static char usage[] = "%s: usage: %s [ -%s ] Destination ...\n";
static int verbose = 0, header = 0, best = MAXPROVIDER, table = 0, explain = 0;
static int usestat = 0;
static int usestat = 0, provider = UNKNOWN;
static int duration = LCR_DURATION;
static time_t start;
static int day, month, year, hour, min;
static char country[BUFSIZ], area[BUFSIZ], msn[BUFSIZ];
static char ignore[MAXPROVIDER];
typedef struct {
@ -73,6 +77,11 @@ typedef struct {
char *explain;
} SORT;
typedef struct {
int weight;
int index;
} SORT2;
static SORT sort[MAXPROVIDER];
int print_msg(int Level, const char *fmt, ...)
@ -211,6 +220,12 @@ static int compare(const void *s1, const void *s2)
} /* compare */
static int compare2(const void *s1, const void *s2)
{
return(((SORT2 *)s1)->weight < ((SORT2 *)s2)->weight);
} /* compare2 */
static char *printrate(RATE Rate)
{
static char message[BUFSIZ];
@ -267,7 +282,30 @@ static void splittime()
} /* splittime */
static void numsplit(char *num, char *country, char *area, char *msn)
static char *Provider(int prefix)
{
register char *p;
register int l;
static char s[BUFSIZ];
if (prefix == UNKNOWN)
return("?");
p = getProvider(prefix);
l = max(WIDTH, strlen(p)) - strlen(p);
if (prefix < 100)
sprintf(s, "%s%02d:%s%*s", vbn, prefix, p, l, "");
else
sprintf(s, "%s%03d:%s%*s", vbn, prefix - 100, p, l - 1, "");
return(s);
} /* Provider */
static void numsplit(char *num)
{
register int l1, l3;
auto int l2;
@ -277,6 +315,9 @@ static void numsplit(char *num, char *country, char *area, char *msn)
*country = *area = *msn = 0;
if (verbose && (provider != UNKNOWN))
print_msg(PRT_NORMAL, " Provider %s\n", Provider(provider));
if ((l1 = getCountrycode(num, &s)) != UNKNOWN) {
Strncpy(country, num, l1 + 1);
@ -313,8 +354,10 @@ static void numsplit(char *num, char *country, char *area, char *msn)
static int normalizeNumber(char *target)
{
auto COUNTRY *Country;
auto char num[BUFSIZ];
register int l1, l2;
register char c;
auto COUNTRY *Country;
auto char num[BUFSIZ];
if (isalpha(*target)) {
@ -326,17 +369,44 @@ static int normalizeNumber(char *target)
} /* else */
}
else {
l1 = strlen(vbn);
if (!memcmp(target, vbn, l1)) {
if (target[l1] == '0') /* dreistellige Verbindungsnetzbetreiberkennzahl? */
l2 = l1 + 3;
else
l2 = l1 + 2;
c = target[l2];
target[l2] = 0;
provider = atoi(target + l1);
if (l2 == 6)
provider += 100;
target[l2] = c;
memmove(target, target + l2, strlen(target) - l2);
} /* if */
if (*target == '+')
strcpy(num, target);
else if (!memcmp(target, "00", 2))
sprintf(num, "+%s", target + 2);
else if (*target == '0')
sprintf(num, "%s%s", mycountry, target + 1);
else if (*target == '0') {
#if 0
if (!strchr("18", target[1])) /* FIXME: "18" ist Deutsche-Sonderrufnummernerkennung! */
#endif
sprintf(num, "%s%s", mycountry, target + 1);
#if 0
else
sprintf(num, "%s%s", mycountry, target);
#endif
}
else
sprintf(num, "%s%s%s", mycountry, myarea, target);
} /* else */
numsplit(num, country, area, msn);
numsplit(num);
return(1);
} /* normalizeNumber */
@ -344,11 +414,20 @@ static int normalizeNumber(char *target)
static int compute()
{
register int i, n = 0;
register int low = 0, high = MAXPROVIDER - 1;
auto RATE Rate;
auto char s[BUFSIZ];
for (i = 0; i < MAXPROVIDER; i++) {
if (provider != UNKNOWN) {
low = high = provider;
} /* if */
for (i = low; i <= high; i++) {
if (ignore[i])
continue;
clearRate(&Rate);
Rate.src[0] = mycountry;
Rate.src[1] = myarea;
@ -358,6 +437,8 @@ static int compute()
Rate.dst[1] = area;
Rate.dst[2] = msn;
/* Rate.Service = "Internet by call"; */
Rate.prefix = i;
buildtime();
@ -365,6 +446,8 @@ static int compute()
Rate.start = start;
Rate.now = start + duration - ZAUNPFAHL;
/* kludge to suppress "impossible" Rates */
if (!getRate(&Rate, NULL) && (Rate.Price != 99.99)) {
sort[n].prefix = Rate.prefix;
sort[n].rate = Rate.Charge;
@ -386,29 +469,6 @@ static int compute()
} /* compute */
static char *Provider(int prefix)
{
register char *p;
register int l;
static char s[BUFSIZ];
if (prefix == UNKNOWN)
return("?");
p = getProvider(prefix);
l = max(WIDTH, strlen(p)) - strlen(p);
if (prefix < 100)
sprintf(s, "%s%02d:%s%*s", vbn, prefix, p, l, "");
else
sprintf(s, "%s%03d:%s%*s", vbn, prefix - 100, p, l - 1, "");
return(s);
} /* Provider */
static void result(char *target, int n)
{
@ -455,15 +515,20 @@ static void purge(int n)
static void printTable()
{
register int n, d, i, lasthour;
register int n, d, i, h, lasthour;
auto struct tm *tm;
auto SORT last[MAXLAST];
auto int used[MAXPROVIDER];
auto int hours[MAXPROVIDER];
auto int weight[MAXPROVIDER];
auto int useds = 0, maxhour;
auto SORT2 wsort[MAXPROVIDER];
static int firsttime = 1;
memset(used, 0, sizeof(used));
memset(hours, 0, sizeof(hours));
memset(weight, 0, sizeof(weight));
if (header)
print_msg(PRT_NORMAL, "Eine %d Sekunden lange Verbindung von %s %s nach %s %s %s kostet\n",
@ -528,12 +593,19 @@ static void printTable()
last[i].explain);
} /* for */
used[last[0].prefix] = 1;
used[last[0].prefix]++;
if (lasthour >= hour)
hours[last[0].prefix] += ((24 - lasthour) + hour);
h = ((24 - lasthour) + hour);
else
hours[last[0].prefix] += hour - lasthour;
h = hour - lasthour;
hours[last[0].prefix] += h;
if ((lasthour > 8) && (lasthour < 21))
h *= 2;
weight[last[0].prefix] += h * (d ? 5 : 2);
for (i = 0; i < MAXLAST; i++) {
last[i].prefix = sort[i].prefix;
@ -578,12 +650,20 @@ static void printTable()
last[i].explain);
} /* for */
used[last[0].prefix] = 1;
used[last[0].prefix]++;
if (lasthour >= hour)
hours[last[0].prefix] += ((24 - lasthour) + hour);
h = ((24 - lasthour) + hour);
else
hours[last[0].prefix] += hour - lasthour;
h = hour - lasthour;
hours[last[0].prefix] += h;
if ((lasthour > 8) && (lasthour < 21))
h *= 2;
weight[last[0].prefix] += h * (d ? 5 : 2);
} /* for */
if (usestat) {
@ -594,12 +674,40 @@ static void printTable()
for (i = 0; i < MAXPROVIDER; i++)
if (used[i]) {
print_msg(PRT_NORMAL, "%s (%d hours)\n", Provider(i), hours[i]);
print_msg(PRT_NORMAL, "%s %d times, %d hours, weight = %d\n",
Provider(i), used[i], hours[i], weight[i]);
wsort[useds].weight = weight[i];
wsort[useds].index = i;
useds++;
if (hours[i] < maxhour)
maxhour = hours[i];
} /* if */
if ((best < MAXPROVIDER) && (best < useds)) {
print_msg(PRT_NORMAL, "Retrying with only %d provider(s), eliminating %d provider(s)\n", best, useds - best);
qsort((void *)wsort, useds, sizeof(SORT2), compare2);
for (i = 0; i < useds; i++) {
print_msg(PRT_NORMAL, "%s %d times, %d hours, weight = %d\n",
Provider(wsort[i].index), used[wsort[i].index], hours[wsort[i].index], weight[wsort[i].index]);
if (i == best - 1)
print_msg(PRT_NORMAL, "\n");
if (i >= best - 1)
ignore[wsort[i].index]++;
} /* for */
if (firsttime)
printTable();
firsttime = 0;
} /* if */
} /* if */
} /* printTable */
@ -620,6 +728,7 @@ int main(int argc, char *argv[], char *envp[])
init();
post_init();
memset(ignore, 0, sizeof(ignore));
while (i < argc) {
if (normalizeNumber(argv[i])) {