- isdnlog Version 3.08
- more tesion)) Tarife from Michael Graw <Michael.Graw@bartlmae.de> - use "bunzip -f" from Franz Elsner <Elsner@zrz.TU-Berlin.DE> - show another "cheapest" hint if provider is overloaded ("OVERLOAD") - "make install" now makes the required entry [GLOBAL] AREADIFF = /usr/lib/isdn/vorwahl.dat - README: Syntax description of the new "rate-at.dat" - better integration of "sondernummern.c" from mario.joussen@post.rwth-aachen.de - server.c: buffer overrun fix from Michael.Weber@Post.RWTH-Aachen.DE (Michael Weber)
This commit is contained in:
parent
785060acd2
commit
59927aefa9
|
@ -19,6 +19,13 @@
|
|||
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
##
|
||||
## $Log$
|
||||
## Revision 1.60 1999/03/16 17:37:08 akool
|
||||
## - isdnlog Version 3.07
|
||||
## - Michael Reinelt's patch as of 16Mar99 06:58:58
|
||||
## - fix a fix from yesterday with sondernummern
|
||||
## - ignore "" COLP/CLIP messages
|
||||
## - dont show a LCR-Hint, if same price
|
||||
##
|
||||
## Revision 1.59 1999/03/15 21:27:30 akool
|
||||
## - isdnlog Version 3.06
|
||||
## - README: explain some terms about LCR, corrected "-c" Option of "isdnconf"
|
||||
|
@ -396,7 +403,7 @@ INSTALL_BIN := $(INSTALL) -m 0755 -o 0 -g 0
|
|||
INSTALL_DATA := $(INSTALL) -m 0644 -o 0 -g 0
|
||||
|
||||
BZIP2 := @BZIP2@
|
||||
BUNZIP2 := $(BZIP2) -d
|
||||
BUNZIP2 := $(BZIP2) -f -d
|
||||
|
||||
LIBISDNDIR := @LIBISDNDIR@
|
||||
I4LCONFDIR := @I4LCONFDIR@
|
||||
|
@ -423,6 +430,7 @@ export COUNTRYCODE := @COUNTRYCODE@
|
|||
export COUNTRYPREFIX := @COUNTRYPREFIX@
|
||||
export AREACODE := @AREACODE@
|
||||
export AREAPREFIX := @AREAPREFIX@
|
||||
export AREADIFF := @DATADIR@/vorwahl.dat
|
||||
|
||||
export ILABEL := %b %e %T %ICall to tei %t from %N2 on %n2
|
||||
export OLABEL := %b %e %T %Itei %t calling %N2 with %n2
|
||||
|
@ -464,7 +472,7 @@ SERVICEFILE = /etc/services
|
|||
# DON'T EDIT BELOW THIS LINE
|
||||
######################################################################
|
||||
|
||||
VERSION = 3.07
|
||||
VERSION = 3.08
|
||||
|
||||
MANPAGES = isdnlog/callerid.conf.5 isdnlog/isdn.conf.5 isdnlog/isdnformat.5 isdnlog/isdnlog.5 isdnlog/isdnlog.8 isdnlog/isdnlog.users.5 isdnrep/isdnrep.1 isdnconf/isdnconf.1
|
||||
|
||||
|
@ -489,7 +497,6 @@ DEFS += \
|
|||
-DVERSION=\"$(VERSION)\" \
|
||||
-DI4LVERSION=\"$(I4LVERSION)\" \
|
||||
-D@NATION_MACRO@=1 \
|
||||
-DDATADIR=\"$(DATADIR)\" \
|
||||
$(INCLUDE)
|
||||
|
||||
%.o: %.c
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
ISDNLOG - Version 3.06 - 15-Mar-99 22:05
|
||||
ISDNLOG - Version 3.08 - 18-Mar-99 22:27
|
||||
|
||||
|
||||
isdnlog ist ein Utility zur Auswertung des D-Kanals eines
|
||||
ISDN-BRI Anschlusses.
|
||||
|
||||
isdnlog-3.05 wurde ausgiebig mit Linux-2.0.36 getestet.
|
||||
isdnlog-3.08 wurde ausgiebig mit Linux-2.0.36 getestet.
|
||||
|
||||
|
||||
Fuer alle, die es nun ueberhaupt nicht mehr abwarten koennen, hier das
|
||||
|
@ -55,11 +55,6 @@ Quick-Installation-Guide
|
|||
ZONE = 1
|
||||
|
||||
|
||||
3.1
|
||||
[GLOBAL]
|
||||
AREADIFF = /usr/lib/isdn/vorwahl.dat
|
||||
|
||||
|
||||
4. isdn4linux das D-Kanal-Protokoll entlocken:
|
||||
|
||||
hisaxctrl <DriverID> 1 4
|
||||
|
@ -1217,7 +1212,7 @@ ZONE = 5
|
|||
|
||||
|
||||
Dieser Eintrag kann seit der Version 3.0 ersatzlos entfallen, da isdnlog
|
||||
seitdem eine eigene Verzonungstabelle enth„lt, d.h. selbststaendig in der
|
||||
seitdem eine eigene Verzonungstabelle enthaelt, d.h. selbststaendig in der
|
||||
Lage ist, die Zone des Gegners zu ermitteln.
|
||||
|
||||
|
||||
|
@ -2354,7 +2349,7 @@ angegeben werden.
|
|||
(keyboard={yes|no})
|
||||
|
||||
-ix isdnlog laeuft an einem internen S0-Bus
|
||||
Mit x wird dabei die Mindestanzahl Ziffern f<EFBFBD>r eine externe
|
||||
Mit x wird dabei die Mindestanzahl Ziffern fuer eine externe
|
||||
Telefonnummer angegeben. Arbeitet die Anlage also z.b. mit 2-stelligen
|
||||
internen Teilnehmernummern. sollte hier 3 angegeben werden.
|
||||
(interns0="value")
|
||||
|
@ -2380,10 +2375,10 @@ angegeben werden.
|
|||
|
||||
Meine TK-Anlage signalisiert bei einem reinkommenden Gespraech
|
||||
aus Hamburg diese Nummer als "00040..." Bei einem rausgehenden
|
||||
Gespr„ch nach Hamburg wird die Nummer als "0040..." signalisiert.
|
||||
Gespraech nach Hamburg wird die Nummer als "0040..." signalisiert.
|
||||
|
||||
Da eine Nummer innerhalb Deutschlands ohne fuehrende "0"
|
||||
weiterverarbeitet wird (bei einer Nummer im Ausland muá eine
|
||||
weiterverarbeitet wird (bei einer Nummer im Ausland muss eine
|
||||
fuehrende "0" uebrigbleiben), muessen dementsprechend bei
|
||||
reinkommenden Gespaechen 3, bei rausgehenden Gespraechen 2
|
||||
vorlaufende "0" entfernt werden, um die Normalform zu erreichen.
|
||||
|
@ -3962,6 +3957,44 @@ die Kennzahl "98" den Tarif der Fa. Mox Telecom AG meint.
|
|||
: - Sonderbehandlung von 24. Dezember bis 31. Dezember (Telekom)
|
||||
|
||||
|
||||
Z.Zt. ist eine neue, verbesserte/erweiterte Version der "tarif.dat" Names
|
||||
"rate-xx.dat" (xx == Laenderkennung: de, at usw.) in Arbeit.
|
||||
|
||||
Im folgenden eine vorlaeufige Syntaxbeschreibung:
|
||||
|
||||
V:Versionsstring (Vorschlag: 1.0-Germany [18-Mar-1999])
|
||||
P:Nummer[,variante] Name (zwischen Nummer und Name kann auch ein '='
|
||||
stehen, aber mir gefaellts mit Blanks und Tabs besser)
|
||||
Z:Nummer Name (ebenfalls wahlweise '=', die Reihenfolge ist egal, es
|
||||
muessen auch nicht alle Zonen vorkommen, es gibt auch ein Zone.used)
|
||||
T:Tag/Zeit=Kosten[,Kosten] Name
|
||||
wobei Tag in der Form 1-5 oder 1,2,3,4,5 stehen kann, 1=Montag, es gibt
|
||||
noch * fuer alle Tage und H für Holiday=Feiertag (die anderen
|
||||
Bezeichnungen E=Weekend (5-7 oder 6-7?) und F fuer Feiertag (Freitag?)
|
||||
sind mißverständlich und wuerde ich nicht verwenden)
|
||||
die Zeit sieht aehnlich aus, 8-12 oder 8,9,10,11 oder 8-12,13-17 ACHTUNG:
|
||||
8-12 bedeutet 8:00 bis 11:59!!! Ich hatte das vorher anders, aber das
|
||||
sieht komisch aus: einmal 8-11, naechste Zeile 12-12 usw.
|
||||
Kosten: Kosten einer Einheit/Dauer der Einheit z.B. 0.56/30; Kosten und
|
||||
Dauer sind doubles; bei mehreren Kosten kann/soll die Verzoegerung, nach
|
||||
der auf den naechsten Kostenwert gewechselt werden soll, mit ':'getrennt
|
||||
angegeben werden
|
||||
z.B. 0.56/30:600,0.56/60 heisst: zuerst alle 30 sekunden, nach 10 min
|
||||
alle 60 sekunden
|
||||
Wenn das delay nicht angegeben wird, wird die Taktdauer als delay
|
||||
verwendet (d.h. die Kosten gelten nur fuer eine Einheit)
|
||||
Der letzte Kosteneintrag darf kein delay haben!
|
||||
Sonderfaelle:
|
||||
Grundkosten pro Gespraech:
|
||||
1.0/0,0.40/30: 1 DM pro Verbindung, danach alle 30 Sekunden eine Einheit
|
||||
zu 40 Pfennig
|
||||
Freie Gespraechszeit:
|
||||
0/10,0.50/30: 10 Sekunden mit 0 DM, dann alle 30 sekunden 50 Pf
|
||||
Vergiss nicht den Namen des Tarifs!
|
||||
z.B.
|
||||
1-5/6-8=0.10/600 Morgenstund hat Kopfweh
|
||||
|
||||
|
||||
18. LCR (Least cost router)
|
||||
---------------------------
|
||||
|
||||
|
@ -3982,7 +4015,7 @@ in den USA gelaeufiger Begriff auf: das LCR, Least cost routing, d.h. die
|
|||
Auswahl des guenstigsten Providers fuer eine gleich entstehende Verbindung.
|
||||
|
||||
|
||||
Dazu muá folgendermaáen gewaehlt werden:
|
||||
Dazu muss folgendermassen gewaehlt werden:
|
||||
|
||||
|
||||
010 xxx 49 69 123456
|
||||
|
@ -4020,7 +4053,7 @@ D.h. die schoenen "Leistungsmerkmale" AOCD sowie AOCE funktionieren _nicht_
|
|||
mehr.
|
||||
|
||||
Daher macht es per heute (1999) wirklich absolut keinen Sinn mehr, einen
|
||||
ISDN-Komfort-Anschluá zu beantragen! Das dort enthaltene "Leitungsmerkmal"
|
||||
ISDN-Komfort-Anschluss zu beantragen! Das dort enthaltene "Leitungsmerkmal"
|
||||
Gebuehreninformationen waehrend der Verbindung wird sowieso nur noch bei
|
||||
Verbindungen ueber die DTAG erbracht (da die DTAG meistens die teuerste
|
||||
Gesellschaft ist, kommt das also praktisch nie mehr vor ...)
|
||||
|
@ -4055,7 +4088,7 @@ Was kann nun isdnlog (ab der Version 3.x) mit dieser neuen Situation anstellen?
|
|||
|
||||
- diverse Telefongesellschaften arbeiten mittlerweile mit sog.
|
||||
Resellern - Firmen, die unter derselben Verbindungsnetzbetreiberauswahl
|
||||
zu unterschiedlichen Tarifen Telefondienste anbieten. Hierzu muá man
|
||||
zu unterschiedlichen Tarifen Telefondienste anbieten. Hierzu muss man
|
||||
sich bei einem der Reseller zuerst anmelden - meistens kostenlos.
|
||||
|
||||
Zum Beispiel hat die Firma Star Telecom die
|
||||
|
@ -4067,13 +4100,13 @@ Was kann nun isdnlog (ab der Version 3.x) mit dieser neuen Situation anstellen?
|
|||
Nikoma, Mox sowie C@llas
|
||||
|
||||
Ist man gewillt, ueber eine dieser drei Firmen zu telefonieren,
|
||||
muá man sich zuerst dort anmelden. Erschwerend kommt hinzu, dass alle
|
||||
muss man sich zuerst dort anmelden. Erschwerend kommt hinzu, dass alle
|
||||
diese Firmen noch unterschiedliche Tarif-Varianten anbieten:
|
||||
|
||||
- Abrechnung im Minutentakt
|
||||
- Abrechnung im Sekundentakt, dafuer etwas teurer
|
||||
- besondere Abrechnung, wenn man in einer sog. Superregion, d.h.
|
||||
einer Groástadt wie Frankfurt, Muenchen, Hamburg, Stuttgart usw.
|
||||
einer Grossstadt wie Frankfurt, Muenchen, Hamburg, Stuttgart usw.
|
||||
wohnt.
|
||||
|
||||
Da jedoch alles oben genannte ueber ein und dieselbe
|
||||
|
@ -4085,7 +4118,7 @@ Was kann nun isdnlog (ab der Version 3.x) mit dieser neuen Situation anstellen?
|
|||
Daher sieht isdnlog in der Datei "/etc/isdn/tarif.conf" nach,
|
||||
welcher konkrete Provider sowie welche konkrete Tarifvariante
|
||||
gemeint ist, wenn z.b. die Nummer 01098 auftaucht.
|
||||
Diese Datei muá dementspechend jeder entsprechend seiner eigenen
|
||||
Diese Datei muss dementspechend jeder entsprechend seiner eigenen
|
||||
Situation fuellen.
|
||||
|
||||
2. Anhand des ermittelten Providers kann isdnlog nun berechnen, was dieser
|
||||
|
|
|
@ -20,6 +20,11 @@
|
|||
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
##
|
||||
## $Log$
|
||||
## Revision 1.7 1997/05/28 21:22:47 luethje
|
||||
## isdnlog option -b is working again ;-)
|
||||
## isdnlog has new \$x variables
|
||||
## README completed
|
||||
##
|
||||
## Revision 1.6 1997/05/19 22:58:13 luethje
|
||||
## - bugfix: it is possible to install isdnlog now
|
||||
## - improved performance for read files for vbox files and mgetty files.
|
||||
|
@ -96,6 +101,7 @@ else
|
|||
echo -n "Adding some entries to the config file \"$CONFFILE\"..."
|
||||
fi
|
||||
|
||||
setentry "[GLOBAL]" "AREADIFF" "$AREADIFF"
|
||||
setentry "[GLOBAL]" "AREACODE" "$AREACODE"
|
||||
setentry "[GLOBAL]" "AREAPREFIX" "$AREAPREFIX"
|
||||
setentry "[GLOBAL]" "COUNTRYCODE" "$COUNTRYCODE"
|
||||
|
|
|
@ -20,6 +20,15 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.14 1999/03/15 21:27:48 akool
|
||||
* - isdnlog Version 3.06
|
||||
* - README: explain some terms about LCR, corrected "-c" Option of "isdnconf"
|
||||
* - isdnconf: added a small LCR-feature - simply try "isdnconf -c 069"
|
||||
* - isdnlog: dont change CHARGEINT, if rate is't known!
|
||||
* - sonderrufnummern 1.02 [15-Mar-99] :: added WorldCom
|
||||
* - tarif.dat 1.09 [15-Mar-99] :: added WorldCom
|
||||
* - isdnlog now correctly handles the new "Ortstarif-Zugang" of UUnet
|
||||
*
|
||||
* Revision 1.13 1999/03/07 18:18:42 akool
|
||||
* - new 01805 tarif of DTAG
|
||||
* - new March 1999 tarife
|
||||
|
@ -672,7 +681,7 @@ int main(int argc, char *argv[], char *envp[])
|
|||
int len, i, zone;
|
||||
|
||||
|
||||
(void)initSondernummern(msg);
|
||||
initSondernummern(msg);
|
||||
/* print_msg(PRT_NORMAL, "%s\n", msg); */
|
||||
initTarife(msg);
|
||||
/* print_msg(PRT_NORMAL, "%s\n", msg); */
|
||||
|
@ -682,10 +691,11 @@ int main(int argc, char *argv[], char *envp[])
|
|||
if (!isdnmon)
|
||||
{
|
||||
const char *area;
|
||||
auto char info[BUFSIZ];
|
||||
|
||||
|
||||
if ((i = is_sondernummer(areacode, DTAG)) > -1) {
|
||||
print_msg(PRT_NORMAL, "%s\n", SN[i].info);
|
||||
print_msg(PRT_NORMAL, "%s\n", sondernummername(i));
|
||||
|
||||
if (!memcmp(areacode, "01610", 5) ||
|
||||
!memcmp(areacode, "01617", 5) ||
|
||||
|
@ -715,7 +725,7 @@ int main(int argc, char *argv[], char *envp[])
|
|||
print_msg(PRT_NORMAL,"%s%s%s\n",ptr,area[0] != '\0'?" / ":"", area[0] != '\0'?area:"");
|
||||
} /* else */
|
||||
|
||||
showcheapest(zone, 181);
|
||||
showcheapest(zone, 181, -1, info);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,13 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.36 1999/03/14 14:26:28 akool
|
||||
* - isdnlog Version 3.05
|
||||
* - new Option "-u1" (or "ignoreRR=1")
|
||||
* - added version information to "sonderrufnummern.dat"
|
||||
* - added debug messages if sonderrufnummern.dat or tarif.dat could not be opened
|
||||
* - sonderrufnummern.dat V 1.01 - new 01805 rates
|
||||
*
|
||||
* Revision 1.35 1999/02/28 19:32:38 akool
|
||||
* Fixed a typo in isdnconf.c from Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||
* CHARGEMAX fix from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
|
||||
|
@ -1174,12 +1181,12 @@ int main(int argc, char *argv[], char *envp[])
|
|||
#endif
|
||||
print_msg(PRT_NORMAL, "%s Version %s starting\n", myshortname, VERSION);
|
||||
|
||||
if ((i = initSondernummern(msg)) > -1) {
|
||||
initSondernummern(msg);
|
||||
|
||||
#ifdef Q931
|
||||
if (!q931dmp)
|
||||
#endif
|
||||
print_msg(PRT_NORMAL, "%s\n", msg);
|
||||
} /* if */
|
||||
|
||||
if (readconfig(myshortname) < 0)
|
||||
Exit(30);
|
||||
|
|
|
@ -19,6 +19,13 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.44 1999/03/16 17:37:18 akool
|
||||
* - isdnlog Version 3.07
|
||||
* - Michael Reinelt's patch as of 16Mar99 06:58:58
|
||||
* - fix a fix from yesterday with sondernummern
|
||||
* - ignore "" COLP/CLIP messages
|
||||
* - dont show a LCR-Hint, if same price
|
||||
*
|
||||
* Revision 1.43 1999/03/15 21:27:58 akool
|
||||
* - isdnlog Version 3.06
|
||||
* - README: explain some terms about LCR, corrected "-c" Option of "isdnconf"
|
||||
|
@ -751,15 +758,20 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
#endif
|
||||
|
||||
if (!dir && (who == CALLED)) {
|
||||
*sondernummer = is_sondernummer(num, DTAG); /* try with DTAG, these provider must support them all (i think) */
|
||||
*sondernummer = is_sondernummer(num, *provider);
|
||||
|
||||
if (*sondernummer == UNKNOWN)
|
||||
*sondernummer = is_sondernummer(num, *provider);
|
||||
*sondernummer = is_sondernummer(num, DTAG); /* try with DTAG, these provider must support them all (i think) */
|
||||
|
||||
#ifdef 0
|
||||
/* Das ist doch totaler Bloedsinn, oder?
|
||||
* Schliesslich ist in *sondernummer doch der Index des Tabelleneintrags
|
||||
* gespeichert. Den kann man doch nicht einfach auf 1 setzten. */
|
||||
if (*sondernummer == UNKNOWN) {
|
||||
if (!memcmp(num, "019", 3)) /* anything like 019xx is a Sondernummer! */
|
||||
*sondernummer = 1;
|
||||
} /* if */
|
||||
#endif
|
||||
|
||||
} /* if */
|
||||
|
||||
|
@ -770,7 +782,8 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
if (*sondernummer != UNKNOWN) {
|
||||
auto char s[256];
|
||||
|
||||
sprintf(s, "(Sonderrufnummer %s : %s)", num, sondernummername(num, DTAG));
|
||||
sprintf(s, "(Sonderrufnummer %s : %s)", num,
|
||||
sondernummername(*sondernummer));
|
||||
Q931dump(TYPE_STRING, -1, s, version);
|
||||
} /* if */
|
||||
|
||||
|
@ -4705,10 +4718,23 @@ doppelt:break;
|
|||
strcat(sx, location(call[chan].loc));
|
||||
strcat(sx, ")");
|
||||
} /* if */
|
||||
|
||||
} /* if */
|
||||
|
||||
info(chan, PRT_SHOWHANGUP, STATE_HANGUP, sx);
|
||||
|
||||
if ((call[chan].cause == 0x22) && /* No circuit/channel available */
|
||||
((call[chan].loc == 2) || /* Public network serving local user */
|
||||
(call[chan].loc == 3))) { /* Transit network */
|
||||
auto char s[BUFSIZ], s1[BUFSIZ];
|
||||
|
||||
showcheapest(call[chan].zone, 181, call[chan].provider, s1);
|
||||
|
||||
sprintf(s, "OVERLOAD %s", s1);
|
||||
|
||||
info(chan, PRT_SHOWHANGUP, STATE_HANGUP, s);
|
||||
} /* if */
|
||||
|
||||
if (OUTGOING && ((c = call[chan].confentry[OTHER]) > -1)) {
|
||||
if (chargemax != 0.0) {
|
||||
sprintf(sx, "CHARGEMAX total=%s %s today=%s %s remaining=%s %s",
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
*
|
||||
* ISDN accounting for isdn4linux.
|
||||
*
|
||||
* Copyright 1996 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Copyright 1996, 1999 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* and Andreas Kool (akool@isdn4linux.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -19,6 +20,12 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.4 1998/09/22 20:59:22 luethje
|
||||
* isdnrep: -fixed wrong provider report
|
||||
* -fixed wrong html output for provider report
|
||||
* -fixed strange html output
|
||||
* kisdnlog: -fixed "1001 message window" bug ;-)
|
||||
*
|
||||
* Revision 1.3 1998/03/08 11:42:58 luethje
|
||||
* I4L-Meeting Wuerzburg final Edition, golden code - Service Pack number One
|
||||
*
|
||||
|
@ -358,7 +365,7 @@ int print_from_server(char *String)
|
|||
tm_time->tm_isdst = 0;
|
||||
|
||||
strftime(NewString,LONG_STRING_SIZE,"%b %d %X ",tm_time);
|
||||
strcat(NewString,String);
|
||||
strncat(NewString, String, sizeof(NewString) - strlen(NewString) - 1);
|
||||
|
||||
if ((RetCode = String_For_Output(NewString)) < 0)
|
||||
return RetCode;
|
||||
|
|
|
@ -19,6 +19,13 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.4 1999/03/14 14:26:51 akool
|
||||
* - isdnlog Version 3.05
|
||||
* - new Option "-u1" (or "ignoreRR=1")
|
||||
* - added version information to "sonderrufnummern.dat"
|
||||
* - added debug messages if sonderrufnummern.dat or tarif.dat could not be opened
|
||||
* - sonderrufnummern.dat V 1.01 - new 01805 rates
|
||||
*
|
||||
* Revision 1.3 1999/03/10 08:35:57 paul
|
||||
* use DATADIR from "make config" phase instead of hardcoded /usr/lib/isdn
|
||||
*
|
||||
|
@ -53,10 +60,9 @@
|
|||
/*
|
||||
* Schnittstelle:
|
||||
*
|
||||
* int initSondernummern(char *info)
|
||||
* initialisiert die Sonderrufnummerndatenbank, liefert die Anzahl der
|
||||
* eingelesenen Datensaetze zurueck oder im Fehlerfall -1
|
||||
* liefert Versionsinfo in `info' zurueck
|
||||
* void initSondernummern(char *msg)
|
||||
* initialisiert die Sonderrufnummerndatenbank, liefert Versionsinfo bzw.
|
||||
* in Fehlermeldung in msg zurueck
|
||||
*
|
||||
* void exitSondernummern()
|
||||
* deinitialisiert die Sonderrufnummerndatenbank
|
||||
|
@ -65,11 +71,19 @@
|
|||
* liefert die Nummer des ersten passenden Datensatzes zurueck oder -1 im
|
||||
* Fehlerfall
|
||||
*
|
||||
* char *sondernummername(char *number, int provider)
|
||||
* liefert die Beschreibung des ersten passenden Datensatzes zurueck oder
|
||||
* NULL im Fehlerfall
|
||||
* char *sondernummername(int index)
|
||||
* liefert die Beschreibung des entsprecheden Datensatzes zurueck oder NULL
|
||||
* im Fehlerfall
|
||||
*
|
||||
* double sonderpreis(time_t connect, int duration, char *number, int provider)
|
||||
* char *sondernum(int index)
|
||||
* liefert die Sondernummer des entsprechenden Datensatzes zurueck oder NULL
|
||||
* im Fehlerfall
|
||||
*
|
||||
* int sondertarif(int index)
|
||||
* liefert den Tarif des entsprechenden Datensatzes zurueck oder SO_FAIL
|
||||
* im Fehlerfall
|
||||
*
|
||||
* double sonderpreis(time_t connect, int duration, int index)
|
||||
* liefert folgendes zurueck:
|
||||
* -3 -> Fehler
|
||||
* -2 -> Preis nicht bekannt
|
||||
|
@ -77,7 +91,7 @@
|
|||
* 0 -> FreeCall
|
||||
* >0 -> für das angegebene Gespraech angefallene Kosten
|
||||
*
|
||||
* double sondertaktlaenge(time_t connect, char *number, int provider, int *next)
|
||||
* double sondertaktlaenge(time_t connect, int index, int *next)
|
||||
* liefert folgendes zurueck:
|
||||
* -3 -> Fehler
|
||||
* -2 -> Taktlaenge nicht bekannt
|
||||
|
@ -95,13 +109,14 @@
|
|||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <math.h>
|
||||
#include <errno.h>
|
||||
#else
|
||||
#include "isdnlog.h"
|
||||
#endif
|
||||
|
||||
#ifdef STANDALONE
|
||||
|
||||
#undef DATADIR /* already defined via -DDATADIR=... */
|
||||
#undef DATADIR /* already defined via policy.h */
|
||||
#define DATADIR ".."
|
||||
|
||||
#define SO_FAIL -3
|
||||
|
@ -125,6 +140,7 @@ typedef struct {
|
|||
SonderNummern *SN;
|
||||
int nSN;
|
||||
int interns0 = 0;
|
||||
double currency_factor = 0.12;
|
||||
#endif
|
||||
|
||||
#define WA 0
|
||||
|
@ -144,7 +160,7 @@ char *strip(char *s)
|
|||
return s;
|
||||
}
|
||||
|
||||
int initSondernummern(char *msg)
|
||||
void initSondernummern(char *msg)
|
||||
{
|
||||
char *s, *t, *pos, *number, *info, fn[BUFSIZ], version[BUFSIZ];
|
||||
int provider, tarif, tday, tbegin, tend;
|
||||
|
@ -153,7 +169,7 @@ int initSondernummern(char *msg)
|
|||
double grund, takt;
|
||||
|
||||
|
||||
SN = NULL; nSN = 0;
|
||||
SN = NULL; nSN = 0; strcpy(version, "unknown");
|
||||
|
||||
sprintf(fn, "%s/sonderrufnummern.dat", DATADIR);
|
||||
f = fopen(fn, "r");
|
||||
|
@ -224,13 +240,12 @@ int initSondernummern(char *msg)
|
|||
}
|
||||
}
|
||||
fclose(f);
|
||||
sprintf(msg, "Sonderrufnummern Version %s loaded [%d entries]", version, nSN);
|
||||
return(nSN);
|
||||
}
|
||||
else {
|
||||
sprintf(msg, "*** Cannot load Sonderrufnummern (%s : %d)", fn, errno);
|
||||
return(-1);
|
||||
sprintf(msg, "Sonderrufnummern Version %s loaded [%d entries]", version,
|
||||
nSN);
|
||||
}
|
||||
else
|
||||
sprintf(msg, "*** Cannot load Sonderrufnummern (%s : %s)", fn,
|
||||
strerror(errno));
|
||||
}
|
||||
|
||||
void exitSondernummern()
|
||||
|
@ -244,7 +259,8 @@ int is_sondernummer(char *number, int provider)
|
|||
{
|
||||
int i;
|
||||
|
||||
if ((strlen(number) >= interns0) && ((*number == '0') || (*number == '1')))
|
||||
if ((strlen(number) >= interns0) && ((*number == '0') || (*number == '1') ||
|
||||
(*number == '2')))
|
||||
for (i = 0; i < nSN; i++)
|
||||
if ((strncmp(number, SN[i].number, strlen(SN[i].number)) == 0) &&
|
||||
(provider == SN[i].provider))
|
||||
|
@ -253,46 +269,63 @@ int is_sondernummer(char *number, int provider)
|
|||
return(-1);
|
||||
}
|
||||
|
||||
char *sondernummername(char *number, int provider)
|
||||
char *sondernummername(int index)
|
||||
{
|
||||
int i;
|
||||
|
||||
if ((i = is_sondernummer(number, provider)) != -1)
|
||||
return(SN[i].info);
|
||||
if ((index > -1) && (index < nSN))
|
||||
return(SN[index].info);
|
||||
else
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
int searchentry(time_t connect, char *number, int provider)
|
||||
char *sondernum(int index)
|
||||
{
|
||||
int i;
|
||||
struct tm *t;
|
||||
|
||||
if ((i = is_sondernummer(number, provider)) != -1) {
|
||||
t = localtime(&connect);
|
||||
while ((strncmp(number, SN[i].number, strlen(SN[i].number)) == 0) &&
|
||||
(provider == SN[i].provider) &&
|
||||
!(((SN[i].tday == WA) ||
|
||||
((SN[i].tday == WE) && ((t->tm_wday == 0) || (t->tm_wday == 6))) ||
|
||||
((SN[i].tday == WT) && (t->tm_wday >= 1) && (t->tm_wday <= 5))) &&
|
||||
((SN[i].tbegin == -1) ||
|
||||
((t->tm_hour >= SN[i].tbegin) && (t->tm_hour < SN[i].tend)))))
|
||||
i++;
|
||||
}
|
||||
return(i);
|
||||
if ((index > -1) && (index < nSN))
|
||||
return(SN[index].number);
|
||||
else
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
double sonderpreis(time_t connect, int duration, char *number, int provider)
|
||||
int sondertarif(int index)
|
||||
{
|
||||
if ((index > -1) && (index < nSN))
|
||||
return(SN[index].tarif);
|
||||
else
|
||||
return(SO_FAIL);
|
||||
}
|
||||
|
||||
int searchentry(time_t connect, int index)
|
||||
{
|
||||
int provider;
|
||||
char *number;
|
||||
struct tm *t;
|
||||
|
||||
if (index != -1) {
|
||||
number = SN[index].number;
|
||||
provider = SN[index].provider;
|
||||
t = localtime(&connect);
|
||||
while ((strncmp(number, SN[index].number, strlen(SN[index].number)) == 0)
|
||||
&& (provider == SN[index].provider) &&
|
||||
!(((SN[index].tday == WA) ||
|
||||
((SN[index].tday == WE) && ((t->tm_wday == 0) || (t->tm_wday == 6))) ||
|
||||
((SN[index].tday == WT) && (t->tm_wday >= 1) && (t->tm_wday <= 5))) &&
|
||||
((SN[index].tbegin == -1) ||
|
||||
((t->tm_hour >= SN[index].tbegin) && (t->tm_hour < SN[index].tend)))))
|
||||
index++;
|
||||
}
|
||||
return(index);
|
||||
}
|
||||
|
||||
double sonderpreis(time_t connect, int duration, int index)
|
||||
{
|
||||
int i;
|
||||
double preis;
|
||||
|
||||
if ((i = searchentry(connect, number, provider)) != -1)
|
||||
if ((i = searchentry(connect, index)) != -1)
|
||||
if (SN[i].tarif == SO_CALCULATE) {
|
||||
if (SN[i].takt == 0)
|
||||
preis = SN[i].grund * 0.12;
|
||||
preis = SN[i].grund * currency_factor;
|
||||
else
|
||||
preis = (ceil(duration / SN[i].takt) + SN[i].grund) * 0.12;
|
||||
preis = (ceil(duration / SN[i].takt) + SN[i].grund) * currency_factor;
|
||||
return(preis);
|
||||
}
|
||||
else
|
||||
|
@ -301,12 +334,12 @@ double sonderpreis(time_t connect, int duration, char *number, int provider)
|
|||
return(SO_FAIL);
|
||||
}
|
||||
|
||||
double sondertaktlaenge(time_t connect, char *number, int provider, int *next)
|
||||
double sondertaktlaenge(time_t connect, int index, int *next)
|
||||
{
|
||||
int i;
|
||||
double taktlen;
|
||||
|
||||
if ((i = searchentry(connect, number, provider)) != -1)
|
||||
if ((i = searchentry(connect, index)) != -1)
|
||||
if (SN[i].tarif == SO_CALCULATE) {
|
||||
taktlen = SN[i].takt;
|
||||
return(taktlen);
|
||||
|
@ -323,11 +356,23 @@ double sondertaktlaenge(time_t connect, char *number, int provider, int *next)
|
|||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct tm t;
|
||||
time_t time;
|
||||
double preis;
|
||||
char msg[BUFSIZ];
|
||||
int index;
|
||||
|
||||
if (argc > 6) {
|
||||
fprintf(stdout, "%d Einträge aus \"%s/sonderrufnummern.dat\" eingelesen.\n",
|
||||
initSondernummern(), DATADIR);
|
||||
initSondernummern(msg);
|
||||
fprintf(stdout, "%s\n", msg);
|
||||
|
||||
t.tm_sec = t.tm_min = 0;
|
||||
t.tm_hour = strtol(argv[3], (char **)NULL, 10);
|
||||
t.tm_mday = strtol(argv[4], (char **)NULL, 10);
|
||||
t.tm_mon = strtol(argv[5], (char **)NULL, 10) - 1;
|
||||
t.tm_year = 99;
|
||||
t.tm_isdst = -1;
|
||||
time = mktime(&t);
|
||||
|
||||
/*
|
||||
fprintf(stdout, "Testausgabe für Eintrag: %d\n", TEST);
|
||||
fprintf(stdout, "Provider: %d\n", SN[TEST].provider);
|
||||
|
@ -341,18 +386,12 @@ int main(int argc, char *argv[])
|
|||
fprintf(stdout, "Kurzbeschreibung: \"%s\"\n", SN[TEST].info);
|
||||
exit(0);
|
||||
*/
|
||||
if (is_sondernummer(argv[2], strtol(argv[1], (char **)NULL, 10)) != -1) {
|
||||
t.tm_sec = t.tm_min = 0;
|
||||
t.tm_hour = strtol(argv[3], (char **)NULL, 10);
|
||||
t.tm_mday = strtol(argv[4], (char **)NULL, 10);
|
||||
t.tm_mon = strtol(argv[5], (char **)NULL, 10) - 1;
|
||||
t.tm_year = 99;
|
||||
t.tm_isdst = -1;
|
||||
|
||||
if ((index = is_sondernummer(argv[2],
|
||||
strtol(argv[1], (char **)NULL, 10))) != -1) {
|
||||
fprintf(stdout, "Sonderrufnummer: %s\n", argv[2]);
|
||||
fprintf(stdout, "Beschreibung : %s\n",
|
||||
sondernummername(argv[2], strtol(argv[1], (char **)NULL, 10)));
|
||||
preis = sonderpreis(mktime(&t), strtol(argv[6], (char **)NULL, 10),
|
||||
argv[2], strtol(argv[1], (char **)NULL, 10));
|
||||
fprintf(stdout, "Beschreibung : %s\n", sondernummername(index));
|
||||
preis = sonderpreis(time, strtol(argv[6], (char **)NULL, 10), index);
|
||||
if (preis == SO_CITYCALL)
|
||||
fprintf(stdout, "Kosten : CityCall\n");
|
||||
else if (preis == SO_FREE)
|
||||
|
@ -362,11 +401,10 @@ int main(int argc, char *argv[])
|
|||
else
|
||||
fprintf(stdout, "Kosten : %f\n", preis);
|
||||
fprintf(stdout, "Taktlänge : %f\n",
|
||||
sondertaktlaenge(mktime(&t), argv[2],
|
||||
strtol(argv[1], (char **)NULL, 10), NULL));
|
||||
sondertaktlaenge(time, index, NULL));
|
||||
}
|
||||
else
|
||||
fprintf(stdout, "Die Nummer %s ist keine Sonderrufnummer.\n", argv[1]);
|
||||
fprintf(stdout, "Die Nummer %s ist keine Sonderrufnummer.\n", argv[2]);
|
||||
}
|
||||
else
|
||||
fprintf(stdout, "Usage: %s Provider Rufnummer Stunde Tag Monat Länge\n",
|
||||
|
|
|
@ -19,6 +19,15 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.5 1999/02/28 19:33:11 akool
|
||||
* Fixed a typo in isdnconf.c from Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||
* CHARGEMAX fix from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
|
||||
* isdnrep fix from reinhard.karcher@dpk.berlin.fido.de (Reinhard Karcher)
|
||||
* "takt_at.c" fixes from Ulrich Leodolter <u.leodolter@xpoint.at>
|
||||
* sondernummern.c from Mario Joussen <mario.joussen@post.rwth-aachen.de>
|
||||
* Reenable usage of the ZONE entry from Schlottmann-Goedde@t-online.de
|
||||
* Fixed a typo in callerid.conf.5
|
||||
*
|
||||
* Revision 1.4 1999/01/10 15:23:30 akool
|
||||
* - "message = 0" bug fixed (many thanks to
|
||||
* Sebastian Kanthak <sebastian.kanthak@muehlheim.de>)
|
||||
|
@ -497,7 +506,7 @@ void exitTarife()
|
|||
{
|
||||
} /* exitTarife */
|
||||
|
||||
void initSondernummern()
|
||||
void initSondernummern(char *msg)
|
||||
{
|
||||
} /* initSondernummern */
|
||||
|
||||
|
|
|
@ -19,6 +19,13 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.14 1999/03/16 17:37:27 akool
|
||||
* - isdnlog Version 3.07
|
||||
* - Michael Reinelt's patch as of 16Mar99 06:58:58
|
||||
* - fix a fix from yesterday with sondernummern
|
||||
* - ignore "" COLP/CLIP messages
|
||||
* - dont show a LCR-Hint, if same price
|
||||
*
|
||||
* Revision 1.13 1999/03/15 21:28:04 akool
|
||||
* - isdnlog Version 3.06
|
||||
* - README: explain some terms about LCR, corrected "-c" Option of "isdnconf"
|
||||
|
@ -542,9 +549,8 @@ int taktlaenge(int chan, char *why)
|
|||
|
||||
|
||||
if ((call[chan].sondernummer[CALLED] != UNKNOWN) &&
|
||||
(call[chan].provider == DTAG) &&
|
||||
((call[chan].zone < C_NETZ) || (call[chan].zone > E2_NETZ)) &&
|
||||
SN[call[chan].sondernummer[CALLED]].tarif == SO_FREE) {
|
||||
sondertarif(call[chan].sondernummer[CALLED]) == SO_FREE) {
|
||||
strcpy(why, "FreeCall");
|
||||
return(60 * 60 * 24); /* one day should be enough ;-) */
|
||||
} /* if */
|
||||
|
@ -604,12 +610,18 @@ void preparecint(int chan, char *msg, char *hint, int viarep)
|
|||
|
||||
provider = ((call[chan].provider == UNKNOWN) ? preselect : call[chan].provider);
|
||||
|
||||
if ((call[chan].sondernummer[CALLED] != UNKNOWN) &&
|
||||
(is_sondernummer(call[chan].num[CALLED], provider) == UNKNOWN)) {
|
||||
sprintf(s, "Unknown Sonderrufnummer for provider %s. Using chargeinfos from provider DTAG.",
|
||||
Providername(provider));
|
||||
info(chan, PRT_SHOWCONNECT, STATE_CONNECT, s);
|
||||
}
|
||||
|
||||
if ((call[chan].sondernummer[CALLED] != UNKNOWN) && /* Sonderrufnummer, Abrechnung zum CityCall-Tarif */
|
||||
(SN[call[chan].sondernummer[CALLED]].tarif == SO_CITYCALL))
|
||||
(sondertarif(call[chan].sondernummer[CALLED]) == SO_CITYCALL))
|
||||
zone = CITYCALL;
|
||||
else if ((call[chan].sondernummer[CALLED] != UNKNOWN) && /* Sonderrufnummer, kostenlos */
|
||||
(SN[call[chan].sondernummer[CALLED]].tarif == SO_FREE) &&
|
||||
(provider == DTAG)) {
|
||||
(sondertarif(call[chan].sondernummer[CALLED]) == SO_FREE)) {
|
||||
call[chan].zone = CITYCALL;
|
||||
call[chan].tarifknown = 0;
|
||||
sprintf(msg, "CHARGE: free of charge - FreeCall");
|
||||
|
@ -677,7 +689,7 @@ void preparecint(int chan, char *msg, char *hint, int viarep)
|
|||
else {
|
||||
sprintf(msg, "CHARGE: Oppps: No charge infos for provider %d, Zone %d %s",
|
||||
provider, zone,
|
||||
((call[chan].sondernummer[CALLED] != UNKNOWN) ? SN[call[chan].sondernummer[CALLED]].info : ""));
|
||||
((call[chan].sondernummer[CALLED] != UNKNOWN) ? sondernummername(call[chan].sondernummer[CALLED]) : ""));
|
||||
|
||||
call[chan].tarifknown = 0;
|
||||
} /* else */
|
||||
|
@ -748,14 +760,14 @@ void price(int chan, char *hint, int viarep)
|
|||
tm = localtime(&call[chan].connect);
|
||||
|
||||
if ((call[chan].sondernummer[CALLED] != UNKNOWN) &&
|
||||
(call[chan].provider == DTAG) &&
|
||||
((call[chan].zone < C_NETZ) || (call[chan].zone > E2_NETZ))) {
|
||||
switch (SN[call[chan].sondernummer[CALLED]].tarif) {
|
||||
switch (sondertarif(call[chan].sondernummer[CALLED])) {
|
||||
case SO_UNKNOWN : if (!strcmp(call[chan].num[CALLED] + 3, "11833")) { /* Sonderbedingung Auskunft Inland */
|
||||
duration -= 30;
|
||||
|
||||
pay2 = SN[call[chan].sondernummer[CALLED]].grund * currency_factor;
|
||||
pay2 += (duration / SN[call[chan].sondernummer[CALLED]].takt) * currency_factor;
|
||||
pay2 = sonderpreis(call[chan].connect, duration,
|
||||
call[chan].sondernummer[CALLED]);
|
||||
|
||||
} /* if */
|
||||
break;
|
||||
|
||||
|
@ -1197,7 +1209,7 @@ static int compare(const SORT *s1, const SORT *s2)
|
|||
} /* compare */
|
||||
|
||||
|
||||
void showcheapest(int zone, int duration)
|
||||
void showcheapest(int zone, int duration, int ignoreprovider, char *info)
|
||||
{
|
||||
register int prefix, n = 0, n1, tz, cheapest = UNKNOWN;
|
||||
auto char why[BUFSIZ], s[BUFSIZ];
|
||||
|
@ -1209,6 +1221,8 @@ void showcheapest(int zone, int duration)
|
|||
time(&cur_time);
|
||||
tm = localtime(&cur_time);
|
||||
tz = tarifzeit(tm, why, 0);
|
||||
|
||||
if (ignoreprovider == UNKNOWN)
|
||||
print_msg(PRT_NORMAL, "%s\n", why);
|
||||
|
||||
|
||||
|
@ -1224,7 +1238,7 @@ void showcheapest(int zone, int duration)
|
|||
duration = TEST;
|
||||
|
||||
for (prefix = 0; prefix < MAXPROVIDER; prefix++) {
|
||||
if (t[prefix].used) {
|
||||
if (t[prefix].used && (prefix != ignoreprovider)) {
|
||||
|
||||
tz = tarifzeit(tm, why, ((prefix == DTAG) && CityWeekend));
|
||||
tarif = tpreis(prefix, zone, tz, tm->tm_hour, duration);
|
||||
|
@ -1244,6 +1258,11 @@ void showcheapest(int zone, int duration)
|
|||
} /* if */
|
||||
} /* for */
|
||||
|
||||
if ((cheapest != UNKNOWN) && (ignoreprovider != UNKNOWN)) {
|
||||
sprintf(info, "Try 010%02d:%s", cheapest, t[cheapest].Provider);
|
||||
return;
|
||||
} /* if */
|
||||
|
||||
if (cheapest != UNKNOWN) {
|
||||
tarif = t[cheapest].tarif[zone][tz][tm->tm_hour];
|
||||
|
||||
|
|
|
@ -24,6 +24,15 @@
|
|||
*
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.58 1999/03/15 21:28:32 akool
|
||||
* - isdnlog Version 3.06
|
||||
* - README: explain some terms about LCR, corrected "-c" Option of "isdnconf"
|
||||
* - isdnconf: added a small LCR-feature - simply try "isdnconf -c 069"
|
||||
* - isdnlog: dont change CHARGEINT, if rate is't known!
|
||||
* - sonderrufnummern 1.02 [15-Mar-99] :: added WorldCom
|
||||
* - tarif.dat 1.09 [15-Mar-99] :: added WorldCom
|
||||
* - isdnlog now correctly handles the new "Ortstarif-Zugang" of UUnet
|
||||
*
|
||||
* Revision 1.57 1999/03/14 14:27:25 akool
|
||||
* - isdnlog Version 3.05
|
||||
* - new Option "-u1" (or "ignoreRR=1")
|
||||
|
@ -815,7 +824,7 @@ int read_logfile(char *myname)
|
|||
|
||||
|
||||
initTarife(msg);
|
||||
(void)initSondernummern(msg);
|
||||
initSondernummern(msg);
|
||||
interns0 = 3; /* FIXME */
|
||||
|
||||
msn_sum = calloc(mymsns + 1, sizeof(double));
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
# Kennzahl 98, moegliche Varianten:
|
||||
# 0=Nikoma Minutentakt
|
||||
# 1=Nikoma Sekundentakt
|
||||
# 2=Nikocity Minutentakt
|
||||
# 3=Nikocity Sekundentakt
|
||||
# 4=Mox Telecom AG
|
||||
# 5=C@llas Clever Communications
|
||||
P:98=4
|
|
@ -19,6 +19,15 @@
|
|||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#
|
||||
# $Log$
|
||||
# Revision 1.7 1999/03/15 21:27:38 akool
|
||||
# - isdnlog Version 3.06
|
||||
# - README: explain some terms about LCR, corrected "-c" Option of "isdnconf"
|
||||
# - isdnconf: added a small LCR-feature - simply try "isdnconf -c 069"
|
||||
# - isdnlog: dont change CHARGEINT, if rate is't known!
|
||||
# - sonderrufnummern 1.02 [15-Mar-99] :: added WorldCom
|
||||
# - tarif.dat 1.09 [15-Mar-99] :: added WorldCom
|
||||
# - isdnlog now correctly handles the new "Ortstarif-Zugang" of UUnet
|
||||
#
|
||||
# Revision 1.6 1999/03/14 14:26:18 akool
|
||||
# - isdnlog Version 3.05
|
||||
# - new Option "-u1" (or "ignoreRR=1")
|
||||
|
@ -43,9 +52,9 @@
|
|||
# Telekom: Tarife im T-Net V1.19
|
||||
# Arcor: http://www.arcor.de/tarif/sonderrufnummer.html
|
||||
#
|
||||
# Stand: 1/99
|
||||
# Stand: 3/99
|
||||
#
|
||||
V:1.02 [15-Mar-99]
|
||||
V:1.03 [19-Mar-99]
|
||||
33|0010 |free| | | | |Operator Service
|
||||
33|0031800 |free| | | | |Plus Freephone Service (Niederl.)
|
||||
33|0041800 |free| | | | |Plus Freephone Service (Schweiz)
|
||||
|
@ -267,8 +276,8 @@ V:1.02 [15-Mar-99]
|
|||
33|01907 | | | | | 3 |Service 0190
|
||||
33|01908 | | | | | 2 |Service 0190
|
||||
33|01909 | | | | | 3 |Service 0190
|
||||
33|01910 |City| | | | |Online-Dienste Zugang SLIP
|
||||
33|0191011 |City| | | | |Online-Dienste Zugang PPP
|
||||
33|01910 |City| | | | |Online-Dienste Zugang SLIP
|
||||
33|01914 |City| | | | |Online-Dienste AOL Zugang
|
||||
33|019161 |City| | | | |Online-Dienste AOL Zugang
|
||||
33|02000 |? | | | | |Expo 2000 Hotline
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# @(#)tarif.dat 1.09 15-Mar-99 20:00
|
||||
# @(#)tarif.dat 1.10 17-Mar-99 22:09
|
||||
#
|
||||
# Copyright 1995, 1999 by Andreas Kool (akool@isdn4linux.de)
|
||||
#
|
||||
V:1.09 [15-Mar-99]
|
||||
V:1.10 [17-Mar-99]
|
||||
#
|
||||
# P: Provider
|
||||
# G: tt.mm.jjjj Tarif g<>ltig ab
|
||||
|
@ -20,6 +20,8 @@ V:1.09 [15-Mar-99]
|
|||
# 7=D2-Netz F=Welt 3
|
||||
# 8=E-plus-Netz G=Welt 4
|
||||
#
|
||||
# Euro 1 = Schweiz und Frankreich
|
||||
#
|
||||
# T: (Tag)
|
||||
# W=Werktag
|
||||
# E=Wochenende/Feiertag
|
||||
|
@ -123,6 +125,11 @@ T:E=0.11
|
|||
Z:4-9,1/1
|
||||
T:W09-19=0.81
|
||||
T:W19-09=0.48
|
||||
T:E=0.48
|
||||
Z:A-D,1/1
|
||||
T:W09-19=0.44
|
||||
T:W19-09=0.30
|
||||
T:E=0.30
|
||||
Z:D,1/1
|
||||
T:*=0.59
|
||||
Z:E,1/1
|
||||
|
|
|
@ -19,6 +19,18 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.19 1999/03/14 12:16:44 akool
|
||||
* - isdnlog Version 3.04
|
||||
* - general cleanup
|
||||
* - new layout for "rate-xx.dat" and "holiday-xx.dat" files from
|
||||
* Michael Reinelt <reinelt@eunet.at>
|
||||
* unused by now - it's a work-in-progress !
|
||||
* - bugfix for Wolfgang Siefert <siefert@wiwi.uni-frankfurt.de>
|
||||
* The Agfeo AS 40 (Software release 2.1b) uses AOC_AMOUNT, not AOC_UNITS
|
||||
* - bugfix for Ralf G. R. Bergs <rabe@RWTH-Aachen.DE> - 0800/xxx numbers
|
||||
* are free of charge ;-)
|
||||
* - tarif.dat V 1.08 - new mobil-rates DTAG
|
||||
*
|
||||
* Revision 1.18 1999/02/28 19:33:48 akool
|
||||
* Fixed a typo in isdnconf.c from Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||
* CHARGEMAX fix from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
|
||||
|
@ -551,10 +563,10 @@ char *vnum(int chan, int who)
|
|||
if (cnf > -1)
|
||||
strcpy(retstr[retnum], call[chan].alias[who]);
|
||||
else if (call[chan].sondernummer[who] != -1) {
|
||||
if ((l1 = strlen(SN[call[chan].sondernummer[who]].number)) < l)
|
||||
sprintf(retstr[retnum], "%s - %s", SN[call[chan].sondernummer[who]].info, call[chan].num[who] + l1);
|
||||
if ((l1 = strlen(sondernum(call[chan].sondernummer[who]))) < l)
|
||||
sprintf(retstr[retnum], "%s - %s", sondernummername(call[chan].sondernummer[who]), call[chan].num[who] + l1);
|
||||
else
|
||||
strcpy(retstr[retnum], SN[call[chan].sondernummer[who]].info);
|
||||
strcpy(retstr[retnum], sondernummername(call[chan].sondernummer[who]));
|
||||
}
|
||||
else
|
||||
sprintf(retstr[retnum], "TN %s", call[chan].num[who]);
|
||||
|
|
|
@ -20,6 +20,15 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.30 1999/03/15 21:28:54 akool
|
||||
* - isdnlog Version 3.06
|
||||
* - README: explain some terms about LCR, corrected "-c" Option of "isdnconf"
|
||||
* - isdnconf: added a small LCR-feature - simply try "isdnconf -c 069"
|
||||
* - isdnlog: dont change CHARGEINT, if rate is't known!
|
||||
* - sonderrufnummern 1.02 [15-Mar-99] :: added WorldCom
|
||||
* - tarif.dat 1.09 [15-Mar-99] :: added WorldCom
|
||||
* - isdnlog now correctly handles the new "Ortstarif-Zugang" of UUnet
|
||||
*
|
||||
* Revision 1.29 1999/03/14 14:27:37 akool
|
||||
* - isdnlog Version 3.05
|
||||
* - new Option "-u1" (or "ignoreRR=1")
|
||||
|
@ -945,14 +954,19 @@ _EXTERN char *qmsg(int type, int version, int val);
|
|||
_EXTERN char *Myname;
|
||||
_EXTERN void initTarife(char *msg);
|
||||
_EXTERN void exitTarife(void);
|
||||
_EXTERN void showcheapest(int zone, int duration);
|
||||
_EXTERN void showcheapest(int zone, int duration, int ignoreprovider, char *info);
|
||||
_EXTERN void price(int chan, char *hint, int viarep);
|
||||
_EXTERN char *realProvidername(int prefix);
|
||||
_EXTERN void preparecint(int chan, char *msg, char *hint, int viarep);
|
||||
_EXTERN int taktlaenge(int chan, char *why);
|
||||
_EXTERN int initSondernummern(char *msg);
|
||||
_EXTERN int is_sondernummer(char *num, int provider);
|
||||
_EXTERN char *sondernummername(char *number, int provider);
|
||||
_EXTERN void initSondernummern(char *msg);
|
||||
_EXTERN int is_sondernummer(char *number, int provider);
|
||||
_EXTERN char *sondernummername(int index);
|
||||
_EXTERN char *sondernum(int index);
|
||||
_EXTERN int sondertarif(int index);
|
||||
_EXTERN double sonderpreis(time_t connect, int duration, int index);
|
||||
_EXTERN double sondertaktlaenge(time_t connect, int index, int *next);
|
||||
_EXTERN void exitSondernummern();
|
||||
_EXTERN char *zonen[MAXZONES];
|
||||
#undef _EXTERN
|
||||
|
||||
|
|
Loading…
Reference in New Issue