diff --git a/isdnlog/Makefile.in b/isdnlog/Makefile.in index 35ae5e30..b988d3c8 100644 --- a/isdnlog/Makefile.in +++ b/isdnlog/Makefile.in @@ -1,4 +1,4 @@ -## $Id: Makefile.in,v 1.96 1999/07/25 15:57:01 akool Exp $ +## $Id: Makefile.in,v 1.97 1999/08/04 23:11:15 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.97 1999/08/04 23:11:15 akool +## isdnlog-3.44 +## ## Revision 1.96 1999/07/25 15:57:01 akool ## isdnlog-3.43 ## added "telnum" module @@ -728,7 +731,7 @@ SERVICEFILE = /etc/services # DON'T EDIT BELOW THIS LINE ###################################################################### -VERSION = 3.43 +VERSION = 3.44 MANPAGES = isdnlog/callerid.conf.5 isdnlog/isdn.conf.5 \ isdnlog/isdnformat.5 isdnlog/isdnlog.5 isdnlog/isdnlog.8 \ diff --git a/isdnlog/rate-de.dat b/isdnlog/rate-de.dat index 65a492ad..7a2216f7 100644 --- a/isdnlog/rate-de.dat +++ b/isdnlog/rate-de.dat @@ -1,4 +1,4 @@ -V:1.02-Germany [31-Jul-1999 11:30:28] +V:1.02-Germany [04-Aug-1999 18:56:52] # 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.34 1999/07/31 09:25:08 akool Exp $ +# $Id: rate-de.dat,v 1.35 1999/08/04 23:11:24 akool Exp $ # # Zonenzuordnung für Deutschland # @@ -188,7 +188,7 @@ C:172 IVBB C:200 - Ausland Z:0 Freephone A:+49130,+49800,International Freephone -Z:2-4 Inlandsverbindungen +Z:1-4 Inlandsverbindungen A:+49 T:W/07-19=0.15/60 Geschaeftszeit T:W/19-21=0.08/60 Freizeit @@ -428,7 +428,7 @@ G:13.05.1999 D:dtag Z:0 Freephone A:+49130,+49800,International Freephone -Z:2 Regional +Z:1-2 Regional T:W/08-18=0.05/0,0.09(60)/1 Geschaeftszeit T:W/00-08,18-21=0.05/0,0.05(60)/1 Freizeit T:*/21-00=0.05/0,0.04(60)/1 Happy Hour @@ -669,7 +669,7 @@ C:10 Mobilfunk C:200 - Ausland G:15.04.1999 D:dtag -Z:2-4 National +Z:1-4 National A:+49 T:*/07-19=0.10/60 T:*/19-22=0.07/60 @@ -743,7 +743,7 @@ C:0 - 4 Deutschland C:10,12,14,15 Mobilfunk C:33 - 39 Satelitenfunk C:200 - Ausland -Z:2-4 Inland +Z:1-4 Inland T:W/06-18=0.18(60)/1 Tagestarif T:W/18-21=0.12(60)/1 Abendtarif T:E,H/06-21=0.12(60)/1 Tagestarif @@ -812,7 +812,7 @@ C:0 - 4 Deutschland C:10,12,14,15 Mobilfunk C:33 - 39 Satelitenfunk C:200 - Ausland -Z:2 City +Z:1-2 City T:W/06-18=0.075(60)/1 Tagestarif T:W/18-21=0.05(60)/1 Abendtarif T:E,H/06-21=0.05(60)/1 Tagestarif @@ -891,7 +891,7 @@ C:0 - 4 Deutschland C:10,12,14,15 Mobilfunk C:33 - 39 Satelitenfunk C:200 - Ausland -Z:2 City +Z:1-2 City T:W/06-18=0.065(60)/1 Tagestarif T:E,H/06-18=0.05(60)/1 Tagestarif T:*/18-21=0.04(60)/1 Abendtarif @@ -984,7 +984,7 @@ D:dtag Z:0 Freecall A:+491171, +491172, +491174 # DTAG Störungsannahme A:+49130, +49800, International Freephone -Z:2-4 National +Z:1-4 National A:+49 T:W/08-21=0.18/60 T:E,H/08-21=0.14/60 @@ -1843,7 +1843,7 @@ G:01.04.1999 Z:0 Freecall A:+491171, +491172, +491174 # DTAG Störungsannahme A:+49130, +49800, International Freephone -Z:2 RSL COM - city +Z:1-2 RSL COM - city T:W/08-21=0.10(60)/1 T:E,H/08-21=0.10(60)/1 T:*/21-08=0.07(60)/1 @@ -2709,7 +2709,7 @@ G:01.04.1999 Z:0 Freecall A:+491171, +491172, +491174 # DTAG Störungsannahme A:+49130, +49800, International Freephone -Z:2 RSL COM - city +Z:1-2 RSL COM - city T:W/08-21=0.09(60)/1 T:E,H/08-21=0.09(60)/1 T:*/21-08=0.05(60)/1 @@ -3566,7 +3566,7 @@ C:Erfasste Zonen: C:2 - 4 Deutschland C:10 Mobilfunk G:07-Jun-1999 -Z:2-4 Inland +Z:1-4 Inland A:+49 T:*/06-20=0.15/60 Hauptzeit T:*/20-06=0.15/120 Nebenzeit @@ -3601,7 +3601,7 @@ C:43 Auskunft debitel C:200 - Ausland G:01.06.1999 D:dtag -Z:2-4 Fern +Z:1-4 Fern A:+49 T:W/09-18=0.17/60 Hauptzeit T:*/06-09,18-21=0.10/60 Nebenzeit @@ -3655,7 +3655,7 @@ C:10 Mobilfunk C:43 Auskunft debitel C:200 - Ausland G:01.06.1999 -Z:2-4 Fern +Z:1-4 Fern T:*/*=0.15/30 Z:10 Mobilfunknetze A:+491618 # T-C-Tel Voice Mail @@ -3706,7 +3706,7 @@ C:10 Mobilfunk C:43 Auskunft debitel C:200 - Ausland G:01.06.1999 -Z:2-4 Fern +Z:1-4 Fern T:W/09-18=0.05/0,0.17/60 Hauptzeit T:*/06-09,18-21=0.05/0,0.10/60 Nebenzeit T:*/21-06=0.05/0,0.05/60 Private Time @@ -3759,7 +3759,7 @@ C:2 - 4 Deutschland C:10 Mobilfunk C:43 Auskunft debitel C:200 - Ausland -Z:2-4 Fern +Z:1-4 Fern T:*/*=0.05/0,0.15/30 Z:10 Mobilfunknetze A:+491618 # T-C-Tel Voice Mail @@ -3818,7 +3818,7 @@ C:102 01019freenet C:200 Ausland Gruppe A G:06-Apr-1999 D:dtag -Z:2-4 Ferngespräche bundesweit +Z:1-4 Ferngespräche bundesweit A:+49 T:*/07-19=0.12/60 Standard T:*/19-22=0.08/60 Spar @@ -3857,7 +3857,7 @@ C:Homepage: http://www.mobilcom.de C:Hotline: 01805/191919 C:Adresse: Postfach 1249 C: 24822 Schleswig -Z:2-3 Ferngespräche innerhalb Regio 50 +Z:1-3 Ferngespräche innerhalb Regio 50 T:*/*=0.08(60)/1 Z:4 Ferngespräche außerhalb Regio 50 T:*/*=0.012(60)/1 @@ -3911,7 +3911,7 @@ C:10 Mobilfunk C:102 01019freenet C:200 - Ausland G:13.05.1999 -Z:2-4 Ferngespräche bundesweit +Z:1-4 Ferngespräche bundesweit T:*/07-19=0.12(60)/1 Standard T:*/19-22=0.08(60)/1 Spar T:*/22-07=0.04(60)/1 Nacht @@ -4772,7 +4772,7 @@ C:102 TelePassport-Online C:200 - Ausland G:01.05.1999 D:dtag -Z:2 Lokal +Z:1-2 Lokal T:W/08-18=0.12/60 Geschäftszeit T:W/18-08=0.08/60 Freizeit T:E,H/*=0.08/60 Wochenende @@ -4836,7 +4836,7 @@ C:2 - 4 Deutschland C:10 Mobilfunk C:102 TelePassport-Online C:200 - Ausland -Z:2-4 Inland +Z:1-4 Inland A:+49 T:W/08-18=0.16/60 Geschäftszeit T:W/18-08=0.12/60 Freizeit @@ -4892,7 +4892,7 @@ C:2 - 4 Deutschland C:10 Mobilfunk C:102 TelePassport-Online C:200 - Ausland -Z:2-4 Inland +Z:1-4 Inland T:*/07-21=0.14/60 Geschäftszeit T:*/21-07=0.10/60 Freizeit Z:10 Mobilfunk @@ -4948,7 +4948,7 @@ C:5 Sondertarif C:10 Mobilfunk C:102 TelePassport-Online C:200 - Ausland -Z:2 Lokal +Z:1-2 Lokal T:*/*=0.10/60 Z:3-4 Fern T:*/*=0.16/60 @@ -4999,7 +4999,7 @@ C:2 - 4 Deutschland C:10 Mobilfunk C:102 TelePassport-Online C:200 - Ausland -Z:2 Lokal +Z:1-2 Lokal T:*/*=0.12/60 Z:3 Nah T:W/08-18=0.16/60 Geschäftszeit @@ -5057,7 +5057,7 @@ C:Telefon: 0361/594 2500 C:Telefax: 0800/808 808 9 C:Adresse: Juri-Gagarin-Ring 88, 99084 C: Erfurt -Z:2-4 Inland +Z:1-4 Inland T:W/08-18=0.18/60 Geschäftszeit T:W/18-08=0.12/60 Freizeit T:E,H/*=0.12/60 Wochenende @@ -5105,7 +5105,7 @@ C:Telefon: 0361/594 2500 C:Telefax: 0800/808 808 9 C:Adresse: Juri-Gagarin-Ring 88, 99084 C: Erfurt -Z:2 Lokal +Z:1-2 Lokal T:*/*=0.10/60 Z:3 Nah T:W/08-18=0.12/60 Geschäftszeit @@ -5160,7 +5160,7 @@ C:10 Mobilfunk C:102 SUPER24 Internet C:200 - Ausland G:05.05.1999 -Z:2-4 SUPER24 Phone +Z:1-4 SUPER24 Phone T:*/*=0.11/60 Z:10 SUPER24 Mobile A:+491618 # T-C-Tel Voice Mail @@ -5210,13 +5210,13 @@ C:10 Mobilfunk C:102 CITYMS-Internet C:200 - Ausland G:01.02.1999 -Z:1 CITYMS-Münsterland +Z:1-2 CITYMS-Münsterland T:W/09-18=0.07/60 Hauptzeit T:*/18-21=0.07/106 Nebenzeit T:*/05-09=0.07/106 Nebenzeit T:E,H/09-18=0.07/106 Nebenzeit T:*/21-05=0.07/145 Nachtzeit -Z:2 CITYMS-Münsterland +Z:1-2 CITYMS-Münsterland A:+492382 # Ahlen/Westfalen A:+492387 # Drensteinfurt-Walstedde A:+492501 # Münster-Hiltrup @@ -5732,13 +5732,13 @@ C:10 Mobilfunk C:102 CITYMS-Internet C:200 - Ausland G:01.02.1999 -Z:1 CITYMS-Münsterland +Z:1-2 CITYMS-Münsterland T:W/09-18=0.07/60 Hauptzeit T:*/18-21=0.07/106 Nebenzeit T:*/05-09=0.07/106 Nebenzeit T:E,H/09-18=0.07/106 Nebenzeit T:*/21-05=0.07/145 Nachtzeit -Z:2 CITYMS-Münsterland +Z:1-2 CITYMS-Münsterland A:+492382 # Ahlen/Westfalen A:+492387 # Drensteinfurt-Walstedde A:+492501 # Münster-Hiltrup @@ -6477,7 +6477,7 @@ C:60 Cityruf C:82 - 85 Service 0180-x C:91 - 94 Service 0190-x C:200 - Ausland -Z:2-4 Inland +Z:1-4 Inland T:*/*=0/5,0.13/60 Z:10 Mobilfunk A:+491610,+491611,+491612,+491613,+491614,+491615,+491616,+491617,+491619 # C @@ -6657,7 +6657,7 @@ C:60 Cityruf C:82 - 85 Service 0180-x C:91 - 94 Service 0190-x C:200 - Ausland -Z:2-4 Inland +Z:1-4 Inland T:W/08-21=0/5,0.11/60 Hauptzeit T:E,H/08-21=0/5,0.055/60 Nebenzeit T:*/21-08=0/5,0.055/60 Nebenzeit @@ -6824,7 +6824,7 @@ C:Erfasste Zonen: C:2 - 4 Deutschland C:10 Mobilfunk C:200 - Ausland -Z:2-4 Deutschland +Z:1-4 Deutschland T:*/08-18=0.136(60)/1 Haupt T:*/18-21=0.113(60)/1 Neben T:*/21-08=0.082(60)/1 Nacht @@ -7578,7 +7578,7 @@ C:Erfasste Zonen: C:2 - 4 Deutschland C:10 Mobilfunk C:200 - Ausland -Z:2-4 Deutschland +Z:1-4 Deutschland T:*/08-18=0.110(60)/1 Haupt T:*/18-21=0.097(60)/1 Neben T:*/21-08=0.067(60)/1 Nacht @@ -8355,7 +8355,7 @@ C:81 - 85 Service 0180-x C:91 - 94 Service 0190-x C:102 TelDa.net C:200 - Ausland -Z:2 Regio 20 +Z:1-2 Regio 20 T:W/07-21=0.07(60)/1 T:W/21-07=0.04(60)/1 T:E/*=0.04(60)/1 @@ -9602,7 +9602,7 @@ C:2 - 4 Deutschland C:10 Mobilfunk C:11 Sondertarif C:200 - Ausland -Z:2-3 regional +Z:1-3 regional T:W/08-18=0.14(60)/15 Geschäftszeit T:E,H/08-18=0.12(60)/15 Wochenende T:*/18-08=0.12(60)/15 Freizeit @@ -9658,7 +9658,7 @@ C:2 - 4 Deutschland C:10 Mobilfunk C:11 Sondertarif C:200 - Ausland -Z:2-4 Inland +Z:1-4 Inland T:*/*=0.17(60)/15 Z:10 Mobilfunk A:+491618 # T-C-Tel Voice Mail @@ -9703,7 +9703,7 @@ C:2 - 4 Deutschland C:10 Mobilfunk C:11 Sondertarif C:200 - Ausland -Z:2-3 Regional +Z:1-3 Regional T:W/08-18=0.05/0,0.09(60)/1 Geschäftszeit T:E,H/08-18=0.05/0,0.05(60)/1 Wochenende T:*/18-08=0.05/0,0.05(60)/1 Freizeit @@ -9763,7 +9763,7 @@ C:2 - 4 Deutschland C:10 Mobilfunk C:11 Sondertarif C:200 - Ausland -Z:2-3 regional +Z:1-3 regional T:W/08-18=0.14(60)/1 Geschäftszeit T:E,H/08-18=0.12(60)/1 Wochenende T:*/18-08=0.12(60)/1 Freizeit @@ -9820,7 +9820,7 @@ C:2 - 4 Deutschland C:10 Mobilfunk C:11 Sondertarif C:200 - Ausland -Z:2-4 Inland +Z:1-4 Inland T:*/*=0.17(60)/1 Z:10 Mobilfunk A:+491618 # T-C-Tel Voice Mail @@ -9878,7 +9878,7 @@ C:Erfasste Zonen: C:2 - 4 Deutschland C:10 Mobilfunk C:203 Ausland (Kanada & USA) -Z:2-4 Inland +Z:1-4 Inland A:+49 T:W/08-18=0.02/0,0.15/60 Standard T:W/18-21=0.02/0,0.10/60 Abend @@ -9923,7 +9923,7 @@ C:170 Pers C:171 Info Expo 2000 C:172 IVBB C:200 - Ausland -Z:2-4 Deutschland +Z:1-4 Deutschland A:+49 T:W/08-18=0.15/60 Standard T:W/18-21=0.09/60 Abend @@ -9989,7 +9989,7 @@ C:Erfasste Zonen: C:2 - 4 Deutschland C:10 Mobilfunk C:200 - Ausland -Z:2 Hamburg-plus-20 +Z:1-2 Hamburg-plus-20 T:W/08-18=0.07/60 T:E,H/08-18=0.05/60 T:*/18-21=0.05/60 @@ -10041,7 +10041,7 @@ C:Erfasste Zonen: C:2 - 4 Deutschland C:10 Mobilfunk C:200 - Ausland -Z:2 Hamburg-plus-20 +Z:1-2 Hamburg-plus-20 T:W/08-18=0.07/60 T:E,H/08-18=0.05/60 T:*/18-08=0.035/60 @@ -10281,7 +10281,7 @@ C:200 - Ausland Z:0 FreeCall A:+49800, +49130, International Freephone A:+49231438110 # TELNET Support Nummern -Z:2-3 TELNET NRW +Z:1-3 TELNET NRW T:W/08-18=0.12/60 Tag T:E,H/08-18=0.08/60 Freizeit T:*/18-22=0.08/60 Freizeit @@ -10477,7 +10477,7 @@ Z:0 Freephone A:+49800, +49130 # FreeCall A:+491113, +491114, +491115 # DTAG-Service A:110, 112 # Polizei, Feuerwehr -Z:2-4 HalloDeutschland +Z:1-4 HalloDeutschland A:+49 T:W/08-20=0.25(60)/1 Tag T:W/20-08=0.15(60)/1 Nacht @@ -11173,7 +11173,7 @@ C:Erfasste Zonen: C:2 - 4 Deutschland C:10 Mobilfunk C:200 - 211 Ausland -Z:2 Nah +Z:1-2 Nah T:W/08-18=0.08/60 T:W/18-08=0.08/90 T:E,H/*=0.08/90 @@ -11260,7 +11260,7 @@ C:2 - 4 Deutschland C:10 Mobilfunk C:200 - 211 Ausland G:01.06.1999 -Z:2 Nah +Z:1-2 Nah T:W/08-18=0.12(60)/1 T:W/18-08=0.09(60)/1 T:E,H/*=0.09(60)/1 @@ -11343,7 +11343,7 @@ C:Erfasste Zonen: C:2 - 4 Deutschland C:10 Mobilfunk C:200 - 211 Ausland -Z:2 Nah +Z:1-2 Nah T:W/09-18=0.12/90 T:W/18-09=0.12/150 T:E,H/*=0.12/90 @@ -11446,7 +11446,7 @@ C:Erfasste Zonen: C:2 - 4 Deutschland C:10 Mobilfunk C:200 - 211 Ausland -Z:2-3 Nah +Z:1-3 Nah T:W/08-18=0.12(60)/1 T:W/18-08=0.09(60)/1 T:E,H/*=0.09(60)/1 @@ -11534,7 +11534,7 @@ C:Hotline: 01802/2002 C:Faxabruf: 01802/2001 P:50,1 Talkline CbC D:dtag -Z:2-4 Fern +Z:1-4 Fern A:+49 T:W/07-19=0.15/60 T:W/19-22=0.08/60 @@ -11568,7 +11568,7 @@ T:*/*=0.45/60 P:50,2 Talkline EasyLine D:dtag F:P -Z:2-4 Inland +Z:1-4 Inland T:W/7-19=0.15/60 T:W/19-22=0.08/60 T:W/22-7=0.039/60 @@ -11589,7 +11589,7 @@ A:+49176,+49179 # E2 P:50,4 Talkline BusinessLine Classic D:dtag F:P100 -Z:2 +Z:1-2 T:*/8-18=0.07(60)/90 T:*/18-8=0.035(60)/90 Z:3,4 @@ -11619,7 +11619,7 @@ C:Homepage: http://www.01051.com C:Adresse: Koenigsallee 60f C: 40210 Duesseldorf D:dtag -Z:2-4 Ferngespräche +Z:1-4 Ferngespräche A:+49 T:*/*=0.09/60 Z:40 Telefonauskunft Inland (Austria, dial 01051004366211811) @@ -12042,7 +12042,7 @@ C:Telecom Deutschland GmbH, Lyoner Str. 15, 60528 Frankfurt 01066 C:Bei Preselection sekundengenaue Taktung D:dtag G:01-Jun-1999 -Z:2-4 National +Z:1-4 National T:W/08-17=0.14/60 T:W/17-08=0.08/60 T:E,H/08-17=0.10/60 @@ -12152,7 +12152,7 @@ G:15-Jul-1999 C:Mannesmann Arcor C:Mannesmann AG & Co., Kölner Str. 12, 65760 Eschborn 01070 D:dtag -Z:2-3 Regio Plus +Z:1-3 Regio Plus T:W/06-09=0.07/60 T:W/09-18=0.14/60 T:W/18-21=0.07/60 @@ -12468,7 +12468,7 @@ G:01.04.99 C:Mannesmann Arcor C:Mannesmann AG & Co., Kölner Str. 12, 65760 Eschborn 01070 D:dtag -Z:2 Nah +Z:1-2 Nah T:W/06-09=0.05(60)/30 Freizeit T:W/09-18=0.09(60)/30 Hauptzeit T:W/18-21=0.05(60)/30 Freizeit @@ -12496,7 +12496,7 @@ G:01.04.99 C:Mannesmann Arcor C:Mannesmann AG & Co., Kölner Str. 12, 65760 Eschborn 01070 D:dtag -Z:2 Nah +Z:1-2 Nah T:W/06-09=0.058/0,0.05(60)/1 Freizeit T:W/09-18=0.058/0,0.09(60)/1 Hauptzeit T:W/18-21=0.058/0,0.05(60)/1 Freizeit @@ -12545,7 +12545,7 @@ P:75 Callino G:01-Jul-99 C:ARCIS Media Com Management GmbH, Maximilianstr. 14, 80539 München 01075 D:dtag -Z:2-4 Fern +Z:1-4 Fern A:+49 T:W/08-20=0.14/60 T:W/20-08=0.08/60 @@ -12581,7 +12581,7 @@ C:Hotline: 01805/01078-0 C:Adresse: Mergenthalerallee 79-81 C: 65760 Eschborn D:dtag -Z:2-4 Fern +Z:1-4 Fern T:W/08-20=0.139(60)/1 T:W/20-08=0.059(60)/1 T:E,H/08-20=0.139(60)/1 @@ -13698,7 +13698,7 @@ C:Telefax: 069/94 994-100 C:Adresse: Hanauer Landstrasse 187-189 C: 60314 Frankfurt am Main D:dtag -Z:2-4 National +Z:1-4 National T:W/09-18=0.102/60 Hauptzeit T:W/18-21=0.085(60)/60 Nebenzeit T:W/21-9=0.05(60)/60 Nacht @@ -13890,7 +13890,34 @@ T:*/*=0.12/30,0.24(60)/1 # # P:80 Telegate +G:04-Aug-1999 +D:dtag C:Aktiengesellschaft für telefonische Informationsdienste, Bahnhofstraße 26, 82211 Herrsching 01080 +# Bislang kann dieses Angebot nur in den folgenden Städten genutzt werden: +# Hamburg, Berlin, Hannover, Düsseldorf, Frankfurt/Main, Nürnberg, +# Stuttgart, München +Z:1-4 Inlandsverbindungen +A:+49 +T:W/09-17=0.089/60 +T:W/17-20=0.079/60 +T:W/20-21=0.058/60 +T:W/21-22=0.039/60 +T:W/22-07=0.038/60 +T:W/07-08=0.049/60 +T:W/08-09=0.054/60 +T:E,H/09-20=0.069/60 +T:E,H/20-21=0.058/60 +T:E,H/21-22=0.039/60 +T:E,H/22-07=0.038/60 +T:E,H/07-08=0.049/60 +T:E,H/08-09=0.054/60 +Z:11 Mobilfunk +A:+491610,+491611,+491612,+491613,+491614,+491615,+491616,+491617,+491619 # C +A:+49170,+49171 # D1 +A:+49172,+49173 # D2 +A:+49177,+49178 # Eplus +A:+49176,+49179 # E2 +T:*/*=0.44/60 Z:21 Telefonauskunft Inland A:11880 T:*/*=0.968/0,0.121/7.5 @@ -13930,7 +13957,7 @@ C: 69115 Heidelberg C: C:Tarif: Westcom privat D:dtag -Z:2-4 National +Z:1-4 National T:W/08-18=0.16(60)/1 Standard T:W/18-08=0.09(60)/1 Spar T:E,H/*=0.09(60)/1 Spar @@ -14015,7 +14042,7 @@ P:90 Viag Interkom G:01-May-1999 C:GmbH & Co. KG, Elsenheimer Straße 11, 81927 München 01090 D:dtag -Z:2-4 Fern +Z:1-4 Fern T:W/06-08=0.10/60 Sparzeit T:W/08-18=0.15/60 Hauptzeit T:W/18-21=0.10/60 Freizeit @@ -14108,7 +14135,7 @@ G:01.05.1999 C:Mox Telecom AG C:Reseller von Star Telecom D:dtag -Z:2-4 Deutschlandweit +Z:1-4 Deutschlandweit T:*/08-21=0.139(60)/1 T:*/21-08=0.079(60)/1 A:+49 @@ -14205,7 +14232,7 @@ C:D C:Stuttgart, Köln, Karlsruhe, Leipzig oder Mannheim und den jeweiligen C:Orten in der City-Zone D:dtag -Z:2 City +Z:1-2 City T:*/9-21=0.08(60)/1 Hauptzeit T:*/21-9=0.06(60)/1 Nebenzeit Z:3-4 Fern @@ -14234,7 +14261,7 @@ C:bei Preselection bundesweit, Anmeldung kostenfrei C:Reseller von ECONOPHONE : Telco D:dtag # Inlands-Tarife -Z:2-4 Inland +Z:1-4 Inland T:W/8-18=0.119(60)/1 T:W/18-21,6-8=0.099(60)/1 T:W/21-6=0.058(60)/1 @@ -14251,7 +14278,7 @@ A:+49176,+49179 # E2 T:*/8-18=0.59(60)/30,0.59(60)/6 T:*/18-8=0.57(60)/30,0.57(60)/6 # Auslandstarife - warum bloß so viele... -Z:200 +Z:200 T:*/*=2.49(60)/1 A:Afghanistan,Äthopien,Ascension Inseln,Bangladesch,Bhutan,Elfenbeinküste A:Komoren,Kongo,Laos,Mali,Mikronesien,Nauru,Nepal,Palau,Seychellen @@ -14533,11 +14560,11 @@ C:Oberweg 15, 82024 Taufkirchen bei M P:122 Motorola C:Electronic GmbH, Hagenauer Straße 47, 65203 Wiesbaden 010022 ##################################################################### -+P:125 Mediascape -+C:Mediascape Communications GmbH, Usedomstraße 19, 22047 Hamburg -+##################################################################### -+# -+# +P:125 Mediascape +C:Mediascape Communications GmbH, Usedomstraße 19, 22047 Hamburg +##################################################################### +# +# # # P:130 tnp telenet @@ -14579,7 +14606,7 @@ P:150 Drillisch G:01-Jul-1999 D:dtag C:AG, Horbeller Straße 33, 50858 Köln 010050 -Z:2-4 Deutschland +Z:1-4 Deutschland A:+49 T:W/08-21=0.11/60,0.11(60)/15 T:W/21-08=0.07/60,0.07(60)/15 diff --git a/isdnlog/tools/isdnrate b/isdnlog/tools/isdnrate deleted file mode 100755 index 0bd1f376..00000000 --- a/isdnlog/tools/isdnrate +++ /dev/null @@ -1,1289 +0,0 @@ -#!/usr/bin/perl -# -# Copyright 1999 by Leopold Toetsch -# -# This program is free for private use. Private use means, you -# may install and run this program on your home/office computer(s). -# But you are not allowed to use this program on public webservers. -# -# For commercial usage on public webservers contact the author. - -use CGI qw(:standard); -use CGI::Carp 'fatalsToBrowser'; -use strict; -use GD; -use IO::Handle; -# socket stuff -my $use_sockets=1; -use Socket; -my $server='/tmp/isdnrate'; - -# configure adjusts these n/y :-( -my $MKTEMP= '/bin/mktemp'; -my $ISDNRATE='/home/lt/src/testi4l/isdnlog/bin/isdnrate'; -my $CODEF= '/home/lt/src/testi4l/isdnlog/tools/zone/at/code'; -my $tempdir=$ENV{'DOCUMENT_ROOT'}; -my $DEFLEN=153; - -my $debug=0; -my $LEER='--kein--'; -$tempdir = "$tempdir/tmp"; -my $tempdir_url = '/tmp'; -# end configurable - -# cgi -my $q=new CGI; -# some security things -$CGI::POST_MAX=1000; -$CGI::DISABLE_UPLOADS=1; - -# data -my @countries=($LEER, "Afghanistan","Ägypten","Alaska","Albanien","Algerien", -"Amerikanisch-Samoa","Amerikanische Jungferninseln","Andorra", -"Angola","Anguilla","Antarktis","Antigua und Barbuda","Äquatorial-Guinea", -"Argentinien","Armenien","Aruba","Ascension", -"Aserbaidschan","Äthiopien","Atlantischer Ozean (Ost)", -"Atlantischer Ozean (West)","Australien","Azoren", -"Bahamas","Bahrain","Bangladesch","Barbados","Belgien", -"Belize","Benin","Bermuda","Bhutan","Bilbao","Bolivien","Bosnien-Herzegowina", -"Botsuana Botswana","Brasilien","Britische Jungferninseln", -"Brunei","Bulgarien","Burkina Faso Obervolta","Burundi","Cape Verde", -"Chatham-Inseln","Chile","China","Cookinseln","Costa Rica", -"Deutschland","Diego Garcia","Dominica","Dominikanische Republik","Dschibuti", -"Dänemark","Ecuador","Edinburgh", -"El Salvador","Elfenbeinküste Cote de Ivoire", -"Eritrea","Estland","Falklandinseln","Fidschi","Finnland","Frankfurt", -"Frankreich","Französisch-Guayana","Französisch-Polynesien", -"Freephone Niederlande","Freephone Schweiz","Färöer-Inseln","Gabun", -"Gambia","Georgien","Gerona","Ghana","Gibraltar","Grenada","Griechenland", -"Großbritannien","Grönland","Guadeloupe","Guam", -"Guantanamo","Guantanamo Bay","Guatemala","Guinea","Guinea-Bissau","Guyana", -"Haiti","Hawaii","Honduras","Hongkong","Indien", -"Indischer Ozean","Indonesien","Inmarsat A","Inmarsat A Daten/Fax", -"Inmarsat Aero","Inmarsat B","Inmarsat B HSD","Inmarsat M","Inmarsat Mini-M", -"Irak","Iran","Iridium 008816","Iridium 008817","Irland", -"Island","Israel","Italien","Jamaika", -"Japan","Jemen (Arab. Republik)","Jordanien","Jugoslawien", -"Kaimaninseln","Kambodscha","Kamerun","Kanada","Kanarische Inseln","Kasachstan", -"Katar","Kenia","Kirgisien","Kirgistan","Kiribati","Kokosinseln","Kolumbien", -"Kongo","Korea Rep. (South)","Kroatien","Kuba", -"Kuwait","Laos","Lesotho","Lettland","Leuven","Libanon", -"Liberia","Libyen","Liechtenstein","Litauen","Luxemburg","Macao","Madagaskar", -"Madeira","Malawi","Malaysia","Malediven","Mali","Mallorca","Malta", -"Marianen (SaipanNord-)","Marokko","Marshallinseln","Martinique / Franz. Antillen", -"Mauretanien","Mauritius","Mayotte","Mazedonien","Mexiko","Midway-Inseln", -"Mikronesien","Moldavien Moldau (Republik)","Monaco","Mongolei","Montserrat", -"Mosambik","Myanmar Burma","Namibia","Nauru","Nepal","Neukaledonien", -"Neuseeland","Nicaragua","Niederl. Antillen","Niederlande", -"Niger","Nigeria","Niue-Inseln","Nordirland","Nordkorea","Norfolkinseln", -"Norwegen","Oman","Österreich","Pakistan","Palau /Belau","Panama", -"Papua-Neuguinea","Paraguay","Pazifischer Ozean", -"Peru","Philippinen","Pitcairn Inseln","Pitcairn Islands", -"Polen","Portugal","Puerto Rico","Reunion","Rotterdam","Ruanda","Rumänien", -"Russische Föderat. (westl.)","Russische Förderation (östl.)", -"Salomonen","Sambia","San Marino","Sao Tome und Principe","Saudi Arabien", -"Schweden","Schweiz","Senegal", -"Seyschellen","Sierra Leone","Simbabwe","Singapur","Slowakische Republik", -"Slowenien","Somalia","Spanien","Sri Lanka","St. Helena", -"St. Kitts und Nevis","St. Lucia","St. Pierre und Miquelon","St. Vincent und Grenadinen", -"Sudan","Suriname","Swasiland","Syrien","Südafrika","Südkorea", -"Tadschikistan","Taiwan","Tansania","Tarragona","Teneriffa", -"Thailand","Togo","Tokelan","Tokyo","Tonga","Trinidad und Tobago", -"Tristan da Cunha","Tschad","Tschechische Republik","Tunesien","Turkmenistan", -"Turks- und Caicosinseln","Tuvalu","Türkei","USA", -"Uganda","Ukraine","Ungarn","Uruguay","Usbekistan","Valencia","Vanuatu", -"Vatikan","Venezuela","Ver. Arabische Emirate", -"Vietnam","Wake Inseln","Wallis und Futuna","Weihnachtsinseln","Weissrussland", -"West-Samoa","Zaire","Zentralafrikanische Republik","Zypern"); - -my %towns = (0 => $LEER); -my (%url, $len, $TITLE); -my ($weekly, $daily, @names, $help, $mix); -# main -$|=1; -$TITLE="Telefonkosten"; - -if ($debug==2) { - &html_header('debug',1); - $q->print(hr, $q->dump()); - $q->print(hr); -} -if (param('info')) { - &html_header("$TITLE - Info",0); - &info(param('info')); -} -else { - $weekly=param('graf') =~ /Wo/; - $daily=param('graf') =~ /Tag/; - $mix=param('mix'); - my $subt = $mix?"Gesprächsmix":$daily?"Tagesverlauf": - $weekly?"Wochenverlauf":"Einzelgespräch"; - &html_header("$TITLE - $subt",$mix?0:1); - &read_towns unless($mix); - @names=param(); - $help=0; - push(@names, 'help_tel.x') if (@names && !param('tel') && - !param('town') && !param('country') && !param('mix')); - foreach (@names) { - if (/help_(.*?)\.x/) { - show_help($1); - $help=1 - } - } - if (param('clear')) { # clear mix - my $n; - param('mix',$mix=10); - param('from',''); - foreach $n (0..$mix-1) { - foreach ('tel','oft','len','dday') { - param("$_$n", ''); - } #for - } - param('best','20'); - param('prov',''); - param('xprov',''); - param('_3D','on') - } - if (!$help) { - &print_table if(param('tab') eq 'Tabelle'); - &make_graf if(param('graf')); - } - if (param('more')) { - $mix+=10 ; - param('mix', $mix); - } - if (!param()) { - param('best','20'); - param('_3D','on'); - } - &print_form; - &clean_up; -} - $q->print(p, - hr, - div({-class=>'sm'}, - 'Die Tarife der Provider ändern sich häufig und können daher ', - 'eventuell ungenau sein. Wenn ein Tarif falsch sein sollte, wenden ', - 'Sie sich bitte', - ul(li('in Österreich an ', - a({-href=>'mailto:reinelt@eunet.at?subject=Tarife'}, - 'Michael Reinelt')), - li('in Deutschland an ', - a({-href=>'mailto:rate-de@Joker.E.Ruhr.de?subject=Tarife'}, - 'die deutsche ISDN-Rate Crew'))), - ' oder an den Autor dieses Pogrammes ', - a({-href=>'mailto:lt@toetsch.at?subject=Tarife'},'Leopold Tötsch.') ), - "\n" - ); -$q->print(end_html); - -1; - -# subs - -sub html_header { - my($title, $use_script) = @_; - my $script; - $q->print(header); - if ($use_script) { - $script = q( - tim = 0; - function start(but) { - if(document.form.Start.value=='Start') { - tim=setInterval("run()",1000); - document.form.len.value=0; - document.form.Start.value='Stop'; - document.form.now.checked=false; - j=new Date(); - document.form.day.value=j.getDate()+'.'+(j.getMonth()+1)+'.'+j.getYear(); - document.form.hour.value=j.getHours()+':'+j.getMinutes()+':'+j.getSeconds(); - } - else { - clearInterval(tim); - document.form.Start.value='Start'; - } - } - function run() { - document.form.len.value++; - } - );#q - } - else { - $script=''; - } - my $style = q( - -); - - $q->print(start_html(-title=>$title, -bgcolor=>'#f0f0f0', - -script=> $script, -head=>style($style)), - h1({-align=>'center'},$title)); -} - -sub read_towns { - my($c, $t); - open(IN, $CODEF) || $q->print("Can't read $CODEF"); - while () { - chomp; - ($c, $t) = split(/\t/,$_,2); - $towns{$c}=$t; - } - close(IN); -} - -sub help { - my $help = 'help_'. $_[0]; - image_button(-name=>$help, -src=>'/pic/help.gif', -border=>0); -} - -sub show_help { - my $what = $_[0]; - if ($what eq 'from') { - $q->print('Normalerweise weiß isdnrate, von wo Sie telefonieren. ', - 'Sie können hier aber einen anderen Standort eingeben. ', - 'Dann werden die Gebühren von dieser Vorwahl aus berechnet', - br,'Z.b. ', tt('02345')); - } - elsif($what eq 'tel') { - $q->print('Geben Sie die Nummer ein, zu der Sie die Gebühren ', - 'berechnet haben möchten.',br, - ul(li(tt("1234\t"),'Ortsnetz'), - li(tt("012345\t"),'Anderer Ort'), - li(tt("00156789\t"),'Ausland'), - li(tt("[0]1012012345\t"),'Provider+Nummer')), - 'oder wählen Sie aus der Liste der Städte oder Länder.',br, - 'Hinweis: eine ausgewählte Stadt hat Priorität vor einem Land, ', - 'dieses vor einer manuellen Eingabe.'); - } - elsif($what eq 'len') { - $q->print('Wählen Sie hier Dauer und Zeitpunkt des Gesprächs. ', - 'Die Dauer ist Standardmäßig in Sekunden anzugeben, Sie können ', - 'aber auch durch anhängen eines ',i('m'),' die Dauer in Minuten ', - 'eingeben, z.B. ',tt(i('2m 33')),'.',br, - 'Mittels ',i('Start'),' können Sie aktuelle Gespräche mitstoppen ', - 'und sich so die angefallenen Gesprächsgebühren anzeigen lassen.',br, - 'Wenn ',i('Jetzt'),' nicht angekreuzt ist, können Sie einen beliebigen ', - 'Zeitpunkt eingeben. Ist kein Tag angegeben, wird heute angenommen. ', - 'Ist auch keine Uhrzeit angegeben, gilt der Zeitpunkt der Auswahlbox.'); - } - elsif($what eq 'tab') { - $q->print('Mit der Schaltfläche ',i('Tabelle'),' erhalten Sie eine ', - 'Aufstellung der Telefongebühen pro Provider.'); - } - elsif($what eq 'graf') { - $q->print('Mit der Schaltfläche ',i('Grafik'),' erhalten Sie eine ', - 'grafische Darstellung des Verlaufs der Telefongebühen bis ', - 'zur gewählten Dauer. Damit sehen Sie sehr übersichtlich, ', - 'ob der Provider Sekundentakt oder einen anderen vewendet.', - br - 'Um kleinere Bilder (schneller) zu erhalten, verringern Sie die Größe ', - 'und/oder schalten Sie ',i('3D'),' aus.'); - } - elsif($what eq 'tag') { - $q->print('Die Schaltflächen ',i('Tag'),' und ',i('Woche'),' zeigen die ', - 'Gebühren für die gewählte Dauer und den gewählten Tag im Verlauf ', - 'eines Tages bzw. einer Woche.'); - } - elsif($what eq 'prov') { - $q->print('Wählen Sie hier welche und wie viele Provider angzeigt werden. ', - 'Sind ',i('nur Provider'),' angegeben, werden nur diese angezeigt. ', - 'Sind ',i('nicht Provider'),' angegeben, werden diese nicht angezeigt.', - br,'Hinweis: wenn Sie mehrere Provider eingeben, trennen Sie diese ', - 'mit einem Beistrich oder Leerzeichen. Sie können die ', - 'Providernummer eingeben z.B. ',tt('01033,010050'),' oder auch in ', - 'einer abgekürzten Variante, wobei Sie in Deutschland bei den ', - '6-stelligen Providernummern 100 addieren, also ',tt('33,150'),' für obiges Beispiel.', - br,i('Reset'),' stellt den vorhergehenden Zustand wieder her, ', - i('Löschen'),' löscht alle Eingabefelder, bzw. stellt Standardwerte ein.'); - } - elsif($what eq 'mix') { - $q->print('Geben Sie die Nummer ein, zu der Sie die Gebühren ', - 'berechnet haben möchten.',br, - ul(li(tt("1234\t"),'Ortsnetz'), - li(tt("012345\t"),'Anderer Ort'), - li(tt("00156789\t"),'Ausland'), - li(tt("Landesbezeichnung\t"),'Ausland'), - li(tt("[0]1012012345\t"),'Provider+Nummer')), - 'Und wie oft Sie im Zeitraum, wie lange (in Sekunden) dorthin ', - 'zu welcher Tageszeit durchschnittlich telefonieren.',br, - 'Wenn Sie mehr Eingabefler benötigen, klicken Sie auf ', - i('Mehr')); - } - elsif($what eq 'tabm') { - $q->print('Sie erhalten eine Tabelle mit den Gesamtkosten ', - 'sowie mit den einzelnen Teilen Ihres Gesprächsmix. ', - 'Provider, die nicht alle Dienste zu Verfügung stellen ', - 'werden mit ', tt(i('**')), ' markiert.'); - } - elsif($what eq 'grafm') { - $q->print('Sie bekomme eine grafische Übersicht über Ihren ', - 'gewählten Gesprächsmix. Jede Stufe im Diagramm zeigt ', - 'die Gebühren für den jeweiligen Dienst. ', - 'Rechst sehen Sie die Gesamkosten für all Gespräche',br, - 'Provider, die nicht alle Dienste zu Verfügung stellen ', - 'werden mit ', tt(i('**')), ' markiert.', - br - 'Um kleinere Bilder (schneller) zu erhalten, verringern Sie die Größe ', - 'und/oder schalten Sie ',i('3D'),' aus.'); - } - if ($what =~ /tab|graf/) { - $q->print(br,'Sie können auf die Providernummer/-bezeichnung ', - 'klicken um weitere Information über diesen Provider zu ', - 'erhalten.'); - } -} - -sub print_form { - my($t, @cod, $i); - foreach $t (sort {$towns{$a} cmp $towns{$b} } (keys(%towns))) { - push(@cod, $t) - } - if (param()) { - $q->print(p, hr, h3('Neue Eingabe')); - } - else { - param('now','on'); - param('best',20); - param('len',$DEFLEN); - } - my $t= q!$q->print( - start_form(-name=>'form'), - table({-border=>8}, - Tr(td(table({-bgcolor=>'#ffffe0', -cellspacing=>0, -cellpadding=>0}, - Tr(td([' ', b('Ich wähle von: ')]), - td({-colspan=>2},textfield(-name=>'from', -size=>20, -maxlength=>20)), - td([' ', - &help('from')])), !; - if ($mix) { - $t .= q!Tr([ - td({-colspan=>6},hr), - td([' ',b('Und Telefoniere nach   '), - b('So oft   '), - b('So lang (s)  '), - b('am'),&help('mix')]), - !; - for $i (0..$mix-1) { - my($ii)=$i+1; - $ii=qq('$ii  '); - $t .= q!Tr(td([! . "$ii" .q!,textfield(-name=>"tel! .$i .q!", -size=>20, -maxlength=>20), - textfield(-name=>"oft! .$i .q!", -size=>4, -maxlength=>4), - textfield(-name=>"len! .$i .q!", -size=>4, -maxlength=>4), - popup_menu(-name=>"dday! .$i .q!", -values=> ['W','N'], - -labels=> {'W' =>'Tag','N'=>'Nacht'})!; - $t .= q!,submit('more','Mehr')! if($i==$mix-1); - $t .= q!])),!; - } # for - } # if mix - else { - $t .= q!Tr([ - td({-colspan=>6},hr), - td([' ', 'nach TelefonNummer: ', - textfield(-name=>'tel', -size=>20, -maxlength=>20),' ', - ' ',&help('tel')])]), - Tr( - td([' ','oder Stadt: ']), - td({-colspan=>2},popup_menu(-name=>'town', -values=> \@cod, -labels=> \%towns)), - td([' ',' ']) - ), - Tr( - td([' ','oder Ausland: ']), - td({-colspan=>2},popup_menu(-name=>'country', -values=> \@countries)), - td([' ',' ']) - ), - Tr([ - td({-colspan=>6},hr), - td([' ','Dauer s o. 2m 33', - textfield(-name=>'len', -size=>6, -maxlength=>6), - 'Stoppuhr', - button(-name=>'Start',-value=>'Start', -onClick=>'start()'), - &help('len')]), - td([' ',checkbox(-name=>'now', -label=>'Jetzt - oder am'), - popup_menu(-name=>'dday', -values=> ['W','N','E'], - -labels=> {'W' =>'Werktag','N'=>'Nacht','E'=>'Sonntag'}), - ' ',' ',' ']), - td([' ','oder um (hh[:mm[:ss]]) ', - textfield(-name=>'hour', -size=>8, -maxlength=>8), - 'am (dd[.mm[.jj]]) ', - textfield(-name=>'day', -size=>10, -maxlength=>10),' ']), - !; - } # else mix - $t .= q! - td({-colspan=>6},hr), - td({-bgcolor=>'#ff80c0', colspan=>6, align=>'center'},b('Ausgabe')), - td({-bgcolor=>'#ffc080'},[' ', - submit('tab','Tabelle'), - !; - if ($mix) { - $t .= q! - 'oder', - hidden(-name=>'mix', value=>$mix), - ' ', - &help('tabm')]), - !; - } - else { - $t .= q! - 'mit', - popup_menu(-name=>'explain', -values=> [0,1,2], - -labels=> {0 =>'Nur Kosten',1=>'Zonen',2=>'Details'}), - ' ', - &help('tab')]), - !; - } - $t .= q! - td([ ' ', - submit('graf',' Grafik '), - 'Größe', - popup_menu(-name=>'swidth', -values=> ['1024','800','640'], - -labels=> {'1024' =>'groß','800'=>'mittel','640'=>'klein'}), - checkbox(-name=>'_3D',label=>'3D'), - &help('grafm')]), - !; - if (!$mix) { - $t .= q! - td({-bgcolor=>'#ffdead'},[ - ' ', - submit('graf',' Tag '), - "oder Tagespreise", - ' ', - ' ', - &help('tag')]), - td({-bgcolor=>'#ffdead'},[ - ' ', - submit('graf','Woche '), - "oder Wochenpreise", - ' ',' ',' ' - ]), - !; - } - $t .= q! - td({-colspan=>6},hr), - td([' ','der besten ', - textfield(-name=>'best', -size=>2, -maxlength=>2), - 'Provider',' ',&help('prov')]) - ]), - Tr( - td([' ','oder nur Provider']), - td({-colspan=>2},textfield(-name=>'prov', -size=>20, -maxlength=>100)), - td([' ',' ']) - ), - Tr( - td([' ','oder nicht Provider']), - td({-colspan=>2},textfield(-name=>'xprov', -size=>20, -maxlength=>100)), - td([' ',' ']) - ), - Tr( - td([' ',' ',' ', - reset('Reset'), - !; - if ($mix) { - $t .= q!submit('clear','Löschen'),!; - } - else { - $t .= q!defaults('Löschen'),!; - } - $t .= q! - ' ']) - ) - )))), - end_form); - !; - eval($t); - # uff -} - -sub del_vbn { - my @p = split(/,/, $_[0]); - my (@np, $ret); - foreach (@p) { - if (s/^0?10//) { - $_=100+$_ if (length($_) == 3); - } - push(@np, $_); - } - $ret=join(',',@np); - $ret; -} -sub parse_len { - my $l = $_[0]; - if ($l =~ /(\d+)\s*m\s*(\d)\s*s?/) { - 60*$1+$2; - } - else { - $l =~ /(\d+)/; - $1; - } -} -sub call_isdnrate { - my ($hour, $day); - my ($lines) = @_; - my ($now, $explain, $tel, $from, $best, $prov); - if (param('town') != '0' && !$mix) { - param('country', $LEER); - $tel = '0'.param('town'); - param('tel',$tel); - } - elsif (param('country') !~ /--/ && !$mix) { - param('tel',''); - param('town', $LEER); - $tel=param('country'); - } - else { - $tel = param('tel'); - } - $tel =~s/ /_/g; # preserv spaces - return if($tel eq ''); - my @args=($ISDNRATE,"-H", $tel); - unless (param('now')) { - push(@args, "-h$hour") if ($hour=param('hour')); - push(@args, "-d$day") if ($day=param('day')||param('hour')?param('day'):param('dday')); - } - if ($prov=param('xprov')) { - $prov =~ s/\s+/,/g; - $prov=&del_vbn($prov); - push(@args, "-x$prov"); - } - elsif ($prov=param('prov')) { - $prov =~ s/\s/,/g; - $prov=&del_vbn($prov); - push(@args, "-p$prov"); - } - push(@args, "-f$from") if ($from=param('from')); - if (param('graf') && !$mix) { - push(@args,$weekly? '-G98':$daily?'-G97':'-G99'); - } - else { - push(@args, "-X$explain") if ($explain=param('explain')); - } - $len=&parse_len(param('len')) || $DEFLEN; - $len=&min($len, 1200); - param('len', $len); - push(@args, "-l$len"); - $best=param('best') || 20; - param('best', $best>0 ? $best: 20); - push(@args, "-b$best") ; - print "
@args
" if($debug); - if ($use_sockets) { - socket(SOCK, PF_UNIX, SOCK_STREAM, 0) || die("socket: $!"); - connect(SOCK, sockaddr_un($server)) || die("connect: $!"); - SOCK->autoflush(0); - shift(@args); - foreach (@args) { - print SOCK "$_ "; - } - SOCK->autoflush(1); - my $line; - while (defined($line = )) { - push(@$lines, $line); - } - close(SOCK); - } - else { - open(PIPE, "-|") || exec(@args) == 0 or die "Can't @args: $?"; - @$lines = ; - close(PIPE); - } -} - -sub round { - $_[0] == 0 ? '--.--': sprintf("%.4f", $_[0]); -} - -sub call_mix { - my ($lines) = @_; - my ($n, $N); - my (%pcost, %ptot, $ch, %pstring, %lines); - my ($pnum, $prov, $cur, $charge, $rest); - # kill empty - foreach $n (0..$mix-1) { - next if(param("tel$n") && param("oft$n") && param("len$n")); - # $n is empty - foreach $N ($n+1..$mix-1) { - if(param("tel$N") && param("oft$N") && param("len$N")) { - foreach ('tel','oft','len','dday') { - param("$_$n", param("$_$N")); - param("$_$N", ''); - } #for - last; - }#if - } - } - $N=0; - foreach $n (0..$mix-1) { - my(@one); - last unless(param("tel$n") && param("oft$n") && param("len$n")); - param('tel', param("tel$n")); - param('len', param("len$n")); - param('dday', param("dday$n")); - &call_isdnrate(\@one); - shift(@one); # -H - shift(@one); # empty - foreach (@one) { - ($pnum, $prov, $cur, $charge, $rest) = &split_line($_); - $ptot{$pnum} += ($ch=&round($charge * param("oft$n"))); - $pstring{$pnum} = $prov; - $pcost{$pnum}[$N]= $ch; - $lines{$pnum}++; - } - $N++; - } - param('mix', &min($N+5,$mix)); - $len=$N+1; - foreach $pnum (keys(%lines)) { - $pstring{$pnum} .= ' **' if($lines{$pnum}<$N); - } - if (param('tab')) { - param('explain',1); - foreach $pnum (sort { $ptot{$a} <=> $ptot{$b} } (keys(%ptot))) { - $rest = ''; - foreach (@{ $pcost{$pnum} }) { - $ch = &round($_); - $rest .= qq($ch  ); - } - $prov = $pstring{$pnum}; - $ch = $ptot{$pnum}; - push(@$lines, "$pnum:$prov $cur $ch $rest"); - } - } - else { # graf - foreach $pnum (keys(%ptot)) { - push(@$lines, "@ $pnum"); # start - $ch = 0; - foreach $n (0..$N-1) { - $ch += 0+&round($pcost{$pnum}[$n]); - push(@$lines, "$n $ch"); - } - push(@$lines, "$N $ch"); - $prov = $pstring{$pnum}; - push(@$lines, "@---- $cur $prov"); # end - } - } -} - -sub print_table { - my (@lines); - my($pnum, $prov, $cur, $charge, $bgcolor, $i, $rest, $url); - if ($mix) { - &call_mix(\@lines); - } - else { - &call_isdnrate(\@lines); - $lines[0] = &fmt_date($lines[0]); - $q->print(p({-class=>'t'},$lines[0])); - shift(@lines); # -H - shift(@lines); # empty - } - (undef, $cur) = split(/ +/, $lines[0]); - $q->print(""); - $q->print("") if(param('explain')); - if ($mix) { - for($i=1;$i<$len;$i++) { - $q->print(""); - } - } - $q->print("\n"); - $i=0; - foreach (@lines) { - ($pnum, $prov, $cur, $charge, $rest) = &split_line($_); - $charge=&round($charge); - $url{$pnum}=$q->self_url ."&info=$pnum"; - $url=a({-href=>$url{$pnum}}, $prov); - $bgcolor=++$i&1?' bgcolor="#e0e0e0"':''; - $q->print(qq()); - $q->print(qq()) if(param('explain')); - $q->print("\n"); - } - $q->print("
Nr.Provider$curInfo$i
$pnum$url   $charge   $rest
\n"); - $q->print(p({-class=>'t'}, - 'Bitte beachten Sie, daß Wechsel in der Taktung in der Tabelle ', - 'nicht angezeigt werden, diese aber sehr wohl in der Berechnung ', - 'berücksichtig werden.')); - -} - -sub split_line { - my $l = $_[0]; - my ($pnum,$prov, $cur, $charge, $rest); - ($prov, $cur, $charge) = split(/ +/, $l); - ($pnum,$prov) = split(/:/, $prov); - if(param('explain')) { - ($charge,$rest) = split(/ /, $charge, 2); - $rest =~ s/0+s/0s/g; - } - ($pnum,$prov, $cur, $charge, $rest); -} - -sub fmt_date { - my %days=(Mon=>'Mo',Tue=>'Di',Wed=>'Mi',Thu=>'Do',Fri=>'Fr',Sat=>'Sa',Sun=>'So'); - my %mons=(Mar=>'Mär',May=>'Mai',Oct=>'Okt',Dez=>'Dez'); - my ($db, $m, $d, $t, $y, $k); - if ($_[0] =~ m/(\d+) Sekunden/) { - $k = $&; - $d = $1; - if ($d >= 60) { - $m = int($d / 60); - $d = $d % 60; - my $mn = $m > 1 ? 'n' : ''; - my $sn = $d > 1 ? 'n' : ''; - my $st = $d ? " $d Sekunde$sn": ''; - $_[0] =~ s/$k/$m Minute$mn$st/; - } - } - if ($_[0] =~ s/(\w{3}) (\w{3}) (\d\d?) (\S{8}) (\d{4})//) { - ($db, $m, $d, $t, $y) = ($1,$2,$3,$4,$5); - $db=$days{$db}; - $m=$mons{$m} ? $mons{$m} : $m; - $t = '' if($daily); - $_[0] .= "$db $d. $m $y um $t" unless($weekly); - } - $_[0]; -} - -sub min { - $_[0] < $_[1] ? $_[0] : $_[1]; -} -sub max { - $_[0] > $_[1] ? $_[0] : $_[1]; -} -sub fmts { - my($h,$m,$s); - $s = $_[0]; - $h = int($s/3600); $s -= $h*3600; $h='' unless($h); $h .= 'h' if($h); - $m = int($s/60); $s -= $m*60; $m='' unless($m);$m .= 'm' if($m); - $s='' unless($s);$s .= 's' if($s); - "$h$m$s"; -} -my($H, $xo, $yo, $xs, $ys, $sy, $DEP); -sub make_graf { - my ($W,$LEG,$LIN,$white,$black,$lgrey,$dgrey,$llgrey,$borcol,$tempf,$i); - my (@lines, $n, $dx, @rawcolors, @colors, %pstring, %unused); - my ($prov, $cur, $charge, $pnum, %pc, %pt, $r, $g, $bl); - my ($swidth, %dim); - $swidth=param('swidth')||1024; - # dimensions - %dim = (1024=>[600,300,190], 800=>[500,240,180],640=>[300,200,180]); - $W=$dim{$swidth}[0]; - $H=$dim{$swidth}[1]; - $LEG=$dim{$swidth}[2]; - $DEP=$H/2; - $LIN=10; - $dx = 10; - $xo=35; $yo=20; - # make some colors - $n=0; - foreach $g ('00','33','66','99') { - foreach $r ('00','33','66','99') { - foreach $bl ('00','33','66','99') { - $i= ++$n*29 % (4*4*4); - push(@rawcolors, "$i-0x$r-0x$g-0x$bl"); - } - } - } - @rawcolors=sort(@rawcolors); - # get data - my ($text); - if ($mix) { - &call_mix(\@lines); - } - else { - &call_isdnrate(\@lines); - } - foreach (@lines) { - if (/^\@--+ (\S+) (\S.*)/) { # end - if (($pnum && $#{ $pc{$pnum} } == 0) || $2 eq '(null)') { # any data - pop( @{ $pt{$pnum} } ); - pop( @{ $pc{$pnum} } ); - delete $pstring{$pnum}; - $unused{$pnum}++; - next; - } - $pstring{$pnum} = $2; - $cur=$1; - if ($daily || $weekly) { - push( @{ $pt{$pnum} }, $daily?24:7*24); # time - push( @{ $pc{$pnum} }, $pc{$pnum}[0]); # charge - } - $url{$pnum}=$q->self_url ."&info=$pnum"; - $pnum = ''; - } - elsif (/^\@ (\d+)/) { # start - $pnum=$1; - if (!$daily && !$weekly && !$mix) { - push( @{ $pt{$pnum} }, 0); # time - push( @{ $pc{$pnum} }, 0); # charge - } - } - elsif (/(\d+) (\d+(\.\d+)?)/ && $pnum) { - push( @{ $pt{$pnum} }, $1==1&&!$mix?0.1:$1); # time - push( @{ $pc{$pnum} }, $2); # charge - } - elsif (/ekunden/) { # -H text - $text = $_; - } - } - # info - $text = &fmt_date($text); - $q->print(p({-class=>'t'},$text)); - - my ($p, $max, $dy, $my, $min); - $max=$n=0; - $min = 99999; - - # sorting cheapest 1. - sub bylast { $pc{$a}[$#{$pc{$a}}] <=> $pc{$b}[$#{$pc{$b}}] } - sub byav { - my ($v, $sa, $sb); - foreach $v (0..$#{ $pc{$a} }) { - $sa += $pc{$a}[$v]; - } - foreach $v (0..$#{ $pc{$b} }) { - $sb += $pc{$b}[$v]; - } - $sa <=> $sb; - } - my(@all, $sortfunc); - $sortfunc = $daily||$weekly ? \*byav : \*bylast; - foreach $p (sort $sortfunc (keys(%pstring))) { - push(@all, $p); - # calc max - foreach $i (0 .. $#{ $pc{$p} }) { - $max = $pc{$p}[$i] if ($pc{$p}[$i] > $max); - $min = $pc{$p}[$i] if ($pc{$p}[$i] < $min); - } - last if (++$n >= param('best')); - } - return unless($n); - @all=reverse(@all); - my ($font, $tx, $lw); - $font = GD::gdMediumBoldFont; - $lw = int($DEP/$n); - $DEP=$lw*$n; - if (!param('_3D')) { - $DEP=0;$lw=2; - $LIN=50; - } - # make img - my $im = new GD::Image($W+$LEG+$DEP, $H+$DEP); - # alloc colors - my(%rcols); - my $c = 0; - foreach $p (@all) { - (undef, $r, $g, $b) = split(/-/, $rawcolors[$c++]); - $rcols{$p} = $im->colorAllocate(eval($r), eval($g), eval($b)); - } - $white = $im->colorAllocate(255,255,255); - $llgrey = $im->colorAllocate(0xf0,0xf0,0xf0); - $im->transparent($llgrey); - $lgrey = $im->colorAllocate(0xe0,0xe0,0xe0); - $dgrey = $im->colorAllocate(0x80,0x80,0x80); - $black = $im->colorAllocate(0,0,0); - $borcol =$im->colorAllocate(0xff,0xff,0xe0); - # all transparent - $im->filledRectangle(0,0,$W+$LEG-1+$DEP,$H-1+$DEP,$llgrey); - # drawing region - my $poly = new GD::Polygon; - $poly->addPt($DEP,0); - $poly->addPt($xo,$DEP); - $poly->addPt($xo,$DEP+$H); - $poly->addPt($W,$DEP+$H); - $poly->addPt($W+$DEP,$H); - $poly->addPt($W+$DEP,0); - $im->filledPolygon($poly, $white); - # draw axis region - my $poly = new GD::Polygon; - $poly->addPt(0,$DEP+0); - $poly->addPt(0,$DEP+$H-1); - $poly->addPt($W-1,$DEP+$H-1); - $poly->addPt($DEP+$W-1,$H-1); - $poly->addPt($DEP+$W-1,$H-1-$yo); - $poly->addPt($W-1,$DEP+$H-$yo); - $poly->addPt($xo,$DEP+$H-$yo); - $poly->addPt($xo,$DEP+0); - $poly->addPt($DEP+$xo,0); - $poly->addPt($DEP,0); - # borders - $im->rectangle($DEP+$xo,0,$DEP+$W-1,$H-$yo,$black); - $im->line($W,$DEP,$W+$DEP,0,$black); - $im->line($xo,$H+$DEP-$yo,$xo+$DEP,$H-$yo,$black); - $im->filledPolygon($poly, $borcol); - $im->polygon($poly, $black); - $im->line($W-1, $DEP+$H-1, $W-1, $DEP+$H-$yo, $black); # last x-tick - - my ($x,$y); - # y-scaling - ($sy,$my,$dy) = _best_ends($min, $max,4..6); - $dy = ($my-$sy)/$dy; - $ys = ($H-$yo)/($my-$sy); - # y-axis - sub yaxis { - my($fg) = $_[0]; - my($col) = $fg?$lgrey:$dgrey; - for ($i = $sy; $i <= $my; $i+=$dy) { - $y = &_y($i); - $im->line($i<$my&&$i?$xo/2:0, $y,$xo,$y,$black) if($fg); # tick - if($i<$my && $i>$sy) { - if($fg) { - $im->line($xo+1, $y,$W-1,$y,$col); - } - else { - $im->line($xo+1, $y,$xo+1+$DEP,$y-$DEP,$col); - $im->line($DEP+$xo+1, $y-$DEP,$DEP+$W-1,$y-$DEP,$col); - } - } - $im->string($font, 4, $y+2, $i, $black); # price - } - $im->string($font, 4, &_y($my)+3+$font->height, $cur, $black); - } #yaxis - - # x-scaling - if ($weekly) { - $len=7*24+1; - $dx=1; - } - elsif ($daily) { - $len=25; - $dx=2; - } - elsif ($mix) { - $dx=1; - } - else { - $dx = $len>240 ? 60 : $len>=120 ? 20 : 10; - } - $xs = ($W-$xo)/($len-1); - # x-axis - sub xaxis { - my($fg) = $_[0]; - my @days= qw(Mo Di Mi Do Fr Sa So); - my($col) = $fg?$lgrey:$dgrey; - for ($i = 0; $i < $len-1; $i+=$dx) { - if (($weekly && $i%8==0) || !$weekly) { - $x = &_x($i); - $im->line($x, $DEP+$H-$yo/2, $x, $DEP+$H-$yo, $black); # tick - if ($i) { - if($fg) { - $im->line($x, $DEP+$H-$yo-1, $x, $DEP+1, $col); - } - else { - $im->line($DEP+$x, $H-$yo-1, $DEP+$x, 1, $col); - $im->line($x, $DEP+$H-$yo-1, $DEP+$x, $H-1-$yo, $col); - } - } - } - next unless($fg); - if ($weekly) { - $tx=''; - if ($i % 8==0) { - $tx = $i % 24 == 0 ? $days[$i/24] : $i % 24; - } - } - elsif ($daily) { - $tx = $i; - } - elsif ($mix) { - $tx = &fmts(param("len$i")*param("oft$i")) . - param("dday$i") . '=>'. substr(param("tel$i"),0,4); - } - else { - $tx = $i == $dx*(int($len/$dx)-1) ? $i ." s" : $i; # nn s - } - $im->string($font, &_x($i)+3, $DEP+$H-$yo+2, $tx, $black); - } - } # xaxis - # data - &yaxis(0); - &xaxis(0); -#goto nodata; - my ($ii,$k,$x2,$y2,$col, $dep); - $dep=$DEP-$lw if($DEP); - foreach $p (@all) { - foreach $i (0..$#{ $pc{$p} }-1) { - $ii=$i+1; - $x = &_x($pt{$p}[$i]); - $x2 = &_x($pt{$p}[$ii]); - $y = &_y($pc{$p}[$i]); - $y2 = &_y($pc{$p}[$ii]); - if ($i==0 && $y2 && $DEP) { - for $k ($dep ..$dep+$lw-2) { - $im->line($k+$x2, -$k+$y2-1, $k+$x2,-$k+&_y($sy)-3, - $k==$dep ?$rcols{$p} :$lgrey); - } - } - $im->filledRectangle($dep+$x,-$dep+$y,$dep+$x2,-$dep+&_y($sy),$lgrey) if(0); - for ($k=$dep+$lw-1;$k>=$dep;$k--) { - $col = $k>$dep||!$DEP?$rcols{$p}:$black; - if ($pt{$p}[$i]+1 == $pt{$p}[$ii] && !$daily && !$weekly && !$mix) { - $im->line($k+$x, -$k+$y,$k+$x2, -$k+$y2, $col); - } - else { - $im->line($k+$x, -$k+$y, $k+$x2, -$k+$y,$col); - $im->line($k+$x2,-$k+$y, $k+$x2, -$k+$y2,$col); - } - } - } - if ($DEP) { - for $k ($dep ..$dep+$lw-2) { - $im->line($k+$x2, -$k+$y2-1, $k+$x2,-$k+&_y($sy)-3, - $k==$dep ?$rcols{$p} :$lgrey); - } - } - $dep-=$lw if($DEP); - } -nodata: - &yaxis(1); - &xaxis(1); -#goto nolegend; - # legend - my ($ndy, $sty, $mapx, $mapy, @map); - $y=$H-$yo+$DEP; - $i=min($n, $y/($font->height + 1)); - $dep=$lw/2; - foreach $p (reverse(@all)) { - $ndy = ($font->height + 1)*$i; - $sty = &_y($pc{$p}[$#{$pc{$p}}])-$dep; - $y = max($ndy,min($y,$sty)); - $im->dashedLine($W+2+$dep,$sty, $W+$LIN+$DEP,$y, $rcols{$p}); - $im->dashedLine($W+2+$dep+1,$sty-1, $W+$LIN+$DEP+1,$y-1, $rcols{$p}); - $im->string($font, $mapx=$W+$LIN+5+$DEP, $mapy=$y-$font->height/2, "$p ".$pstring{$p}, $rcols{$p}); - &add_map($p, $mapx, $mapy, $font->height, $W+$LEG+$DEP, \@map); - $y -= $font->height+1; - $dep+=$lw if($DEP); - $i--; - } -nolegend: - # front box lines - $im->line($xo+1,$DEP,$W-1,$DEP,!$DEP?$black:$lgrey); - $im->line($W-1,$DEP,$W-1,$DEP+$H-1-$yo,!$DEP?$black:$lgrey); - $im->line($W,$DEP,$DEP+$W-1,1,$lgrey) if($DEP); - # write file - $tempf = `$MKTEMP -q "$tempdir/irXXXXXX"`; - chomp($tempf); - rename($tempf, "$tempf.gif") || $q->print(p,"Can't rename $tempf");; - $tempf = "$tempf.gif"; - open(TEMP,">$tempf") || $q->print(p,"Can't write $tempf"); - print(TEMP $im->gif); - close(TEMP); - # ret img tag - $tempf =~ s!^$tempdir/!!; - $q->print(qq(\n)); - foreach (@map) { - $q->print("$_\n"); - } - $q->print(qq(\n)); - $q->print(img({-src=>"$tempdir_url/$tempf", -height=>$H+$DEP, -border=>0, - -width=>$W+$LEG+$DEP, -align=>'"CENTER"', -usemap=>'#map'})); -} - -sub add_map { - my ($p, $mapx, $mapy, $height, $width, $mref) = @_; - my($xu,$yu, $url); - $mapx=int($mapx); - $mapy=int($mapy); - $xu=int($width-2); - $yu=int($mapy+$height); - $url=$url{$p}; - push(@$mref,qq()); -} -sub _y { - $DEP+$H-$yo-($_[0]-$sy)*$ys; -} -sub _x { - $xo+$_[0]*$xs; -} - -# del gifs older then 1 hour -sub clean_up { - my(@All, $file, $now); - opendir(DIR, $tempdir); - @All = readdir(DIR); - closedir(DIR); - $now=time(); - foreach $file (@All) { - if($now - (stat("$tempdir/$file"))[9] > 3600 && $file =~ /^ir.{6}\.gif/) { - unlink("$tempdir/$file"); - } - } -} - -# info: show info for provider -sub info { - my($pnum) = $_[0]; - my(@lines, $l, $prov, $cur, $charge, $rest, $day, $text, $fromgraf, $sav_q); - $q->delete('info'); - $fromgraf=param('graf'); - $q->delete('graf'); - CGI::delete('graf'); #?? - $sav_q=$q->query_string; - param('prov', $pnum); - param('tab','Tabelle'); - param('xprov',''); - param('explain', 2); - param('now',''); - for $day ('W', 'N') { # - param('day',$day); - for $l (1,140) { - my (@one); - param('len', $l); - call_isdnrate(\@one); - # -H & empty - $text = $one[0] unless($text); - print(pre(@one)) if($debug==2); - (undef, $prov, $cur, $charge, $rest) = &split_line($one[2]); - push(@lines, $rest); - } - } - # restore q/Q - $q = new CGI($sav_q); - - # print report - $q->print(h2('Provider',$pnum,'-', $prov),h3('Tarifinfo')); - $q->print(pre(@lines)) if($debug); - my (@unit, @dur, @mp, $i, $zone, $day, @time); - $i=0; - foreach (@lines) { - m!((\d+\.)?\d+) # unit 1 - .*?/((\d+\.)?\d+)s # cur/dur 3 - \s=\s((\d+\.)?\d+) # mp 5 - \s.*?\( # explain - ([^,]+) # zone? 7 - ,\s(\S+)(\s\(.+?\))? # day day? 8 - (,\s?(.+?))?\)!x; # time 11 - ($unit[$i], $dur[$i], $mp[$i], $zone, $day,$time[$i]) = ($1, $3, $5, $7, $8, $11); - $q->print("$unit[$i], $dur[$i], $mp[$i], $zone") if($debug==2); - $i++; - } - @time=qw(Tag Tag Abend Abend) unless $time[0]; - $text =~ s/^.*?indung //; - $text =~ s/ kost.*//; - $q->print("Bei einem Gespräch ($text) in der Zone '$zone' ", - 'sind die Tarifseinheiten '); - my $any=0; - for ($i = 1; $i <= $#unit; $i++) { - if ($unit[0] != $unit[$i]) { - $any=1; - last; - } - } - if ($any) { - $q->print("unterschiedlich teuer, am Tag ($time[1]), $unit[1], ", - "sonst ($time[3]) $unit[3] $cur."); - $q->param('prov', $pnum); - $q->param('graf', 'Tag'); - $q->delete('_3D'); - $q->delete('tab'); - $q->print(br,'Für eine genauere Gültigkeit der Preise wählen ', - 'Sie bitte die ',a({-href=>$q->self_url},'Tagesübersicht'),'.'); - $q = new CGI($sav_q); - } - else { - $q->print('gleich teuer, und zwar ', $unit[0], " $cur",'.'); - } - $any=0; - for ($i = 1; $i <= $#dur; $i++) { - if ($dur[0] != $dur[$i]) { - $any=1; - last; - } - } - if (!$any) { - $q->print(br,"Die Impulsdauer ist einheitlich $dur[0]s."); - } - elsif ($dur[0] == $dur[1]) { - $q->print(br,"Die Impulsdauer ist am Tag $dur[1]s, sonst $dur[3]s."); - } - else { - $q->print(br,"Der Provider scheint einen Mindestgesprächsgebühr von ", - "$unit[0] $cur zu verrechnen"); - $q->print(", bzw. dauert der erste Taktimpuls $dur[0]s, sonst $dur[3]s") if($dur[0]); - $q->print("."); - } - $any=0; - for ($i = 1; $i <= $#mp; $i++) { - if ($mp[0] != $mp[$i]) { - $any=1; - last; - } - } - $q->print(br,"Das führt in der genannten Zone zu einem Minutenpreis "); - if($any) { - $q->print("von am Tag $mp[1], sonst $mp[3] $cur."); - } - else { - $q->print("von einheitlich $mp[3] $cur."); - } - $q->print(p,hr,h3('Verzonungsinfo'),p('TODO')); - $q->print(p,hr,h3('Gebühren'),p('TODO')); - $q->print(p,hr,h3('Kontakt')); - $q->print(table(Tr([ - td(['Adresse','Todo']), - td(['Homepage','Todo']), - td(['Hotline','Todo']), - td(['Telefon','Todo']), - td(['Telefax','Todo']) - ]))); - param('graf',$fromgraf); - $q->param('graf',$fromgraf); - $q->print(p,hr, a({-href=>'javascript:history.back()'},'[ JS:Zurück ]'), - a({-href=>$q->self_url},'[ Zurück ]')); -} - - -# next is from GIFgraph - -# Usage: -# ($nmin,$nmax,$nint) = _best_ends(247, 508); -# ($nmin,$nmax) = _best_ends(247, 508, 5); -# use 5 intervals -# ($nmin,$nmax,$nint) = _best_ends(247, 508, 4..7); -# best of 4,5,6,7 intervals - -sub _best_ends { - my ($min, $max, @n) = @_; - my ($best_min, $best_max, $best_num) = ($min, $max, 1); - - # fix endpoints, fix intervals, set defaults - ($min, $max) = ($max, $min) if ($min > $max); - ($min, $max) = ($min) ? ($min * 0.5, $min * 1.5) : (-1,1) - if ($max == $min); - @n = (3..6) if (@n <= 0 || $n[0] =~ /auto/i); - my $best_fit = 1e30; - my $range = $max - $min; - - # create array of interval sizes - my $s = 1; - while ($s < $range) { $s *= 10 } - while ($s > $range) { $s /= 10 } - my @step = map {$_ * $s} (0.2, 0.5, 1, 2, 5); - - for (@n) - { - # Try all numbers of intervals - my $n = $_; - next if ($n < 1); - for (@step) - { - next if ($n != 1) && ($_ < $range/$n); # $step too small - - my $nice_min = $_ * int($min/$_); - $nice_min -= $_ if ($nice_min > $min); - my $nice_max = ($n == 1) - ? $_ * int($max/$_ + 1) - : $nice_min + $n * $_; - my $nice_range = $nice_max - $nice_min; - - next if ($nice_max < $max); # $nice_min too small - next if ($best_fit <= $nice_range - $range); # not closer fit - - $best_min = $nice_min; - $best_max = $nice_max; - $best_fit = $nice_range - $range; - $best_num = $n; - } - } - return ($best_min, $best_max, $best_num) -} diff --git a/isdnlog/tools/isdnrate-Readme b/isdnlog/tools/isdnrate-Readme deleted file mode 100755 index 1208efd4..00000000 --- a/isdnlog/tools/isdnrate-Readme +++ /dev/null @@ -1,50 +0,0 @@ -Isdnrate CGI ------------- - -Installation ------------- - -- Automatic - - $ ./configure - # make install - -- Manual - -edit isdnrate: - location of code file - location of isdnrate - location if mktemp - - 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. - - make a tmp dir below htdocs - # mkdir /usr/local/httpd/htdocs/tmp - # chmod 700 /usr/local/httpd/htdocs/tmp - # chown wwwrun.nogrup tmp - (or whatever uid.gid your webserver runs with) - - # cp isdnrate /usr/local/httpd/cgi-bin - # chmod 755 /usr/local/httpd/cgi-bin/isdnrate - # chmod 644 /etc/isdn/isdn.conf - - edit isdnrate.c - first line defines LEO (AT) else DE is assumed - -NB: isdnrate uses the following pel 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. - - -Running the Program -------------------- - -if $use_sockets is on, start the server instance of isdnlog/bin/isdnrate with -options -D [-v] -as soon as you see "Setup sockets" you can point your browser to -/cgi-bin/isdnrate and fill the form with the desired destination. -Click on table or grafik - -Enjoy \ No newline at end of file