- 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
This commit is contained in:
parent
6afa489aa5
commit
1e62012337
|
@ -1,4 +1,4 @@
|
|||
## $Id: Makefile.in,v 1.58 1999/03/14 14:26:10 akool Exp $
|
||||
## $Id: Makefile.in,v 1.59 1999/03/15 21:27:30 akool Exp $
|
||||
##
|
||||
## ISDN accounting for isdn4linux.
|
||||
##
|
||||
|
@ -19,6 +19,15 @@
|
|||
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
##
|
||||
## $Log: Makefile.in,v $
|
||||
## 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"
|
||||
## - 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.58 1999/03/14 14:26:10 akool
|
||||
## - isdnlog Version 3.05
|
||||
## - new Option "-u1" (or "ignoreRR=1")
|
||||
|
@ -455,7 +464,7 @@ SERVICEFILE = /etc/services
|
|||
# DON'T EDIT BELOW THIS LINE
|
||||
######################################################################
|
||||
|
||||
VERSION = 3.05
|
||||
VERSION = 3.06
|
||||
|
||||
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
|
||||
|
||||
|
|
227
isdnlog/README
227
isdnlog/README
|
@ -1,4 +1,4 @@
|
|||
ISDNLOG - Version 3.05 - 14-Mar-99 14:11
|
||||
ISDNLOG - Version 3.06 - 15-Mar-99 22:05
|
||||
|
||||
|
||||
isdnlog ist ein Utility zur Auswertung des D-Kanals eines
|
||||
|
@ -118,11 +118,12 @@ Inhalt:
|
|||
16.1. Postgres95
|
||||
16.2. MySQL
|
||||
17. Tarifdatenbank
|
||||
18. Probleme?
|
||||
19. Verwendete Dateien
|
||||
20. Verwendete Environment-Variablen
|
||||
21. Verwendete Abkuerzungen
|
||||
22. Danksagung
|
||||
18. LCR (Least cost router)
|
||||
19. Probleme?
|
||||
20. Verwendete Dateien
|
||||
21. Verwendete Environment-Variablen
|
||||
22. Verwendete Abkuerzungen
|
||||
23. Danksagung
|
||||
|
||||
|
||||
Vorwort
|
||||
|
@ -3237,8 +3238,18 @@ Kommentare werden geloescht.
|
|||
-t 'SI' Zeigt alle Eintraege mit Service-Indicator 'SI' an.
|
||||
Gilt nicht fuer den Befehl -A.
|
||||
|
||||
-c 'Code' "code" Ermittelt die Vorzahl zu der Telefonnummer und gibt
|
||||
diese dann aus. Gilt nicht fuer -A und -D.
|
||||
-c 'Code' "code" Ermittelt die Ortsbezeichnung sowie die Gebuehrenzone
|
||||
(relativ zum eigenen Standort, d.h. dem Eintrag
|
||||
AREACODE in der "callerid.conf") zu der Telefonnummer
|
||||
"code".
|
||||
Daneben wird ausgegeben, ueber welchen Provider
|
||||
jetzt gerade eine (181 Sekunden lange) Verbindung
|
||||
zu dieser Nummer am guenstigsten waere.
|
||||
Gilt nicht fuer -A und -D.
|
||||
(181 Sekunden als gedachte Dauer der Verbindung
|
||||
wurde gewaehlt, weil durch diese "krumme" Zahl
|
||||
alle Provider, die im Sekunden-Takt abrechnen
|
||||
massiv im Vorteil sind - was gewuenscht ist!)
|
||||
|
||||
-i "ignore" Es wird dann bei den Optionen -n und -a die
|
||||
Gross/Kleinschreibung ignoriert.
|
||||
|
@ -3951,7 +3962,196 @@ die Kennzahl "98" den Tarif der Fa. Mox Telecom AG meint.
|
|||
: - Sonderbehandlung von 24. Dezember bis 31. Dezember (Telekom)
|
||||
|
||||
|
||||
18. Probleme?
|
||||
18. LCR (Least cost router)
|
||||
---------------------------
|
||||
|
||||
Seit dem 1.1.1998 duerfen in Deutschland ganz offiziell (im kommerziellen
|
||||
Umfeld war das schon laenger gang und gebe) auch andere Firmen
|
||||
(neben der DTAG = Deutsche Telekom) Telefondienste anbieten.
|
||||
|
||||
Dazu wurde die RegTP - Regulierungsbehoerde fuer Telekomunikation und Post
|
||||
(http://www.regtp.de) ins Leben gerufen, die seitdem (u.a.) die
|
||||
Verbindungsnetzbetreiberauswahlkennziffern vergibt.
|
||||
|
||||
Ueber diese Nummern kann nun jeder selbst entscheiden, ueber welchen
|
||||
Provider (== Telefongesellschaft) er fuer das folgende Telefonat telefonieren
|
||||
moechte.
|
||||
|
||||
Daher taucht im Bereich der Telekomunikation ein neuer - bislang primaer
|
||||
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:
|
||||
|
||||
|
||||
010 xxx 49 69 123456
|
||||
^-------------------------- Verbindungsnetzbetreiberauswahl
|
||||
^---------------------- Nummer des gewuenschten Providers
|
||||
^------------------ Landesvorwahl
|
||||
^--------------- Ortsvorwahl
|
||||
^----------- Rufnummer
|
||||
|
||||
Endet der Ruf im eigenen Land, kann die Landesvorwahl entfallen.
|
||||
Endet der Ruf im eigenen Ortsnetz, kann die Ortsvorwahl (bis auf weiteres)
|
||||
entfallen.
|
||||
|
||||
Mittels "xxx" wird der gewuenschte Provider selektiert, wobei die RegTP
|
||||
zuerst alle 99 2-stelligen Nummern vergeben hat, und danach dazu ueber ging,
|
||||
dreistellige Nummern, bislang i.d.F, 0xx zu vergeben.
|
||||
|
||||
Um ein konkretes Beispiel zu machen: Wenn man beabsichtigt, von Muenchen
|
||||
nach Frankfurt ein Telefonat mit der Nummer 4711 zu fuehren, und dazu
|
||||
den Provider VIAG Intercom verwenden moechte, waehlt man folgende Nummer:
|
||||
|
||||
010 90 069 4711
|
||||
^---------------- Verbindungsnetzbetreiberauswahl
|
||||
^------------- VIAG Intercom
|
||||
^--------- Frankfurt
|
||||
^------ Rufnummer
|
||||
|
||||
|
||||
Ein grundlegendes Problem wurde jedoch bislang nicht geloest: Sobald man
|
||||
ueber einen alternativen Carrier (also irgend eine Telefongesellschaft
|
||||
jenseits der DTAG) eine Verbindung aufbaut, werden keinerlei Gebuehren-
|
||||
informationen mehr uebertragen - weder waehrend, noch am Ende der
|
||||
Verbindung.
|
||||
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"
|
||||
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 ...)
|
||||
Wer den isdnlog (und eine up-to-date "tarif.dat") verwendet, bekommt jedoch
|
||||
bei *allen* Gesellschaften - incl. der DTAG - Gebuehreninformationen geliefert,
|
||||
in Bezug auf AOCD (waehrend der Verbindung) sogar genauer, als die
|
||||
von der DTAG!
|
||||
|
||||
|
||||
Was kann nun isdnlog (ab der Version 3.x) mit dieser neuen Situation anstellen?
|
||||
|
||||
1. isdnlog erkennt eine evtl. vorgewaehlte Verbindungsnetzbetreiberauswahl,
|
||||
und dekodiert den entsprechenden Provider heraus.
|
||||
|
||||
Dazu greift isdnlog auf drei Quellen zurueck:
|
||||
- zum ersten besitzt isdnlog ... bislang hardcoded ... die Namen
|
||||
aller bislang bei der RegTP angemeldeten Provider. Von den bis zum
|
||||
11.Maerz 1999 angemeldeten 126 Telefongesellschaften bieten allerdings
|
||||
noch bei weitem nicht alle wirklich Telefondienste an.
|
||||
|
||||
- zum zweiten besitzt isdnlog eine Tarif-Datenbank, die Datei
|
||||
"/usr/lib/isdn/tarif.dat"
|
||||
Dort sind die Tarife der diversen Telefongesellschaften hinterlegt.
|
||||
|
||||
Da sich die Tarife haeufig sogar taeglich aendern, kann diese
|
||||
Datei im Moment nur als Anhaltspunkt angesehen werden. Zu welchem
|
||||
Zeitpunkt die dort hinterlegten Tarife mit Sicherheit gueltig waren,
|
||||
kann dem Eintrag "V:" am Anfang der Datei entnommen werden.
|
||||
Sollte mir irgend jemand verbesserte Tarifinformationen zuschicken
|
||||
(an akool@isdn4linux.de), bitte ich darum, immer auch diese
|
||||
Versionsnummer zu incrementieren!
|
||||
|
||||
- diverse Telefongesellschaften arbeiten mittlerweile mit sog.
|
||||
Resellern - Firmen, die unter derselben Verbindungsnetzbetreiberauswahl
|
||||
zu unterschiedlichen Tarifen Telefondienste anbieten. Hierzu muá man
|
||||
sich bei einem der Reseller zuerst anmelden - meistens kostenlos.
|
||||
|
||||
Zum Beispiel hat die Firma Star Telecom die
|
||||
Verbindungsnetzbetreiberauswahl 01098 erhalten, bietet jedoch an
|
||||
Privatkunden praktisch gar keine Telefondienste an.
|
||||
|
||||
Stattdessen verkauft Star ihre Dienste weiter an die Firmen
|
||||
|
||||
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
|
||||
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.
|
||||
wohnt.
|
||||
|
||||
Da jedoch alles oben genannte ueber ein und dieselbe
|
||||
Verbindungsnetzbetreiberauswahlkennziffer, im Beispiel also
|
||||
01098 laeuft, ist isdnlog absolut ausser Stande zu entscheiden,
|
||||
was nun gemeint ist, wenn eine Verbindung mit der Nummer "01098"
|
||||
beginnt.
|
||||
|
||||
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
|
||||
Situation fuellen.
|
||||
|
||||
2. Anhand des ermittelten Providers kann isdnlog nun berechnen, was dieser
|
||||
Provider fuer eine Verbindung verlangt, und wie lang bei diesem Provider
|
||||
ein "Gebuehrentakt" dauert.
|
||||
|
||||
Mit diesen Informationen macht isdnlog per heute folgendes:
|
||||
|
||||
1. Er ist in der Lange, am Ende einer Verbindung auszugeben, was die
|
||||
gerade beendete Verbindung gekostet hat.
|
||||
|
||||
2. Er ist in der Lage, den CHARGEINT von isdn4linux neu zu setzen,
|
||||
d.h. die Steuerung, wann eine ISDN-Data-Verbindung auflegen soll,
|
||||
um genau in einen Gebuehrentakt hineinzupassen.
|
||||
|
||||
3. Er ist in der Lage, den Gebuehrentakt (-> AOCD) zu "erfinden", und
|
||||
auszugeben. Dieser dazuerfundene Gebuehrentakt wurde CI (fuer
|
||||
ChargeInt) getauft.
|
||||
|
||||
4. Da isdnlog von (fast) allen aktiven Providern die Tarifinformationen
|
||||
besitzt, macht er zu Beginn einer Verbindung evtl. den Vorschlag,
|
||||
einen anderen - guenstigeren - Provider zu waehlen.
|
||||
|
||||
Das ist (leider) nur fast das, was ein sog. LCR (least-cost-router)
|
||||
erbringt. Ein echter LCR sagt nicht, welchen Provider man haette
|
||||
benutzten sollen, sondern benutzt genau diesen automatisch.
|
||||
Dies ist aber per heute leider aufgrund der Physik einer
|
||||
handelsueblichen ISDN-Karte nicht moeglich.
|
||||
(Ich persoenlich benutze seit dem 1.1.1998 eine Tk-Anlage mit
|
||||
internem S0-Bus, an dem alle ISDN-Telefone angeschlossen sind)
|
||||
|
||||
3. Praktisch alle neuen Provider kaempfen mit einem ueblen Problem: Sie
|
||||
besitzen (in Relation zur DTAG) nur eine sehr begrenzte Anzahl freier
|
||||
Leitungen. Besonders Provider, die mit extrem guenstigen Angeboten
|
||||
locken, sind erst nach 10 .. 20 maligem Versuchen verfuegbar.
|
||||
(Das beste Beispiel z.Zt. (Maerz 1999) ist sicherlich die Firma
|
||||
01079:Viatel, die zwar extrem guenstige Tarife anbietet, aber praktisch
|
||||
nie verfuegbar ist)
|
||||
Dieses Problem kann natuerlich auch isdnlog nicht aus der Welt schaffen,
|
||||
jedoch bringt isdnrep eine Statistik
|
||||
(in der Rubrik "Outgoing calls ordered by Provider") mit der
|
||||
prozentualen Verfuegbarkeit jedes benutzen Providers.
|
||||
Diese Verfuegbarkeitsrate bezieht sich natuerlich nur auf die jeweils
|
||||
eigenen Daten.
|
||||
|
||||
|
||||
4. Zum echten LCR gehoert aber noch etwas anderes! Bei den normalen
|
||||
Telefonnummern ist es einfach (naja, ich habe ueber 3 Jahre gebraucht,
|
||||
bis isdnlog das konnte), anhand einer Vorzonungstabelle zu berechnen,
|
||||
was eine Verbindung zwischen A und B kostet. Leider gibt es jedoch in
|
||||
Deutschland ca. 210 sog. Sonderrufnummern, die sich nicht dem ueblichen
|
||||
Schema unterziehen. Ein sehr bekanntes Beispiel fuer eine Sonderrufnummer
|
||||
iat die Telefonnummer "112 -> Feuerwehr"
|
||||
Die Telefonnummer 112 kostet nichts, was aber beileibe nicht fuer alle
|
||||
Sonderrufnummern gilt. Ganz im Gegenteil: Es gibt viele Sonderrufnummern,
|
||||
die weit mehr kosten, als die Fernzone! Bekannt sind hier sicherlich
|
||||
alle Rufnummern, die mit 0180 oder 0190 beginnen, oder die div.
|
||||
Telefonauskunften 118xx
|
||||
Dummerweise kosten diese Sondernummern bei jedem Provider etwas anderes,
|
||||
oder werden Fallweise von dem einen oder anderen Provider gar nicht
|
||||
unterstuetzt. Daher besitzt isdnlog die Datei
|
||||
"/usr/lib/isdn/sonderrufnummern.dat", die diese Besonderheiten - so
|
||||
weit bekannt, enthaelt.
|
||||
|
||||
|
||||
19. Probleme?
|
||||
-------------
|
||||
|
||||
Sollte isdnlog nicht wie beschrieben arbeiten, muessen folgende Punkte
|
||||
|
@ -4077,7 +4277,7 @@ gdb bin/isdnlog
|
|||
Den _gesamten_ Output an die oben angegebene Adresse senden.
|
||||
|
||||
|
||||
19. Verwendete Dateien
|
||||
20. Verwendete Dateien
|
||||
----------------------
|
||||
|
||||
Folgende Files werden von diesem System verwendet:
|
||||
|
@ -4099,6 +4299,7 @@ Folgende Files werden von diesem System verwendet:
|
|||
/usr/lib/isdn/areacodes - Neues Vorwahl-Verzeichnis
|
||||
/usr/lib/isdn/sonderrufnummern.dat - Verzeichnis aller Sonderrufnummern (110, 112 ...)
|
||||
/usr/lib/isdn/vorwahl.dat - Verzonungstabelle
|
||||
/usr/lib/isdn/tarif.dat - Tarifdatenbank
|
||||
/var/log/isdn.log - Das Logbuch
|
||||
/var/run/isdnlog.pid - Enthaelt die PID des laufenden isdnlog
|
||||
/dev/isdnctrl0 - Gibt das Q.931 Protokoll des HiSax-Treibers aus
|
||||
|
@ -4107,7 +4308,7 @@ Folgende Files werden von diesem System verwendet:
|
|||
/usr/X11R6/lib/X11/app-defaults/Isdn - Resourcefile fuer xisdn
|
||||
|
||||
|
||||
20. Verwendete Environment-Variablen
|
||||
21. Verwendete Environment-Variablen
|
||||
------------------------------------
|
||||
|
||||
Folgende Environment-Variablen werden von diesem System verwendet:
|
||||
|
@ -4119,7 +4320,7 @@ Folgende Environment-Variablen werden von diesem System verwendet:
|
|||
X-Client "xisdn"
|
||||
|
||||
|
||||
21. Verwendete Abkuerzungen
|
||||
22. Verwendete Abkuerzungen
|
||||
---------------------------
|
||||
|
||||
VSt = Vermittlungsstelle (das Amt)
|
||||
|
@ -4161,7 +4362,7 @@ Folgende Environment-Variablen werden von diesem System verwendet:
|
|||
PRI = Primary rate interface (30 B-Kanaele)
|
||||
|
||||
|
||||
22. Danksagung
|
||||
23. Danksagung
|
||||
--------------
|
||||
|
||||
Bedanken moechte ich mich vor allem bei
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: isdnconf.c,v 1.13 1999/03/07 18:18:42 akool Exp $
|
||||
/* $Id: isdnconf.c,v 1.14 1999/03/15 21:27:48 akool Exp $
|
||||
*
|
||||
* ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
|
@ -20,6 +20,15 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log: isdnconf.c,v $
|
||||
* 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
|
||||
|
@ -308,7 +317,7 @@ int find_data(char *_alias, char *_number, section *conf_dat)
|
|||
|
||||
ptr = (CEPtr = Get_Entry(SPtr->entries,CONF_ENT_PROG))?(CEPtr->value?CEPtr->value:""):"";
|
||||
print_msg(PRT_NORMAL,"%s:\t%s\n",make_word(CONF_ENT_PROG),ptr);
|
||||
|
||||
|
||||
ptr = (CEPtr = Get_Entry(SPtr->entries,CONF_ENT_USER))?(CEPtr->value?CEPtr->value:""):"";
|
||||
print_msg(PRT_NORMAL,"%s:\t%s\n",make_word(CONF_ENT_USER),ptr);
|
||||
|
||||
|
@ -668,19 +677,58 @@ int main(int argc, char *argv[], char *envp[])
|
|||
|
||||
if (areacode[0] != '\0')
|
||||
{
|
||||
char *ptr;
|
||||
int len;
|
||||
|
||||
char *ptr, msg[BUFSIZ];
|
||||
int len, i, zone;
|
||||
|
||||
|
||||
(void)initSondernummern(msg);
|
||||
/* print_msg(PRT_NORMAL, "%s\n", msg); */
|
||||
initTarife(msg);
|
||||
/* print_msg(PRT_NORMAL, "%s\n", msg); */
|
||||
|
||||
if ((ptr = get_areacode(areacode,&len,quiet?C_NO_ERROR|C_NO_WARN:0)) != NULL)
|
||||
{
|
||||
if (!isdnmon)
|
||||
{
|
||||
const char *area = area_diff_string(NULL,areacode);
|
||||
const char *area;
|
||||
|
||||
|
||||
if ((i = is_sondernummer(areacode, DTAG)) > -1) {
|
||||
print_msg(PRT_NORMAL, "%s\n", SN[i].info);
|
||||
|
||||
if (!memcmp(areacode, "01610", 5) ||
|
||||
!memcmp(areacode, "01617", 5) ||
|
||||
!memcmp(areacode, "01619", 5))
|
||||
zone = C_NETZ;
|
||||
else if (!memcmp(areacode, "01618", 5))
|
||||
zone = C_MOBILBOX;
|
||||
else if (!memcmp(areacode, "0170", 4) ||
|
||||
!memcmp(areacode, "0171", 4))
|
||||
zone = D1_NETZ;
|
||||
else if (!memcmp(areacode, "0172", 4) ||
|
||||
!memcmp(areacode, "0173", 4))
|
||||
zone = D2_NETZ;
|
||||
else if (!memcmp(areacode, "0177", 4) ||
|
||||
!memcmp(areacode, "0178", 4))
|
||||
zone = E_PLUS_NETZ;
|
||||
else if (!memcmp(areacode, "0176", 4) ||
|
||||
!memcmp(areacode, "0179", 4))
|
||||
zone = E2_NETZ;
|
||||
else
|
||||
zone = GLOBALCALL;
|
||||
}
|
||||
else {
|
||||
area = area_diff_string(NULL,areacode);
|
||||
zone = area_diff(NULL, areacode);
|
||||
|
||||
print_msg(PRT_NORMAL,"%s%s%s\n",ptr,area[0] != '\0'?" / ":"", area[0] != '\0'?area:"");
|
||||
} /* else */
|
||||
|
||||
showcheapest(zone, 181);
|
||||
|
||||
print_msg(PRT_NORMAL,"%s%s%s\n",ptr,area[0] != '\0'?" / ":"", area[0] != '\0'?area:"");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
print_msg(PRT_NORMAL,"%s\t%d\t",ptr,len);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: processor.c,v 1.42 1999/03/14 18:47:44 akool Exp $
|
||||
/* $Id: processor.c,v 1.43 1999/03/15 21:27:58 akool Exp $
|
||||
*
|
||||
* ISDN accounting for isdn4linux. (log-module)
|
||||
*
|
||||
|
@ -19,6 +19,15 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log: processor.c,v $
|
||||
* 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"
|
||||
* - 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.42 1999/03/14 18:47:44 akool
|
||||
* damn CLIP :-( Internal call's are free of charge!!
|
||||
*
|
||||
|
@ -507,7 +516,7 @@
|
|||
#define _PROCESSOR_C_
|
||||
#include "isdnlog.h"
|
||||
|
||||
static int HiSax = 0, hexSeen = 0, uid = -1;
|
||||
static int HiSax = 0, hexSeen = 0, uid = UNKNOWN;
|
||||
static char *asnp, *asnm;
|
||||
#ifdef Q931
|
||||
static int lfd = 0;
|
||||
|
@ -590,7 +599,7 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
auto int partner = ((dir && (who == CALLING)) || (!dir && (who == CALLED)));
|
||||
|
||||
|
||||
*sondernummer = -1;
|
||||
*sondernummer = UNKNOWN;
|
||||
*intern = 0;
|
||||
|
||||
#ifdef Q931
|
||||
|
@ -731,7 +740,7 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
auto char s[BUFSIZ];
|
||||
|
||||
if (*provider < 100)
|
||||
sprintf(s, "Via provider \"010%02d\", %s", *provider, Providername(*provider));
|
||||
sprintf(s, "Via provider \"010%02d\", %s", *provider, Providername(*provider));
|
||||
else
|
||||
sprintf(s, "Via provider \"010%03d\", %s", *provider - 100, Providername(*provider));
|
||||
|
||||
|
@ -741,13 +750,22 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
} /* if */
|
||||
#endif
|
||||
|
||||
if (!dir && (who == CALLED))
|
||||
if (!dir && (who == CALLED)) {
|
||||
*sondernummer = is_sondernummer(num, DTAG); /* try with DTAG, these provider must support them all (i think) */
|
||||
*intern = strlen(num) < interns0;
|
||||
|
||||
if (*sondernummer == UNKNOWN)
|
||||
*sondernummer = is_sondernummer(num, *provider);
|
||||
|
||||
if (*sondernummer == UNKNOWN)
|
||||
*sondernummer = !memcmp(num, "019", 3); /* anything like 019xx is a Sondernummer! */
|
||||
|
||||
} /* if */
|
||||
|
||||
*intern = strlen(num) < interns0;
|
||||
|
||||
#ifdef Q931
|
||||
if (q931dmp) {
|
||||
if (*sondernummer != -1) {
|
||||
if (*sondernummer != UNKNOWN) {
|
||||
auto char s[256];
|
||||
|
||||
sprintf(s, "(Sonderrufnummer %s : %s)", num, sondernummername(num, DTAG));
|
||||
|
@ -759,7 +777,7 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
} /* if */
|
||||
#endif
|
||||
|
||||
if ((*sondernummer == -1) && !*intern)
|
||||
if ((*sondernummer == UNKNOWN) && !*intern)
|
||||
|
||||
switch (oc3 & 0x70) { /* Calling party number Information element, Octet 3 - Table 4-11/Q.931 */
|
||||
case 0x00 : if (*num) { /* 000 Unknown */
|
||||
|
@ -3461,7 +3479,7 @@ static void huptime(int chan, int bchan, int setup)
|
|||
else
|
||||
newhuptimeout = oldhuptimeout;
|
||||
|
||||
if (oldchargeint != newchargeint || oldhuptimeout != newhuptimeout) {
|
||||
if (((oldchargeint != newchargeint) || (oldhuptimeout != newhuptimeout)) && (newchargeint != UNKNOWN)) {
|
||||
#if NET_DV >= NETDV_CHARGEINT
|
||||
if (net_dv >= NETDV_CHARGEINT)
|
||||
call[chan].chargeint = cfg.chargeint = newchargeint;
|
||||
|
@ -4675,7 +4693,7 @@ doppelt:break;
|
|||
strcat(sx, " ");
|
||||
strcat(sx, qmsg(TYPE_CAUSE, version, call[chan].cause));
|
||||
|
||||
if (((p = location(call[chan].loc) != ""))) {
|
||||
if (((p = location(call[chan].loc)) != "")) {
|
||||
strcat(sx, " (");
|
||||
strcat(sx, location(call[chan].loc));
|
||||
strcat(sx, ")");
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: takt_de.c,v 1.12 1999/03/14 14:27:12 akool Exp $
|
||||
/* $Id: takt_de.c,v 1.13 1999/03/15 21:28:04 akool Exp $
|
||||
*
|
||||
* ISDN accounting for isdn4linux. (log-module)
|
||||
*
|
||||
|
@ -19,6 +19,15 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log: takt_de.c,v $
|
||||
* 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"
|
||||
* - 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.12 1999/03/14 14:27:12 akool
|
||||
* - isdnlog Version 3.05
|
||||
* - new Option "-u1" (or "ignoreRR=1")
|
||||
|
@ -95,6 +104,7 @@
|
|||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#define MAXZONES 19
|
||||
#define UNKNOWN -1
|
||||
#define SONDERNUMMER -2 /* FIXME: set by readconfig(), but unused by now */
|
||||
|
@ -118,7 +128,8 @@
|
|||
#define INTERNET 17
|
||||
#define GLOBALCALL 18
|
||||
#define DTAG 33
|
||||
#define I4LCONFDIR "/etc/isdn"
|
||||
#define I4LCONFDIR "/etc/isdn"
|
||||
#define DATADIR "/usr/lib/isdn"
|
||||
#else
|
||||
#include "isdnlog.h"
|
||||
#endif
|
||||
|
@ -220,14 +231,14 @@ char *zonen[MAXZONES] = { "Intern", "CityCall", "RegioCall", "GermanCall",
|
|||
static TARIF t[MAXPROVIDER];
|
||||
static int line = 0;
|
||||
static int use[MAXPROVIDER];
|
||||
#ifdef STANDALONE
|
||||
|
||||
typedef struct {
|
||||
int prefix;
|
||||
double tarif;
|
||||
} SORT;
|
||||
|
||||
static SORT sort[MAXPROVIDER];
|
||||
#endif
|
||||
|
||||
|
||||
static void warning(char *s)
|
||||
{
|
||||
|
@ -541,7 +552,7 @@ int taktlaenge(int chan, char *why)
|
|||
*why = 0;
|
||||
|
||||
if (!t[call[chan].provider].used) {
|
||||
strcpy(why, "NO CHARGE INFOS FOR THIS PROVIDER");
|
||||
sprintf(why, "No charge infos for provider %d", call[chan].provider);
|
||||
return(UNKNOWN);
|
||||
} /* if */
|
||||
|
||||
|
@ -594,8 +605,7 @@ 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) && /* Sonderrufnummer, Abrechnung zum CityCall-Tarif */
|
||||
(SN[call[chan].sondernummer[CALLED]].tarif == SO_CITYCALL) &&
|
||||
(provider == DTAG))
|
||||
(SN[call[chan].sondernummer[CALLED]].tarif == SO_CITYCALL))
|
||||
zone = CITYCALL;
|
||||
else if ((call[chan].sondernummer[CALLED] != UNKNOWN) && /* Sonderrufnummer, kostenlos */
|
||||
(SN[call[chan].sondernummer[CALLED]].tarif == SO_FREE) &&
|
||||
|
@ -629,7 +639,7 @@ void preparecint(int chan, char *msg, char *hint, int viarep)
|
|||
if ((i = call[chan].confentry[OTHER]) > UNKNOWN)
|
||||
zone = known[i]->zone;
|
||||
if (zone == UNKNOWN)
|
||||
zone = area_diff(NULL, call[chan].num[CALLED]);
|
||||
zone = area_diff(NULL, call[chan].num[CALLED]);
|
||||
|
||||
if ((zone == AREA_ERROR) || (zone == AREA_UNKNOWN))
|
||||
zone = UNKNOWN;
|
||||
|
@ -770,7 +780,7 @@ void price(int chan, char *hint, int viarep)
|
|||
onesec = call[chan].pay / duration;
|
||||
pay2 = (duration - 600) * onesec * 0.30;
|
||||
|
||||
sprintf(sx, "10plus %s %s - %s %s = %s %s\n",
|
||||
sprintf(sx, "10plus %s %s - %s %s = %s %s",
|
||||
WAEHRUNG,
|
||||
double2str(call[chan].pay, 6, 2, DEB),
|
||||
WAEHRUNG,
|
||||
|
@ -1181,129 +1191,90 @@ void exitTarife()
|
|||
} /* exitTarife */
|
||||
|
||||
|
||||
#if V1
|
||||
void initSondernummern()
|
||||
{
|
||||
register char *p1, *p2, *p3;
|
||||
register int tarif;
|
||||
auto FILE *f;
|
||||
auto char s[BUFSIZ], msn[128], sinfo[256], linfo[256], fn[BUFSIZ];
|
||||
auto double grund1, grund2, takt1, takt2;
|
||||
|
||||
|
||||
sprintf(fn, "%s/sonderrufnummern.dat", DATADIR);
|
||||
|
||||
if ((f = fopen(fn, "r")) != (FILE *)NULL) {
|
||||
while ((p1 = fgets(s, BUFSIZ, f))) {
|
||||
if (*p1 != '#') {
|
||||
if ((p2 = strchr(p1, '|'))) {
|
||||
*p2 = 0;
|
||||
|
||||
p3 = p2 - 1;
|
||||
while (*p3 == ' ')
|
||||
*p3-- = 0;
|
||||
|
||||
strcpy(msn, p1);
|
||||
p1 = p2 + 1;
|
||||
if ((p2 = strchr(p1, '|'))) {
|
||||
*p2 = 0;
|
||||
|
||||
if (!strcmp(p1, "City"))
|
||||
tarif = 1;
|
||||
else if (!strcmp(p1, "free"))
|
||||
tarif = 0;
|
||||
else
|
||||
tarif = UNKNOWN;
|
||||
|
||||
p1 = p2 + 1;
|
||||
if ((p2 = strchr(p1, '|'))) {
|
||||
*p2 = 0;
|
||||
grund1 = atof(p1);
|
||||
p1 = p2 + 1;
|
||||
if ((p2 = strchr(p1, '|'))) {
|
||||
*p2 = 0;
|
||||
grund2 = atof(p1);
|
||||
p1 = p2 + 1;
|
||||
if ((p2 = strchr(p1, '|'))) {
|
||||
*p2 = 0;
|
||||
takt1 = atof(p1);
|
||||
p1 = p2 + 1;
|
||||
if ((p2 = strchr(p1, '|'))) {
|
||||
*p2 = 0;
|
||||
takt2 = atof(p1);
|
||||
p1 = p2 + 1;
|
||||
if ((p2 = strchr(p1, '|'))) {
|
||||
*p2 = 0;
|
||||
|
||||
p3 = p2 - 1;
|
||||
while (*p3 == ' ')
|
||||
*p3-- = 0;
|
||||
|
||||
while (*p1 == ' ')
|
||||
p1++;
|
||||
|
||||
strcpy(sinfo, p1);
|
||||
p1 = p2 + 1;
|
||||
if ((p2 = strchr(p1, '\n'))) {
|
||||
*p2 = 0;
|
||||
|
||||
p3 = p2 - 1;
|
||||
while (*p3 == ' ')
|
||||
*p3-- = 0;
|
||||
|
||||
while (*p1 == ' ')
|
||||
p1++;
|
||||
|
||||
strcpy(linfo, p1);
|
||||
|
||||
nSN++;
|
||||
SN = realloc(SN, sizeof(SonderNummern) * nSN);
|
||||
SN[nSN - 1].msn = strdup(msn);
|
||||
SN[nSN - 1].sinfo = strdup(sinfo);
|
||||
SN[nSN - 1].tarif = tarif;
|
||||
SN[nSN - 1].grund1 = grund1;
|
||||
SN[nSN - 1].grund2 = grund2;
|
||||
SN[nSN - 1].takt1 = takt1;
|
||||
SN[nSN - 1].takt2 = takt2;
|
||||
} /* if */
|
||||
} /* if */
|
||||
} /* if */
|
||||
} /* if */
|
||||
} /* if */
|
||||
} /* if */
|
||||
} /* if */
|
||||
} /* if */
|
||||
} /* if */
|
||||
} /* while */
|
||||
|
||||
fclose(f);
|
||||
} /* if */
|
||||
} /* initSondernummern */
|
||||
|
||||
|
||||
int is_sondernummer(char *num)
|
||||
{
|
||||
register int i;
|
||||
|
||||
|
||||
if ((strlen(num) >= interns0) && ((*num == '0') || (*num == '1')))
|
||||
for (i = 0; i < nSN; i++)
|
||||
if (!strncmp(num, SN[i].msn, strlen(SN[i].msn)))
|
||||
return(i);
|
||||
|
||||
return(-1);
|
||||
} /* sondernummer */
|
||||
#endif /* V1 */
|
||||
|
||||
|
||||
#ifdef STANDALONE
|
||||
|
||||
int compare(const SORT *s1, const SORT *s2)
|
||||
static int compare(const SORT *s1, const SORT *s2)
|
||||
{
|
||||
return(s1->tarif > s2->tarif);
|
||||
} /* compare */
|
||||
|
||||
|
||||
void showcheapest(int zone, int duration)
|
||||
{
|
||||
register int prefix, n = 0, n1, tz, cheapest = UNKNOWN;
|
||||
auto char why[BUFSIZ], s[BUFSIZ];
|
||||
auto double cheaptarif, providertarif, tarif;
|
||||
auto time_t cur_time;
|
||||
auto struct tm *tm;
|
||||
|
||||
|
||||
time(&cur_time);
|
||||
tm = localtime(&cur_time);
|
||||
tz = tarifzeit(tm, why, 0);
|
||||
print_msg(PRT_NORMAL, "%s\n", why);
|
||||
|
||||
|
||||
if (!preselect) {
|
||||
preselect = DTAG;
|
||||
|
||||
/* print_msg(PRT_NORMAL, "ASSUMING PRESELECT IS 010%d:%s\n", preselect, t[preselect].Provider); */
|
||||
} /* if */
|
||||
|
||||
cheaptarif = 99999.9;
|
||||
|
||||
if (duration == -1)
|
||||
duration = TEST;
|
||||
|
||||
for (prefix = 0; prefix < MAXPROVIDER; prefix++) {
|
||||
if (t[prefix].used) {
|
||||
|
||||
tz = tarifzeit(tm, why, ((prefix == DTAG) && CityWeekend));
|
||||
tarif = tpreis(prefix, zone, tz, tm->tm_hour, duration);
|
||||
|
||||
if (prefix == preselect)
|
||||
providertarif = tarif;
|
||||
|
||||
if ((tarif > 0.0) && (tarif < cheaptarif)) {
|
||||
cheaptarif = tarif;
|
||||
cheapest = prefix;
|
||||
} /* if */
|
||||
|
||||
sort[n].prefix = prefix;
|
||||
sort[n].tarif = tarif;
|
||||
n++;
|
||||
|
||||
} /* if */
|
||||
} /* for */
|
||||
|
||||
if (cheapest != UNKNOWN) {
|
||||
tarif = t[cheapest].tarif[zone][tz][tm->tm_hour];
|
||||
|
||||
if (t[cheapest].takt1[zone] == UNKNOWN)
|
||||
sprintf(s, "DM %5.3f/%7.3fs", t[cheapest].taktpreis[zone], tarif);
|
||||
else
|
||||
sprintf(s, "DM %5.3f/Min, Takt %d/%d", tarif, t[cheapest].takt1[zone], t[cheapest].takt2[zone]);
|
||||
|
||||
print_msg(PRT_NORMAL, "\nUse 010%02d:%s, %s, costs DM %7.3f/%ds",
|
||||
cheapest, t[cheapest].Provider, s,
|
||||
cheaptarif, duration);
|
||||
|
||||
if (cheapest != preselect) {
|
||||
print_msg(PRT_NORMAL, "\n\tsaving DM %7.3f/%ds vs. preselect (010%02d:%s)",
|
||||
providertarif - cheaptarif, duration,
|
||||
preselect, t[preselect].Provider);
|
||||
} /* if */
|
||||
|
||||
print_msg(PRT_NORMAL, "\n\n");
|
||||
} /* if */
|
||||
|
||||
qsort(sort, n, sizeof(SORT), compare);
|
||||
|
||||
for (n1 = 0; n1 < n; n1++)
|
||||
if (sort[n1].tarif != -1)
|
||||
print_msg(PRT_NORMAL, "010%02d:%s%*sDM %5.3f\n", sort[n1].prefix,
|
||||
t[sort[n1].prefix].Provider, 15 - strlen(t[sort[n1].prefix].Provider), "", sort[n1].tarif);
|
||||
} /* showcheapest */
|
||||
|
||||
|
||||
#ifdef STANDALONE
|
||||
int main(int argc, char *argv[], char *envp[])
|
||||
{
|
||||
register int prefix, z, d, h, n = 0, n1, cheapest = UNKNOWN;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: isdnrep.c,v 1.57 1999/03/14 14:27:25 akool Exp $
|
||||
/* $Id: isdnrep.c,v 1.58 1999/03/15 21:28:32 akool Exp $
|
||||
*
|
||||
* ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
|
@ -24,6 +24,15 @@
|
|||
*
|
||||
*
|
||||
* $Log: isdnrep.c,v $
|
||||
* 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")
|
||||
|
@ -661,7 +670,7 @@ static sum_calls day_sum;
|
|||
static sum_calls day_com_sum;
|
||||
static sum_calls all_sum;
|
||||
static sum_calls all_com_sum;
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static double *msn_sum;
|
||||
|
@ -836,7 +845,7 @@ int read_logfile(char *myname)
|
|||
else
|
||||
lineformat = DEF_FMT;
|
||||
}
|
||||
|
||||
|
||||
if (get_format(lineformat) == NULL)
|
||||
return(UNKNOWN);
|
||||
|
||||
|
@ -974,7 +983,7 @@ int read_logfile(char *myname)
|
|||
#elif defined(ISDN_AT)
|
||||
einheit = 1.056;
|
||||
#else
|
||||
einheit = Tarif96 ? 0.121 : 0.23;
|
||||
einheit = Tarif96 ? 0.12 : 0.23;
|
||||
#endif
|
||||
else
|
||||
einheit = cur_call.currency_factor;
|
||||
|
@ -1618,7 +1627,7 @@ static int print_line(int status, one_call *cur_call, int computed, char *overla
|
|||
else
|
||||
colsize[i] = append_string(&string,*fmtstring," ");
|
||||
break;
|
||||
|
||||
|
||||
case 'j': if (status == F_BODY_LINE)
|
||||
{
|
||||
if (!numbers)
|
||||
|
@ -1635,7 +1644,7 @@ static int print_line(int status, one_call *cur_call, int computed, char *overla
|
|||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
/* Link for answering machine! */
|
||||
case 'C': if (html)
|
||||
{
|
||||
|
@ -1659,11 +1668,11 @@ static int print_line(int status, one_call *cur_call, int computed, char *overla
|
|||
print_msg(PRT_ERR, "Unknown format %%G!\n");
|
||||
break;
|
||||
/* there are dummy entries */
|
||||
case 'c':
|
||||
case 'd':
|
||||
case 'c':
|
||||
case 'd':
|
||||
case 's': if (status != F_BODY_LINE)
|
||||
free_col = 1;
|
||||
|
||||
|
||||
colsize[i] = append_string(&string,*fmtstring, " ");
|
||||
break;
|
||||
default : print_msg(PRT_ERR, "Internal Error: unknown format `%c'!\n",(*fmtstring)->s_type);
|
||||
|
@ -1745,7 +1754,7 @@ static int append_string(char **string, prt_fmt *fmt_ptr, char* value)
|
|||
default : htmlfmt = H_RIGHT;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (!strncmp(STR_FAX,value,strlen(STR_FAX)))
|
||||
htmlfmt = H_LEFT;
|
||||
|
||||
|
@ -1761,7 +1770,7 @@ static int append_string(char **string, prt_fmt *fmt_ptr, char* value)
|
|||
tmpfmt = tmpfmt2;
|
||||
|
||||
app_fmt_string(tmpstr,BUFSIZ*3-1,tmpfmt,condition,value);
|
||||
|
||||
|
||||
if (*string == NULL)
|
||||
*string = (char*) calloc(strlen(tmpstr)+1,sizeof(char));
|
||||
else
|
||||
|
@ -2196,7 +2205,7 @@ static int print_entries(one_call *cur_call, double unit, int *nx, char *myname)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
static int print_header(int lday)
|
||||
static int print_header(int lday)
|
||||
{
|
||||
sum_calls tmp_sum;
|
||||
time_t now;
|
||||
|
@ -2250,7 +2259,7 @@ static char *get_time_value(time_t t, int *day, int flag)
|
|||
static int oldday = UNKNOWN;
|
||||
static int oldyear = UNKNOWN;
|
||||
struct tm *tm;
|
||||
|
||||
|
||||
|
||||
if (flag & SET_TIME)
|
||||
{
|
||||
|
@ -2329,7 +2338,7 @@ static int set_alias(one_call *cur_call, int *nx, char *myname)
|
|||
if (cur_call->version[0] != '\0')
|
||||
{
|
||||
if (!strcmp(cur_call->version,LOG_VERSION_2) ||
|
||||
!strcmp(cur_call->version,LOG_VERSION_3) ||
|
||||
!strcmp(cur_call->version,LOG_VERSION_3) ||
|
||||
!strcmp(cur_call->version,LOG_VERSION_4) ||
|
||||
!strcmp(cur_call->version,LOG_VERSION) )
|
||||
cc = ((known[i]->si == cur_call->si) || j) &&
|
||||
|
@ -2491,19 +2500,19 @@ static int set_caller_infos(one_call *cur_call, char *string, time_t from)
|
|||
if (!memcmp(cur_call->num[1], "+491019", 7)) {
|
||||
cur_call->provider = 19;
|
||||
memmove(cur_call->num[1] + 3, cur_call->num[1] + 8, strlen(cur_call->num[1]) - 7);
|
||||
adapt++;
|
||||
adapt++;
|
||||
}
|
||||
else if (!memcmp(cur_call->num[1], "+491033", 7)) {
|
||||
cur_call->provider = 33;
|
||||
memmove(cur_call->num[1] + 3, cur_call->num[1] + 8, strlen(cur_call->num[1]) - 7);
|
||||
adapt++;
|
||||
adapt++;
|
||||
}
|
||||
else if (!memcmp(cur_call->num[1], "+491070", 7)) {
|
||||
cur_call->provider = 70;
|
||||
memmove(cur_call->num[1] + 3, cur_call->num[1] + 8, strlen(cur_call->num[1]) - 7);
|
||||
adapt++;
|
||||
adapt++;
|
||||
} /* else */
|
||||
|
||||
|
||||
if (adapt)
|
||||
strcpy(cur_call->version, LOG_VERSION_4);
|
||||
|
||||
|
@ -2554,7 +2563,7 @@ static int set_caller_infos(one_call *cur_call, char *string, time_t from)
|
|||
case 18: cur_call->zone = atoi(array[i]);
|
||||
break;
|
||||
|
||||
default : print_msg(PRT_ERR,"Unknown element found `%s'!\n",array[i]);
|
||||
default : print_msg(PRT_ERR,"Unknown element found `%s'!\n",array[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2981,7 +2990,7 @@ static void strich(int type)
|
|||
if (html)
|
||||
{
|
||||
switch (type) {
|
||||
case 3 :
|
||||
case 3 :
|
||||
case 1 : print_msg(PRT_NORMAL,H_LINE,get_format_size(),1);
|
||||
break;
|
||||
case 2 : print_msg(PRT_NORMAL,H_LINE,get_format_size(),3);
|
||||
|
@ -3005,7 +3014,7 @@ static void strich(int type)
|
|||
string[--size] = type==2?'=':'-';
|
||||
|
||||
print_msg(PRT_NORMAL,"%s\n",string);
|
||||
|
||||
|
||||
free(string);
|
||||
}
|
||||
} /* strich */
|
||||
|
@ -3351,7 +3360,7 @@ static int Compare_files(const void *e1, const void *e2)
|
|||
else
|
||||
if ((*(file_list**) e1)->time < (*(file_list**) e2)->time)
|
||||
return(UNKNOWN);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -3513,7 +3522,7 @@ static char *nam2html(char *file)
|
|||
ptr += 3;
|
||||
file++;
|
||||
break;
|
||||
default : *ptr++ = *file++;
|
||||
default : *ptr++ = *file++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3674,7 +3683,7 @@ static char *create_vbox_file(char *file, int *compression)
|
|||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
close(fdin);
|
||||
return fileout;
|
||||
}
|
||||
|
@ -3850,7 +3859,7 @@ static int find_format_length(char *string)
|
|||
return(UNKNOWN);
|
||||
|
||||
memmove(string,dest,strlen(dest)+1);
|
||||
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: sonderrufnummern.dat,v 1.6 1999/03/14 14:26:18 akool Exp $
|
||||
# $Id: sonderrufnummern.dat,v 1.7 1999/03/15 21:27:38 akool Exp $
|
||||
#
|
||||
# Sonderrufnummerndatenbank
|
||||
#
|
||||
|
@ -19,6 +19,15 @@
|
|||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#
|
||||
# $Log: sonderrufnummern.dat,v $
|
||||
# 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")
|
||||
|
@ -45,7 +54,7 @@
|
|||
#
|
||||
# Stand: 1/99
|
||||
#
|
||||
V:1.01 [14-Mar-99]
|
||||
V:1.02 [15-Mar-99]
|
||||
33|0010 |free| | | | |Operator Service
|
||||
33|0031800 |free| | | | |Plus Freephone Service (Niederl.)
|
||||
33|0041800 |free| | | | |Plus Freephone Service (Schweiz)
|
||||
|
@ -510,3 +519,4 @@ V:1.01 [14-Mar-99]
|
|||
70|01172 |free| | | | |DTAG-Störungsannahme
|
||||
70|01174 |free| | | | |DTAG-Störungsannahme
|
||||
70|2000 |? | | | | |EXPO-Hotline
|
||||
88|0191999 |City| | | | |UUnet PPP-Zugang
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# @(#)tarif.dat 1.08 14-Mar-99 11:35
|
||||
# @(#)tarif.dat 1.09 15-Mar-99 20:00
|
||||
#
|
||||
# Copyright 1995, 1999 by Andreas Kool (akool@isdn4linux.de)
|
||||
#
|
||||
V:1.08 [14-Mar-99]
|
||||
V:1.09 [15-Mar-99]
|
||||
#
|
||||
# P: Provider
|
||||
# G: tt.mm.jjjj Tarif g<>ltig ab
|
||||
|
@ -168,6 +168,7 @@ C: pro Monat 2 Stunden Nutzungsentgelt frei
|
|||
C: monatliche Grundgeb<65>hr DM 8,00
|
||||
C:ISDN-Tarif
|
||||
C:FIXME: Tarife überprüfen! 04-Mar-99
|
||||
C:FORMEL: 7,2 / Minutenpreis => Taktlaenge
|
||||
C:Quelle: http://www.telekom.de/untern/tarife/mobil/index.htm
|
||||
I:0191011
|
||||
Z:1,0.12
|
||||
|
@ -326,6 +327,21 @@ T:W21-09=0.60
|
|||
T:E09-21=0.74
|
||||
T:E21-09=0.60
|
||||
################################################################
|
||||
P:88=WorldCom
|
||||
C:Dies sind *nicht* die korrekten Tarife von WorldCom, da WorldCom
|
||||
C:keine Tarifdaten veroeffentlicht!
|
||||
C:Vielmehr handelt es sich hier nur um die Tarife fuer den
|
||||
C:UUnet Ortstarif-Zugang!
|
||||
I:0191999
|
||||
Z:1,0.12
|
||||
T:W02-05=240 # Nacht
|
||||
T:W05-09=150 # Spar
|
||||
T:W09-18=90 # Standard
|
||||
T:W18-21=150 # Spar
|
||||
T:W21-02=240 # Mondschein
|
||||
T:E05-21=150 # Spar
|
||||
T:E21-05=240 # Mondschein
|
||||
################################################################
|
||||
P:90=Viag Intercom
|
||||
G:01.01.1999
|
||||
Z:2-3,60/60
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: isdnconf.c,v 1.22 1999/02/28 19:33:39 akool Exp $
|
||||
/* $Id: isdnconf.c,v 1.23 1999/03/15 21:28:44 akool Exp $
|
||||
*
|
||||
* ISDN accounting for isdn4linux. (Utilities)
|
||||
*
|
||||
|
@ -20,6 +20,15 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log: isdnconf.c,v $
|
||||
* Revision 1.23 1999/03/15 21:28:44 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.22 1999/02/28 19:33:39 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>
|
||||
|
@ -890,7 +899,7 @@ void setDefaults()
|
|||
#elif defined(ISDN_AT)
|
||||
currency_factor = 1.056;
|
||||
#else
|
||||
currency_factor = 0.121;
|
||||
currency_factor = 0.12;
|
||||
#endif
|
||||
|
||||
} /* if */
|
||||
|
@ -1235,7 +1244,7 @@ static int Set_Globals(section *SPtr)
|
|||
_print_msg("%s: ERROR: Can't allocate memory!\n", Myname);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
lineformats[++cnt] = NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: tools.h,v 1.29 1999/03/14 14:27:37 akool Exp $
|
||||
/* $Id: tools.h,v 1.30 1999/03/15 21:28:54 akool Exp $
|
||||
*
|
||||
* ISDN accounting for isdn4linux.
|
||||
*
|
||||
|
@ -20,6 +20,15 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log: tools.h,v $
|
||||
* 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")
|
||||
|
@ -706,7 +715,7 @@ typedef struct {
|
|||
int oc3;
|
||||
int takteChargeInt;
|
||||
int card;
|
||||
int knock;
|
||||
int knock;
|
||||
time_t nextcint;
|
||||
float cint;
|
||||
int cinth;
|
||||
|
@ -945,6 +954,7 @@ _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 price(int chan, char *hint, int viarep);
|
||||
_EXTERN char *realProvidername(int prefix);
|
||||
_EXTERN void preparecint(int chan, char *msg, char *hint, int viarep);
|
||||
|
|
Loading…
Reference in New Issue