isdnlog-3.49

This commit is contained in:
akool 1999-09-09 11:21:04 +00:00
parent 23028999ef
commit f319aa12ed
28 changed files with 4594 additions and 2281 deletions

View File

@ -1,4 +1,4 @@
## $Id: Makefile.in,v 1.102 1999/08/29 10:28:11 akool Exp $
## $Id: Makefile.in,v 1.103 1999/09/09 11:21:04 akool Exp $
##
## ISDN accounting for isdn4linux.
##
@ -19,6 +19,9 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
## $Log: Makefile.in,v $
## Revision 1.103 1999/09/09 11:21:04 akool
## isdnlog-3.49
##
## Revision 1.102 1999/08/29 10:28:11 akool
## isdnlog-3.48
## cosmetics
@ -749,7 +752,7 @@ SERVICEFILE = /etc/services
# DON'T EDIT BELOW THIS LINE
######################################################################
VERSION = 3.48
VERSION = 3.49
MANPAGES = isdnlog/callerid.conf.5 isdnlog/isdn.conf.5 \
isdnlog/isdnformat.5 isdnlog/isdnlog.5 isdnlog/isdnlog.8 \

View File

@ -1,4 +1,4 @@
/* $Id: isdnrep.c,v 1.76 1999/08/29 10:28:44 akool Exp $
/* $Id: isdnrep.c,v 1.77 1999/09/09 11:21:05 akool Exp $
*
* ISDN accounting for isdn4linux. (Report-module)
*
@ -24,6 +24,9 @@
*
*
* $Log: isdnrep.c,v $
* Revision 1.77 1999/09/09 11:21:05 akool
* isdnlog-3.49
*
* Revision 1.76 1999/08/29 10:28:44 akool
* isdnlog-3.48
* cosmetics
@ -1904,7 +1907,6 @@ static int print_line(int status, one_call *cur_call, int computed, char *overla
static void bprint(one_call *call)
{
register char *p = call->num[CALLED];
register int mobil = 0;
auto char target[BUFSIZ], s[BUFSIZ];
auto TELNUM number;

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
V:1.10-Germany [03-Sep-1999 19:13:20]
V:1.10-Germany [09-Sep-1999 13:17:12]
# 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.42 1999/09/08 13:11:04 akool Exp $
# $Id: rate-de.dat,v 1.43 1999/09/09 11:21:04 akool Exp $
#
#
# Das "A:" Tag muß folgendermaßen gefüllt werden:
@ -4768,7 +4768,7 @@ T:*/*=0.06/0,0.46(60)/1
#
#
P:24 Telepassport 99 Plus
C:GmbH, Schwindstraße 3, 60325 Frankfurt 01024
C:GmbH, Schwindstraße 3, 60325 Frankfurt
C:Name: TelePassport Service GmbH
C:Homepage: http://www.telepassport.de
C:Hotline: 0800/808 808 8
@ -4832,9 +4832,9 @@ Z:204 Welt 3
A:+
T:*/*=1.96/60
#####################################################################
P:24,1 Telepassport 01024 Plus
P:24,1 Telepassport Plus
G:15-Jul-1999
C:GmbH, Schwindstraße 3, 60325 Frankfurt 01024
C:GmbH, Schwindstraße 3, 60325 Frankfurt
C:Name: TelePassport Service GmbH
C:Homepage: http://www.telepassport.de
C:Hotline: 0800/808 808 8
@ -4890,7 +4890,7 @@ T:*/*=1.96/60
#####################################################################
P:24,2 Telepassport CbC
G:15-Jul-1999
C:GmbH, Schwindstraße 3, 60325 Frankfurt 01024
C:GmbH, Schwindstraße 3, 60325 Frankfurt
C:Name: TelePassport Service GmbH
C:Homepage: http://www.telepassport.de
C:Hotline: 0800/808 808 8
@ -4944,7 +4944,7 @@ T:*/*=1.96/60
#####################################################################
P:24,3 Telepassport RegionalTarif Plus
G:01.05.1999
C:GmbH, Schwindstraße 3, 60325 Frankfurt 01024
C:GmbH, Schwindstraße 3, 60325 Frankfurt
C:Name: TelePassport Service GmbH
C:Homepage: http://www.telepassport.de
C:Hotline: 0800/808 808 8
@ -4997,7 +4997,7 @@ T:*/*=1.96/60
#####################################################################
P:24,4 Telepassport SüdOst-Tarif
G:01.05.1999
C:GmbH, Schwindstraße 3, 60325 Frankfurt 01024
C:GmbH, Schwindstraße 3, 60325 Frankfurt
C:Name: TelePassport Service GmbH
C:Homepage: http://www.telepassport.de
C:Hotline: 0800/808 808 8
@ -5058,9 +5058,9 @@ Z:203 Global 4
A:+
T:*/*=1.98/60
#####################################################################
P:24,5 Telepassport SüdOst 01024
P:24,5 Telepassport SüdOst
G:01.05.1999
C:GmbH, Schwindstraße 3, 60325 Frankfurt 01024
C:GmbH, Schwindstraße 3, 60325 Frankfurt
C:Name: TelePassport Service GmbH
C:Homepage: http://www.telepassport.de
C:Hotline: 0800/808 808 8
@ -5108,7 +5108,7 @@ T:*/*=1.98/60
#####################################################################
P:24,6 Telepassport StudentenTarif
G:01.05.1999
C:GmbH, Schwindstraße 3, 60325 Frankfurt 01024
C:GmbH, Schwindstraße 3, 60325 Frankfurt
C:Name: TelePassport Service GmbH
C:Homepage: http://www.telepassport.de
C:Hotline: 0800/808 808 8
@ -14066,7 +14066,6 @@ C:Vielmehr handelt es sich hier nur um die Tarife fuer den
C:UUnet Ortstarif-Zugang!
C:Dies ist *kein* All-in-One Zugang, es werden zusätzliche Gebühren erhoben!
Z:100 Internet
A:+49 # FIXME: Verzonung per heute (29-Aug-99) nicht bekannt!
A:0191999 # UUnet
A:0192333 # NDH
T:W/05-09=0.048(60)/1 UUnet
@ -14798,7 +14797,6 @@ C:Energieversorgung S
#
P:201 Frag Fred
Z:21 Telefonauskunft
A:+49 # FIXME: es gibt keine Verzonung, da nur Auskunftsdienste angeboten werden
A:11811
T:*/*=0.847/0,0.121/6.7
#####################################################################

102
isdnlog/tools/NEWS Normal file
View File

@ -0,0 +1,102 @@
NEWS betreffend tools, (rate, isdnrate)
1999.09.03
holiday.c: holiday-CC.dat
...
W:H Feiertag
W:* Immer # APPEND THIS
Hat ein Provider jeden Tag den gleichen Tarif (T:*/...) wird nun statt
dem Wochentag 'Immer' ausgegeben. Damit ist eine klarere Unterscheidung
zu Providern mit tagesabhaengigen Tarifen gegeben.
1999.09.01
Neues Feld in struct RATE
double Sales; (Mindestgesprächsgebühr)
rate-CC.dat: Syntaxerweiterung im T:Tag
T:*.*=0.30|2.20(60)/1
Mindestens 0.30, sonst 2.20 per Minute
aber:
T:*.*=0.30/0,2.20(60/1
0.30 + 2.20/Min (0.30 = Herstellungsgebühr)
rate-CC.dat: Syntaxerweiterung im C:Tag
gleichlautende C:Tags werden per '\n' appended
telnum.c:
Dirty hack fuer +1, +7 (s. _getCountry...)
isdnrate.c:
Neue Option -S[v|n] (sort VBN oder Name statt Preis)
z.B.
isdnrate -C -Sv -XHomepage
(sortierte Proiderliste mit Homepage)
1999.08.24
rate-CC.dat: Syntaxerweiterung im C:Tag
folgende C:-Tags sind dzt. in Verwendung:
C:Name:Provider-Firmenbezeichnung
C:Address:Provider-Adresse
C:Homepage:http://www.provider.CC
C:TarifURL:http://www.provider.CC/tarife/
C:EMail:info@povider.CC
C:Telefon:0800 123 123
C:Telefax:0800 123 123
C:Hotline:0800 123 123
C:Maintainer:lt@toetsch.at
C:Special:Nur Businesskunden
C:Zone:Fernzone ab 100 Km
C:GT:Gebühentext z.B. 200 Mindestumsatz
C:GF:Formeln f. Gebühren
(Diese Formeln werden von telrate.cgi - Gesprächsmix ausgewertet)
z.B.
C:GT:99 Mindestumsatz (per Monat)
C:GF:Cost = Ch > 99 ? 0 : 99
C:GT:Businesskunden ab 5000 Umsatz
C:GF:Ch >= 5000 ? 1 : -1
C:GT:Freischaltgebühr einmalig 480
C:GF:Cost = 480/12
Vom telrate.cgi sind dzt. die Variablen
'Ch' ... Kosten pro Mix
'MaxCh' ... Teuerste Spalte im Mix
'Cost' ... Angefallenen Kosten
definiert.
Ist der Rückgabewert (i.e. die letzte Expression) -1, wird der
Provider verworfen (z.B. Mindestumsatz nicht erreicht).
isdnrate:
isdnrate -D2
begibt sich nach dem Starten in den Hintergund
isdnrate -CX9 Argentinien
verbindet ich mit dem oben gestarteten Daemon und wirft die
Tarifliste aus.
isdnrate -CD3
killed den Daemon wieder
1999.08.24
Neues Feld in struct RATE
double Rhythm[2]; (Takt z.B. 60,1)
-lt-

View File

@ -1,4 +1,4 @@
/* $Id: holiday.c,v 1.15 1999/07/15 16:41:49 akool Exp $
/* $Id: holiday.c,v 1.16 1999/09/09 11:21:05 akool Exp $
*
* Feiertagsberechnung
*
@ -19,6 +19,9 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log: holiday.c,v $
* Revision 1.16 1999/09/09 11:21:05 akool
* isdnlog-3.49
*
* Revision 1.15 1999/07/15 16:41:49 akool
* small enhancement's and fixes
*
@ -195,7 +198,7 @@ typedef struct {
} HOLIDATE;
static char *defaultWeekday[] = { "", /* not used */
"", /* empty "Everyday" */
"Everyday",
"Workday",
"Weekend",
"Monday",
@ -363,6 +366,9 @@ int initHoliday(char *path, char **msg)
} else if (*s=='H') {
d=HOLIDAY;
s++;
} else if (*s=='*') {
d=EVERYDAY;
s++;
} else {
warning(path, "invalid weekday %c", *s);
continue;
@ -428,8 +434,7 @@ static int isHoliday(struct tm *tm, char **name)
for (i=0; i<nHoliday; i++) {
if ((Holiday[i].month==-1 && Holiday[i].day==day-easter) ||
(Holiday[i].month==tm->tm_mon+1 && Holiday[i].day==tm->tm_mday)) {
if(name)
*name=Holiday[i].name;
if(name) *name=Holiday[i].name;
return 1;
}
}
@ -462,25 +467,21 @@ static char *staticString (char *fmt, ...)
int isDay(struct tm *tm, bitfield mask, char **name)
{
julian day;
int holiday;
char *holiname;
holiday=isHoliday(tm, &holiname);
char *holiname;
if ((mask & (1<<HOLIDAY)) && holiday) {
julian day=(date2julian(tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday)-6)%7+MONDAY;
if ((mask & (1<<HOLIDAY)) && isHoliday(tm, &holiname)) {
if (name) *name=staticString("%s (%s)", Weekday[HOLIDAY], holiname);
return HOLIDAY;
}
day=(date2julian(tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday)-6)%7+MONDAY;
if ((mask & (1<<WEEKEND)) && (day==SATURDAY || day==SUNDAY)) {
if (name) *name=staticString("%s (%s)", Weekday[WEEKEND], Weekday[day]);
return WEEKEND;
}
if ((mask & (1<<WORKDAY)) && day!=SATURDAY && day!=SUNDAY && !holiday) {
if ((mask & (1<<WORKDAY)) && day!=SATURDAY && day!=SUNDAY && !isHoliday(tm, NULL)) {
if (name) *name=staticString("%s (%s)", Weekday[WORKDAY], Weekday[day]);
return WORKDAY;
}
@ -491,7 +492,7 @@ int isDay(struct tm *tm, bitfield mask, char **name)
}
if (mask & (1<<EVERYDAY)) {
if (name) *name=staticString("%s", Weekday[day]);
if (name) *name=staticString("%s", Weekday[EVERYDAY]);
return day;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
/* $Id: rate.c,v 1.41 1999/08/29 10:29:06 akool Exp $
/* $Id: rate.c,v 1.42 1999/09/09 11:21:05 akool Exp $
*
* Tarifdatenbank
*
@ -19,6 +19,9 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log: rate.c,v $
* Revision 1.42 1999/09/09 11:21:05 akool
* isdnlog-3.49
*
* Revision 1.41 1999/08/29 10:29:06 akool
* isdnlog-3.48
* cosmetics
@ -342,7 +345,7 @@ extern const char *basename (const char *name);
#include "country.h"
#include "rate.h"
#define LENGTH 250 /* max length of lines in data file */
#define LENGTH 512 /* max length of lines in data file */
#define STRINGS 8 /* number of buffers for printRate() */
#define STRINGL 64 /* length of printRate() buffer */
#define DEFAULT_FORMAT "%.2f" /* default format for printRate() */
@ -364,6 +367,7 @@ typedef struct {
bitfield Day;
bitfield Hour;
int Freeze;
double Sales;
int nUnit;
UNIT *Unit;
} HOUR;
@ -742,17 +746,21 @@ int initRate(char *conf, char *dat, char *dom, char **msg)
case 'G':
if (ignore) continue;
// warning (dat, "Legacy tag '%s'", s);
warning (dat, "Legacy tag '%s'", s);
break;
case 'C': /* C:Comment */
if (ignore) continue;
s+=2; while (isblank(*s)) s++;
if ((c=strchr(s,':'))!=NULL) {
*c++='\0';
*c='\0';
c=strip(c+1);
for (i=0; i<Provider[prefix].nComment; i++) {
if (strcmp (Provider[prefix].Comment[i].Key,s)==0) {
warning (dat, "Duplicate Comment '%s'", s);
char **value=&Provider[prefix].Comment[i].Value;
*value=realloc(*value, strlen(*value)+strlen(c)+2);
strcat(*value, "\n");
strcat(*value, c);
s=NULL;
break;
}
@ -760,7 +768,7 @@ int initRate(char *conf, char *dat, char *dom, char **msg)
if (s) {
Provider[prefix].Comment=realloc(Provider[prefix].Comment, (Provider[prefix].nComment+1)*sizeof(COMMENT));
Provider[prefix].Comment[Provider[prefix].nComment].Key=strdup(s);
Provider[prefix].Comment[Provider[prefix].nComment].Value=strdup(strip(c));
Provider[prefix].Comment[Provider[prefix].nComment].Value=strdup(c);
Provider[prefix].nComment++;
Comments++;
}
@ -1072,6 +1080,7 @@ int initRate(char *conf, char *dat, char *dom, char **msg)
Provider[prefix].Zone[zone].Hour[t].Day=day;
Provider[prefix].Zone[zone].Hour[t].Hour=hour;
Provider[prefix].Zone[zone].Hour[t].Freeze=freeze;
Provider[prefix].Zone[zone].Hour[t].Sales=0.0;
Provider[prefix].Zone[zone].Hour[t].nUnit=0;
Provider[prefix].Zone[zone].Hour[t].Unit=NULL;
@ -1084,6 +1093,11 @@ int initRate(char *conf, char *dat, char *dom, char **msg)
}
price=strtod(s,&s);
while (isblank(*s)) s++;
if (*s=='|') {
Provider[prefix].Zone[zone].Hour[t].Sales=price;
s++;
continue;
}
divider=0.0;
duration=1.0;
if (*s=='(') {
@ -1195,7 +1209,7 @@ char *getProvider (int prefix)
char *getComment (int prefix, char *key)
{
int i;
if (prefix<0 || prefix>=nProvider || !Provider[prefix].used)
return NULL;
@ -1358,10 +1372,11 @@ int getRate(RATE *Rate, char **msg)
}
freeze=Hour->Freeze;
Rate->Hour=Hour->Name;
Rate->Sales=Hour->Sales;
Unit=Hour->Unit;
if (now==0.0 && Unit->Duration==0.0)
Rate->Basic=Unit->Price;
for (i=0; i<Hour->nUnit; i++)
for (i=0; i<Hour->nUnit; i++)
if ((Rate->Rhythm[0]=Unit[i].Duration)!=0)
break;
Rate->Rhythm[1]=Unit[Hour->nUnit-1].Duration;
@ -1391,6 +1406,9 @@ int getRate(RATE *Rate, char **msg)
}
}
if (Rate->Charge < Rate->Sales)
Rate->Charge = Rate->Sales;
if (now>0.0)
Rate->Rest=now-Rate->Time;
@ -1527,8 +1545,8 @@ void main (int argc, char *argv[])
}
time(&Rate.start);
Rate.now=Rate.start + LCR_DURATION;
Rate.now=Rate.start+153;
#if 0
Rate.prefix = 2;
for (i=0; i<10000; i++) {
@ -1555,8 +1573,8 @@ void main (int argc, char *argv[])
exit (0);
#endif
#if 1
#if 0
time(&Rate.start);
Rate.now=Rate.start + LCR_DURATION;
@ -1593,10 +1611,10 @@ void main (int argc, char *argv[])
printf ("%02d.%02d.%04d %02d:%02d:%02d %10s (%6.3f %6.3f) %4d %4.1f %2f/%2f %4ld %4ld %s\n",
now.tm_mday, now.tm_mon+1, now.tm_year+1900,
now.tm_hour, now.tm_min, now.tm_sec,
printRate (Rate.Charge),
Rate.Basic, Rate.Price,
Rate.Units, Rate.Duration,
Rate.Rhythm[0], Rate.Rhythm[1],
printRate (Rate.Charge),
Rate.Basic, Rate.Price,
Rate.Units, Rate.Duration,
Rate.Rhythm[0], Rate.Rhythm[1],
Rate.Time, Rate.Rest,
explainRate(&Rate));
}
@ -1606,7 +1624,7 @@ void main (int argc, char *argv[])
#else
printf ("---Date--- --Time-- --Charge-- ( Basic Price) Unit Dur Time Rest\n");
printf ("---Date--- --Time-- --Charge-- ( Sales Basic Price) Unit Dur Time Rest\n");
time(&Rate.start);
time(&Rate.now);
@ -1627,10 +1645,10 @@ void main (int argc, char *argv[])
exit (1);
}
now=*localtime(&Rate.now);
printf ("%02d.%02d.%04d %02d:%02d:%02d %10s (%6.3f %6.3f) %4d %4.1f %4ld %4ld\n",
printf ("%02d.%02d.%04d %02d:%02d:%02d %10s (%6.3f %6.3f %6.3f) %4d %4.1f %4ld %4ld\n",
now.tm_mday, now.tm_mon+1, now.tm_year+1900,
now.tm_hour, now.tm_min, now.tm_sec,
printRate (Rate.Charge), Rate.Basic, Rate.Price, Rate.Units, Rate.Duration, Rate.Time, Rate.Rest);
printRate (Rate.Charge), Rate.Sales, Rate.Basic, Rate.Price, Rate.Units, Rate.Duration, Rate.Time, Rate.Rest);
sleep(1);
}

View File

@ -1,4 +1,4 @@
/* $Id: rate.h,v 1.11 1999/08/25 17:07:18 akool Exp $
/* $Id: rate.h,v 1.12 1999/09/09 11:21:06 akool Exp $
*
* Tarifdatenbank
*
@ -19,6 +19,9 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log: rate.h,v $
* Revision 1.12 1999/09/09 11:21:06 akool
* isdnlog-3.49
*
* Revision 1.11 1999/08/25 17:07:18 akool
* isdnlog-3.46
*
@ -145,6 +148,7 @@ typedef struct {
char *Day; /* Wochen- oder Feiertag */
char *Hour; /* Bezeichnung des Tarifs */
double Basic; /* Grundpreis einer Verbindung */
double Sales; /* Mindestumsatz einer Verbindung */
double Price; /* Preis eines Tarifimpulses */
double Duration; /* Länge eines Tarifimpulses */
int Units; /* verbrauchte Tarifimpulse */

View File

@ -179,6 +179,8 @@ static int _getCountrycode(char *country, char ** t) {
print_msg(PRT_A, "Problem getCountrycode \"%s\" returned\n", country,res);
return UNKNOWN;
}
if (country[1] == '1' || country[1] == '7') /* Fixme: quick hack fuer USA/GUS */
return last;
Strncpy(c, country, res); /* try shorter because of towns in country.dat */
l=strlen(c);
while(l>1) {

View File

@ -1,6 +1,9 @@
Isdnrate CGI
Telrate CGI
------------
Telrate.cgi is a web interface to isdnrate for displaying tables & graphics of
provider costs.
Installation
------------
@ -15,16 +18,17 @@ Installation
extract index.html,info.html,pics to /usr/local/httpd/htdocs/somedir
(default is telrate, that's easiest)
# cd /usr/local/httpd/htdocs
# tar -xzf telrate.tgz
make it readable for your webserver
edit isdnrate:
edit telrate.cgi:
--------------
location of code file ( .../tools/zone/CC/code )
location of isdnrate (only if pipe's are used not sockets)
location of telrate (only if pipe's are used not sockets)
location of mktemp (should be ok)
@prob_zones should be areacodes of villages in zone 1-3
qw (from to to .. ) with leading '0'
@ -32,7 +36,7 @@ edit isdnrate:
location of index.html, info.html, pic, (default /telrate/ under htdocs)
if your /tmp ist not writable by all users, turn of $use_sockets
or change the location of the unix socket in both isdnrate's.
or change the location of the unix socket in both isdnrate.c and telrate.cgi.
make a tmp dir below htdocs
# mkdir /usr/local/httpd/htdocs/tmp
@ -69,20 +73,20 @@ PerlSendHeader On
Options +ExecCGI
</Location>
NOTE: Running under mod_perl has still some bugs, therefor extension cgi
is used by now.
-----------------
End Apache config
# cp isdnrate /usr/local/httpd/cgi-bin
or
# cp isdnrate /usr/local/httpd/cgi-bin
# chmod 755 /usr/local/httpd/cgi-bin/isdnrate
# cp telrate.cgi /usr/local/httpd/cgi-bin
# chmod 755 /usr/local/httpd/cgi-bin/telrate.cgi
# chmod 644 /etc/isdn/isdn.conf
edit telnum.c (if not compiled with proper -D ISDN_CC )
first line defines TESTat or TEDTnl
NB: isdnrate uses the following perl modules:
NB: telrate.cgi uses the following perl modules:
CGI, GD, IO::Handle
if you don't have these, point your browser to www.perl.org,
and look for CPAN mirrors near your location.
@ -99,7 +103,7 @@ IMG tags too.
Running the Program
-------------------
if $use_sockets is on, start the server instance of isdnlog/bin/isdnrate with
if $use_sockets is on, start the server instance of isdnlog/bin/telrate with
options -D [-v]
as soon as you see "Setup sockets" you can point your browser to

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//SoftQuad Software//DTD HoTMetaL PRO 5.0::19981217::extensions to HTML 4.0//EN" "hmpro5.dtd">
<HTML>
<HEAD>
<TITLE>Telefonkosten</TITLE>
<SCRIPT LANGUAGE="JavaScript">
@ -19,6 +19,8 @@ gm0=pl("gm0");
gm1=pl("gm1");
info0=pl("info0");
info1=pl("info1");
list0=pl("list0");
list1=pl("list1");
function swap(what,on) {
if(!ver4) return;
var i=on?"1":"0";
@ -33,46 +35,49 @@ document[what].src=eval(what+i+'.src');
.sm {font-family:Sans Serif;font-size:9pt}
i {color:#000080}
//h1 {font-family:Courier New,Courier}
h1,h2,h3,h4,p,td,th,body { font-family:Sans Serif,Arial }
h1,p,td,th,body { font-family:Sans Serif,Arial }
-->
</STYLE>
</HEAD>
<BODY BGCOLOR="#ffffe0">
<H1 align="center">Telefonkosten</H1>
<P><I>Wieviel</I> kostet ein <I>wie</I> langes Telefongespr&auml;ch von <I>wo</I> <I>wohin</I> um <I>welche</I> Zeit
mit <I>welchem</I> Telefonprovider und <I>warum</I> eigentlich? <I>Wie</I> teuer kommt mir ein bestimmter Gespr&auml;chsmix zu
verschiedenen Zielen?</P>
<H1 ALIGN="center">Telefonkosten</H1>
<P><I>Wieviel</I> kostet ein <I>wie</I> langes Telefongespr&auml;ch von <I>wo</I> <I>wohin</I> um <I>welche</I>Zeit mit
<I>welchem</I> Telefonprovider und <I>warum</I> eigentlich? <I>Wie</I> teuer kommt mir ein bestimmter Gespr&auml;chsmix
zu verschiedenen Zielen?</P>
<P>Und vorallem: &quot;<I>Wer</I> ist dabei der billigste?&quot;</P>
<P>Das und vieles mehr erfahren Sie hier &uuml;bersichtlich aufbereitet in Tabellen und Grafiken.</P>
<BLOCKQUOTE><table><tr><td>
<P><A HREF="/cgi-bin/isdnrate" ONMOUSEOVER="swap('eg',1)"
ONMOUSEOUT="swap('eg',0)"><b>Einzelgespr&auml;che</b></A><A HREF="/cgi-bin/isdnrate" ONMOUSEOVER="swap('eg',1)"
ONMOUSEOUT="swap('eg',0)"><IMG SRC="eg0.jpg" ALT="Einzelgespr&auml;ch" BORDER="0" WIDTH="60" HEIGHT="39" NAME="eg"
HSPACE="10"></A></P>
<P><A HREF="/cgi-bin/isdnrate?mix=10" ONMOUSEOUT="swap('gm',false)"
ONMOUSEOVER="swap('gm',true)"><b>Gespr&auml;chsmix</b></A><A HREF="/cgi-bin/isdnrate?mix=10" ONMOUSEOUT="swap('gm',false)"
ONMOUSEOVER="swap('gm',true)"><IMG SRC="gm0.jpg" ALT="Gespr&auml;chsmix" BORDER="0" WIDTH="80" HEIGHT="39"
NAME="gm" HSPACE="10"></A></P>
<TD><A HREF="/cgi-bin/isdnrate" ONMOUSEOVER="swap('eg',1)" ONMOUSEOUT="swap('eg',0)"><IMG SRC="graf.gif"
BORDER="0" HSPACE=40 ALT="Grafik Einzelgespr&auml;chskosten"></A>
</td>
<td>
<P><A HREF="info.html" ONMOUSEOVER="swap('info',1)"
ONMOUSEOUT="swap('info',0)"><IMG SRC="info0.jpg" ALT="Info" BORDER="0" WIDTH="60" HEIGHT="39" NAME="info"
HSPACE="10"></A><A HREF="info.html" ONMOUSEOVER="swap('info',1)"
ONMOUSEOUT="swap('info',0)"><b>Info</b></A></P>
</td>
</tr></table>
<BLOCKQUOTE><TABLE>
<TR>
<TD ALIGN="right"> <A HREF="/perl/telrate.cgi" ONMOUSEOVER="swap('eg',1)"
ONMOUSEOUT="swap('eg',0)"><B>Einzelgespr&auml;che</B></A><A HREF="/perl/telrate.cgi"
ONMOUSEOVER="swap('eg',1)" ONMOUSEOUT="swap('eg',0)"><IMG SRC="eg0.jpg" ALT="Einzelgespr&auml;ch" BORDER="0" WIDTH="80"
HEIGHT="40" NAME="eg" HSPACE="10"></A></TD>
<TD ROWSPAN="2"><A HREF="/perl/telrate.cgi" ONMOUSEOVER="swap('eg',1)" ONMOUSEOUT="swap('eg',0)"><IMG SRC="graf.gif"
BORDER="0" HSPACE="40" ALT="Grafik Einzelgespr&auml;chskosten" WIDTH="226" HEIGHT="110"></A> </TD>
<TD ALIGN="left"> <A HREF="info.html" ONMOUSEOVER="swap('info',1)" ONMOUSEOUT="swap('info',0)"><IMG
SRC="info0.jpg" ALT="Info" BORDER="0" WIDTH="80" HEIGHT="40" NAME="info" HSPACE="10"></A><A HREF="info.html"
ONMOUSEOVER="swap('info',1)" ONMOUSEOUT="swap('info',0)"><B>Info / Hilfe</B></A> </TD>
</TR>
<TR>
<TD ALIGN="right" VALIGN="MIDDLE">
<A HREF="/perl/telrate.cgi?mix=10" ONMOUSEOUT="swap('gm',false)"
ONMOUSEOVER="swap('gm',true)"><B>Gespr&auml;chsmix</B></A><A HREF="/perl/telrate.cgi?mix=10" ONMOUSEOUT="swap('gm',false)"
ONMOUSEOVER="swap('gm',true)"><IMG SRC="gm0.jpg" ALT="Gespr&auml;chsmix" BORDER="0" WIDTH="80" HEIGHT="40" NAME="gm"
HSPACE="10"></A> </TD>
<TD ALIGN="left"> <A HREF="/perl/telrate.cgi/list=1" ONMOUSEOVER="swap('list',1)" ONMOUSEOUT="swap('list',0)"><IMG
SRC="list0.jpg" ALT="Providerliste" BORDER="0" WIDTH="80" HEIGHT="40" NAME="list" HSPACE="10"></A><A HREF="/perl/telrate.cgi?list=1"
ONMOUSEOVER="swap('list',1)" ONMOUSEOUT="swap('list',0)"><B>Providerliste</B></A> </TD></TR>
</TABLE>
</BLOCKQUOTE>
<P></P>
<img src="hr.gif" width="600" height=4>
<DIV ALIGN="RIGHT">
<P CLASS="sm">This calculationengine is powered by <IMG SRC="tux.gif" ALT="Linux" BORDER="0">
, created by the <A HREF="http://www.isdn4linux.de">Isdn-Crew</A>.<BR>
HTML page and CGI program created by <A HREF="http://www.toetsch.at">Leopold T&ouml;tsch</A>,
(c) 1999 by <A HREF="mailto:lt@toetsch.at">-lt-</A>.</P></DIV>
<IMG SRC="hr.gif" WIDTH="600" HEIGHT="4"> <DIV ALIGN="RIGHT">
<P CLASS="sm">This calculationengine is powered by <IMG SRC="tux.gif" ALT="Linux" BORDER="0"> , created by the
<A HREF="http://www.isdn4linux.de">Isdn-Crew</A>.<BR>
HTML page and CGI program created by <A HREF="http://www.toetsch.at">Leopold T&ouml;tsch</A>, (c) 1999 by
<A HREF="mailto:lt@toetsch.at">-lt-</A>.</P>
</DIV>
</BODY>
</HTML>

View File

@ -1,7 +1,10 @@
<!DOCTYPE HTML PUBLIC "-//SoftQuad Software//DTD HoTMetaL PRO 5.0::19981217::extensions to HTML 4.0//EN" "hmpro5.dtd">
<HTML><!-- -*-html_mode-*- -->
<HTML>
<!-- -*-html_mode-*- -->
<HEAD>
<TITLE>Telefonkosten</TITLE>
<TITLE>Telefonkosten - Info</TITLE>
<STYLE TYPE="text/css">
<!--
.t {font-family:Sans Serif;font-size:10pt}
@ -10,50 +13,101 @@ i {color:#000080}
h1,h2,h3,h4,p,td,th,body { font-family:Sans Serif,Arial }
-->
</STYLE>
</HEAD>
<BODY BGCOLOR="#ffffe0">
<H1>Telefonkosten - Info</H1>
<H2>Berechnungsmethode</H2><P>
Die Berechnung der gew&uuml;nschten Verbindung erfolgt nach dem selben Takt-
und Zonenmodell, wie es auch der jeweilige Provider verwendet. Dabei werden auch
Taktwechsel wie z.B. um 18<SUP><font size=-1>00</font></SUP> ber&uuml;cksichtigt. Die Daten
k&ouml;nnen nat&uuml;rlich nur so exakt sein, als die Provider
Information zur Verf&uuml;gung stellen, besonders die Zonentabellen sind
h&auml;ufig ein Geheimnis der Firmen.<p>Wenn Sie also eine Ungenauigkeit
feststellen sollten, teilen Sie uns das bitte mit. Wir sind bem&uuml;ht, die
Daten auf dem letzten Stand zu halten.<p>
<img src="hr.gif" width="600" height=4>
<H2>Autoren und Pfleger der Tarifdaten</H2>
<H1 ALIGN="center">Telefonkosten - Info</H1>
<UL>
<LI><A HREF="#help">Hilfe</A> </LI>
<LI><A HREF="#calc">Berechnungsmethode</A> </LI>
<LI><A HREF="#gloss">Glossar</A> </LI>
<LI><A HREF="#autor">Datenpfleger</A> </LI>
<LI><A HREF="#prog">Programmautoren</A> </LI>
</UL>
<H2><A NAME="help">Hilfe</A></H2>
<P>Die Eingabemasken f&uuml;r Einzelgespr&auml;che und Gespr&auml;chsmix bieten eine Vielzahl von Eingabe- und
Auswahlm&ouml;glichkeiten. Die meisten davon sind aber eher selbsterkl&auml;rend. <BR>
Tats&auml;chlich eingeben m&uuml;ssen Sie nur die Vorwahl, von der aus Sie w&auml;hlen und die Vorwahl des
gew&uuml;nschten Zieles, alle anderen Felder haben eine Standardeinstellung.<BR>
Sollten Sie weitere Information ben&ouml;tigen, klicken Sie einfach auf das<IMG SRC="help.gif" HSPACE="4"
ALIGN="middle" ALT="Fragezeichen" WIDTH="24" HEIGHT="24"> neben dem fraglichen Feld.</P>
<P> Eine &Uuml;bersicht &uuml;ber alle Eingabem&ouml;glichkeiten erhalten Sie <A
HREF="/perl/telrate.cgi?help=3">hier</A>. <IMG SRC="hr.gif" WIDTH="600" HEIGHT="4" ALT="-----"> </P>
<H2><A NAME="calc">Berechnungsmethode</A></H2>
<P> Die Berechnung der gew&uuml;nschten Verbindung erfolgt nach dem selben Takt- und Zonenmodell, wie es der jeweilige
Provider verwendet. Dabei werden auch Takt- oder Geb&uuml;hrenwechsel wie z.B. um 18<SUP><FONT
SIZE="-1">00</FONT></SUP> ber&uuml;cksichtigt. <BR>
Bei Providern, die keinen Sekundentakt verwenden, sind die echten Gepr&auml;chskosten daher oft h&ouml;her als die
theoretischen, durchschnittlichen Minutenpreise, die normalerweise genannt werden.<BR>
Die Daten k&ouml;nnen nat&uuml;rlich nur so exakt sein, als die Provider Informationen zur Verf&uuml;gung stellen,
besonders die Zonentabellen sind h&auml;ufig ein Geheimnis der Firmen.</P>
<P>Wenn Sie also eine Ungenauigkeit feststellen sollten, teilen Sie <A HREF="#autor">uns</A> das bitte mit. Wir sind
bem&uuml;ht, die Daten immer auf dem letzten Stand zu halten, was nebenbei bemerkt durch die Dynamik des Marktes nicht
ganz einfach ist.</P>
<P> <IMG SRC="hr.gif" WIDTH="600" HEIGHT="4" ALT="-----"> </P>
<H2><A NAME="gloss">Glossar</A></H2>
<DL>
<DT>Gespr&auml;chsherstellungsgeb&uuml;hr</DT>
<DD>F&auml;llt bei jedem Gespr&auml;ch zus&auml;tzlich zu der Gespr&auml;chsgeb&uuml;hr an - unabh&auml;ngig von der
Gespr&auml;chsl&auml;nge. </DD>
<DT>Mindestgespr&auml;chsgeb&uuml;hr</DT>
<DD>Sie zahlen zumindest diese Geb&uuml;hr - ist Ihr Gespr&auml;ch teurer fallen keine erh&ouml;hten Kosten an. </DD>
<DT>Minutenpreis</DT>
<DD>Vergleichswert f&uuml;r Gespr&auml;chskosten, ohne weitere Geb&uuml;hren - stimmt bestenfalls dann mit den
wirklichen Kosten &uuml;berein, wenn 60 durch den Takt ohne Rest teilbar ist. </DD>
<DT>Tag / Zeit</DT>
<DD>Einige Povider verrechnen pro Tageszeit / Wochentag unterschiedliche Preise, andere haben Einheitspreise. </DD>
<DT>Takt</DT>
<DD>Bei jedem Taktimpuls erh&ouml;ht sich der Gespr&auml;chspreis um die Geb&uuml;hreneinheit. Je k&uuml;rzer der Takt,
umso genauer die Abrechnung. <BR>
Bei einem Takt von 60 Sekunden und einer durchschnittlichen Gespr&auml;chszeit von einer Minute sind die
Gespr&auml;chskosten im Schnitt um 50 % h&ouml;her, als bei sekundengenauer Abrechnung. </DD>
<DT>Takt 60/1</DT>
<DD>Sie zahlen auf jeden Fall die erste Minute, auch wenn sie k&uuml;rzer telefonieren, nach der ersten Minute wird
sekundengenau abgerechnet. </DD>
<DT>Takt <I>n</I>/<I>m</I></DT>
<DD>Allgemein, sie zahlen zumindest <I>n</I> Sekunden, am Ende des Gespr&auml;chs ist der Takt dann <I>m</I> Sekunden.
</DD>
<DT>Variabler Takt</DT>
<DD>Die Taktl&auml;nge ist nicht konstant, sondern &auml;ndert sich mit der Tageszeit. </DD>
<DT>Zone</DT>
<DD>Gebiet mit gleichen Geb&uuml;hren, von Provider zu Provider unterschiedlich. Im Inland verzichten immer mehr
Provider auf eine Unterteilung in Zonen. </DD>
</DL>
<IMG SRC="hr.gif" WIDTH="600" HEIGHT="4" ALT="-----"> <H2><A NAME="autor">Pfleger der Tarifdaten</A></H2>
<H3>&Ouml;sterreich</H3>
<UL>
<LI><A href="mailto:reinelt@eurnet.at">Michael Reinelt</A>
<LI><A href="mailto:lt@toetsch.at">Leopold T&ouml;tsch</A>
<LI><A HREF="mailto:reinelt@eurnet.at">Michael Reinelt</A> </LI>
<LI><A HREF="mailto:lt@toetsch.at">Leopold T&ouml;tsch</A> </LI>
</UL>
<P></P>
<H3>Deutschland</H3>
<UL>
<LI><A href="mailto:joe@mbs.gtn.com">Jochen Erwied</A>
<LI><A href="mailto:akool@isdn4linux.de">Andreas Kool</A>
<LI><A href="mailto:awkwar@digitalprojects.de">Alexander Skwar</A>
<LI><A HREF="mailto:joe@mbs.gtn.com">Jochen Erwied</A> </LI>
<LI><A HREF="mailto:akool@isdn4linux.de">Andreas Kool</A> </LI>
<LI><A HREF="mailto:awkwar@digitalprojects.de">Alexander Skwar</A> </LI>
</UL>
<H3>Niederlande</H3>
<UL>
<LI><A href="mailto:paul@isdn4linux.de">Paul Slootman</A>
<LI><A HREF="mailto:paul@isdn4linux.de">Paul Slootman</A> </LI>
</UL>
<img src="hr.gif" width="600" height=4>
<p>
<A HREF="/telrate/index.html">Startseite <IMG WIDTH="60" HSPACE="8" HEIGHT="39"
BORDER="0" SRC="/telrate/start.jpg"></A>
&nbsp;&nbsp;
<A HREF="/perl/isdnrate">Einzelgespr&auml;ch <IMG WIDTH="60" HSPACE="8"
HEIGHT="39" BORDER="0" SRC="/telrate/eg0.jpg"></A>
&nbsp;&nbsp;
<A HREF="/perl/isdnrate?mix=10">Gespr&auml;chsmix <IMG WIDTH="80" HSPACE="8"
HEIGHT="39" BORDER="0" SRC="/telrate/gm0.jpg"></A>
<H2><A NAME="prog">Programmautoren</A></H2>
<UL>
<LI><A HREF="mailto:akool@isdn4linux.de">Andreas Kool</A> </LI>
<LI><A HREF="mailto:reinelt@eurnet.at">Michael Reinelt</A> </LI>
<LI><A HREF="mailto:lt@toetsch.at">Leopold T&ouml;tsch</A> </LI>
</UL>
<IMG SRC="hr.gif" WIDTH="600" HEIGHT="4" ALT="-----">
<P>
<A HREF="/telrate/index.html">Startseite
<IMG WIDTH="80" HSPACE="4" HEIGHT="40" BORDER="0" SRC="/telrate/start.jpg" ALT="Startseite"></A> &nbsp;
<A HREF="/perl/telrate.cgi">Einzelgespr&auml;ch
<IMG WIDTH="80" HSPACE="4" HEIGHT="40" BORDER="0" SRC="/telrate/eg0.jpg" ALT="Einzelgespr&auml;ch"></A> &nbsp;
<A HREF="/perl/telrate.cgi?mix=10">Gespr&auml;chsmix
<IMG WIDTH="80" HSPACE="4" HEIGHT="40" BORDER="0" SRC="/telrate/gm0.jpg" ALT="Gespr&auml;chsmix"></A> &nbsp;
<A HREF="/perl/telrate.cgi?list=1">Providerliste
<IMG WIDTH="80" HSPACE="4" HEIGHT="40" BORDER="0" SRC="/telrate/list0.jpg" ALT="Providerliste"></A> </P>
</BODY>
</HTML>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -94,8 +94,8 @@ test:
#
zonefiles: AT DE NL
AT: AT-pta AT-1002 AT-1007 AT-1012 AT-1024 AT-1066
.PHONY: AT-pta AT-1002 AT-1007 AT-1012 AT-1024 AT-1066
AT: AT-pta AT-1002 AT-1007 AT-1012 AT-1024 AT-1066 AT-1004
.PHONY: AT-pta AT-1002 AT-1007 AT-1012 AT-1024 AT-1066 AT-1004
AT-pta:
$(BZIP2) -d at/pta/zred.pta.bz2
@ -106,6 +106,10 @@ AT-1002:
$(BZIP2) -d at/uta/zred.uta.bz2
./$(PROGRAM) -d ../../zone-at-uta$(DBEXT) -r at/uta/zred.uta -c at/code -v
$(BZIP2) -9 at/uta/zred.uta
AT-1004:
$(BZIP2) -d at/1004/zred.bz2
./$(PROGRAM) -d ../../zone-at-1004$(DBEXT) -r at/1004/zred -c at/code -v
$(BZIP2) -9 at/1004/zred
AT-1007:
$(BZIP2) -d at/1007/zred.bz2
./$(PROGRAM) -d ../../zone-at-1007$(DBEXT) -r at/1007/zred -c at/code -v

BIN
isdnlog/zone-at-1004.gdbm Normal file

Binary file not shown.