isdnlog Version 3.14
- "make install" now install's "rate-xx.dat", "rate.conf" and "ausland.dat" - "holiday-xx.dat" Version 1.1 - many rate fixes (Thanks again to Michael Reinelt <reinelt@eunet.at>)
This commit is contained in:
parent
2be65b0e36
commit
b45a4110b3
|
@ -19,6 +19,30 @@
|
|||
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
##
|
||||
## $Log$
|
||||
## Revision 1.66 1999/04/10 16:34:57 akool
|
||||
## isdnlog Version 3.13
|
||||
##
|
||||
## WARNING: This is pre-ALPHA-dont-ever-use-Code!
|
||||
## "tarif.dat" (aka "rate-xx.dat"): the next generation!
|
||||
##
|
||||
## You have to do the following to test this version:
|
||||
## cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
|
||||
## cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
|
||||
## cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
|
||||
##
|
||||
## After that, add the following entries to your "/etc/isdn/isdn.conf" or
|
||||
## "/etc/isdn/callerid.conf" file:
|
||||
##
|
||||
## [ISDNLOG]
|
||||
## SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
|
||||
## HOLIDAYS = /usr/lib/isdn/holiday-de.dat
|
||||
## RATEFILE = /usr/lib/isdn/rate-de.dat
|
||||
## RATECONF = /etc/isdn/rate.conf
|
||||
##
|
||||
## Please replace any "de" with your country code ("at", "ch", "nl")
|
||||
##
|
||||
## Good luck (Andreas Kool and Michael Reinelt)
|
||||
##
|
||||
## Revision 1.65 1999/04/03 12:46:39 akool
|
||||
## - isdnlog Version 3.12
|
||||
## - "%B" tag in ILABEL/OLABEL corrected
|
||||
|
@ -511,7 +535,7 @@ SERVICEFILE = /etc/services
|
|||
# DON'T EDIT BELOW THIS LINE
|
||||
######################################################################
|
||||
|
||||
VERSION = 3.13
|
||||
VERSION = 3.14
|
||||
|
||||
MANPAGES = isdnlog/callerid.conf.5 isdnlog/isdn.conf.5 \
|
||||
isdnlog/isdnformat.5 isdnlog/isdnlog.5 isdnlog/isdnlog.8 \
|
||||
|
@ -622,7 +646,8 @@ uninstall: rootperm
|
|||
$(DESTDIR)$(MAN5DIR)/isdnlog$(MAN5EXT) \
|
||||
$(DESTDIR)$(MAN5DIR)/isdnlog.users$(MAN5EXT) \
|
||||
$(DESTDIR)$(DATADIR)/sonderrufnummern.dat \
|
||||
$(DESTDIR)$(DATADIR)/tarif.dat \
|
||||
$(DESTDIR)$(DATADIR)/ausland.dat \
|
||||
$(DESTDIR)$(DATADIR)/rate-$(NATION).dat \
|
||||
$(DESTDIR)$(DATADIR)/vorwahl.dat \
|
||||
|
||||
installdirs: rootperm
|
||||
|
@ -658,13 +683,15 @@ install: all rootperm installdirs
|
|||
$(INSTALL_DATA) isdnlog/isdnlog.5 $(DESTDIR)$(MAN5DIR)/isdnlog$(MAN5EXT)
|
||||
$(INSTALL_DATA) isdnlog/isdnlog.users.5 $(DESTDIR)$(MAN5DIR)/isdnlog.users$(MAN5EXT)
|
||||
$(INSTALL_DATA) sonderrufnummern.dat $(DESTDIR)$(DATADIR)
|
||||
$(INSTALL_DATA) tarif.dat $(DESTDIR)$(DATADIR)
|
||||
$(INSTALL_DATA) ausland.dat $(DESTDIR)$(DATADIR)
|
||||
$(INSTALL_DATA) rate-$(NATION).dat $(DESTDIR)$(DATADIR)
|
||||
$(INSTALL_DATA) holiday-$(NATION).dat $(DESTDIR)$(DATADIR)
|
||||
$(INSTALL_DATA) vorwahl.dat.bz2 $(DESTDIR)$(DATADIR)
|
||||
$(BUNZIP2) $(DESTDIR)$(DATADIR)/vorwahl.dat.bz2
|
||||
@if [ ! -f "$(DESTDIR)$(I4LCONFDIR)/tarif.conf" ]; then \
|
||||
$(INSTALL_DATA) samples/tarif.conf $(DESTDIR)$(I4LCONFDIR) ; \
|
||||
@if [ ! -f "$(DESTDIR)$(I4LCONFDIR)/rate.conf" ]; then \
|
||||
$(INSTALL_DATA) samples/rate.conf.$(NATION) $(DESTDIR)$(I4LCONFDIR)/rate.conf ; \
|
||||
else \
|
||||
$(INSTALL_DATA) samples/tarif.conf $(DESTDIR)$(I4LCONFDIR)/tarif.conf.new ; \
|
||||
$(INSTALL_DATA) samples/rate.conf.$(NATION) $(DESTDIR)$(I4LCONFDIR)/rate.conf.new ; \
|
||||
fi
|
||||
@echo ""
|
||||
@echo "Don't forget to create $(I4LCONFDIR)/$(USERFILE)"
|
||||
|
|
|
@ -0,0 +1,566 @@
|
|||
+995:Georgien
|
||||
+994:Aserbaidschan
|
||||
+993:Turkmenistan
|
||||
+98:Iran
|
||||
+977:Nepal
|
||||
+976:Mongolei
|
||||
+975:Bhutan
|
||||
+974:Katar
|
||||
+973:Bahrain
|
||||
+972:Israel
|
||||
+971:Ver. Arabische Emirate
|
||||
+969:Jemen, (Arab. Republik)
|
||||
+968:Oman
|
||||
+967:Jemen, (Arab. Republik)
|
||||
+966:Saudi Arabien
|
||||
+965:Kuwait
|
||||
+964:Irak
|
||||
+963:Syrien
|
||||
+962:Jordanien
|
||||
+961:Libanon
|
||||
+960:Malediven
|
||||
+95:Myanmar, Burma
|
||||
+94:Sri Lanka
|
||||
+93:Afghanistan
|
||||
+92:Pakistan
|
||||
+91:Indien
|
||||
+90:Türkei, Nordzypern
|
||||
+886:China, (Taiwan)
|
||||
+8817:Iridium 008817
|
||||
+8816:Iridium 008816
|
||||
+880:Bangladesch
|
||||
+8748:Inmarsat A Daten/Fax
|
||||
+87476:Inmarsat Mini-M
|
||||
+8746:Inmarsat M
|
||||
+8745:Inmarsat Aero
|
||||
+87439:Inmarsat B HSD
|
||||
+8743:Inmarsat B
|
||||
+8741:Inmarsat A
|
||||
+874:Atlantischer Ozean (West)
|
||||
+8738:Inmarsat A Daten/Fax
|
||||
+87376:Inmarsat Mini-M
|
||||
+8736:Inmarsat M
|
||||
+8735:Inmarsat Aero
|
||||
+87339:Inmarsat B HSD
|
||||
+8733:Inmarsat B
|
||||
+8731:Inmarsat A
|
||||
+873:Indischer Ozean
|
||||
+8728:Inmarsat A Daten/Fax
|
||||
+87276:Inmarsat Mini-M
|
||||
+8726:Inmarsat M
|
||||
+8725:Inmarsat Aero
|
||||
+87239:Inmarsat B HSD
|
||||
+8723:Inmarsat B
|
||||
+8721:Inmarsat A
|
||||
+872:Pazifischer Ozean
|
||||
+8718:Inmarsat A Daten/Fax
|
||||
+87176:Inmarsat Mini-M
|
||||
+8716:Inmarsat M
|
||||
+8715:Inmarsat Aero
|
||||
+87139:Inmarsat B HSD
|
||||
+8713:Inmarsat B
|
||||
+8711:Inmarsat A
|
||||
+871:Atlantischer Ozean (Ost)
|
||||
+86:China, (Volksrepulik)
|
||||
+856:Laos
|
||||
+855:Kambodscha
|
||||
+853:Macao
|
||||
+852:Hongkong
|
||||
+850:Korea (Dem. Republik), Nordkorea
|
||||
+84:Vietnam
|
||||
+82:Korea (Republik), Südkorea
|
||||
+813:Tokyo
|
||||
+81:Japan
|
||||
+800:international freephone
|
||||
+7902:Russische Föderat. (westl.)
|
||||
+7901:Russische Föderat. (westl.)
|
||||
+7863:Russische Föderat. (westl.)
|
||||
+7862:Russische Föderat. (westl.)
|
||||
+7861:Russische Föderat. (westl.)
|
||||
+7820:Russische Föderat. (westl.)
|
||||
+7817:Russische Föderat. (westl.)
|
||||
+7816:Russische Föderat. (westl.)
|
||||
+7815:Russische Föderat. (westl.)
|
||||
+7814:Russische Föderat. (westl.)
|
||||
+7812:St. Petersburg
|
||||
+7811:Russische Föderat. (westl.)
|
||||
+7590:Usbekistan
|
||||
+7543:Russische Föderat. (westl.)
|
||||
+7517:Russische Föderat. (westl.)
|
||||
+751285:St. Petersburg
|
||||
+75112:Russische Föderat. (westl.)
|
||||
+75110:Russische Föderat. (westl.)
|
||||
+7510:Russische Föderat. (westl.)
|
||||
+7505:Russische Föderat. (westl.)
|
||||
+7503:Russische Föderat. (westl.)
|
||||
+7502:Russische Föderat. (westl.)
|
||||
+7501:Russische Föderat. (westl.)
|
||||
+7436:Usbekistan
|
||||
+7433:Tadschikistan
|
||||
+7431:Tadschikistan
|
||||
+743:Usbekistan
|
||||
+74:Tadschikistan
|
||||
+7379:Tadschikistan
|
||||
+7377:Tadschikistan
|
||||
+7376:Tadschikistan
|
||||
+7375:Usbekistan
|
||||
+7374:Usbekistan
|
||||
+7373:Usbekistan
|
||||
+7372:Usbekistan
|
||||
+7371:Usbekistan
|
||||
+737:Usbekistan
|
||||
+7369:Usbekistan
|
||||
+7367:Usbekistan
|
||||
+7366:Usbekistan
|
||||
+7365:Usbekistan
|
||||
+7364:Tadschikistan
|
||||
+7362:Usbekistan
|
||||
+7361:Usbekistan
|
||||
+7339:Kirgistan
|
||||
+7336:Kasachstan
|
||||
+7335:Kirgistan
|
||||
+7334:Kirgistan
|
||||
+7333:Kirgistan
|
||||
+7332:Kirgistan
|
||||
+7331:Kirgistan
|
||||
+7330:Kasachstan
|
||||
+733:Kirgistan
|
||||
+7329:Kasachstan
|
||||
+7328:Kasachstan
|
||||
+7327:Kasachstan
|
||||
+7326:Kasachstan
|
||||
+7325:Kasachstan
|
||||
+7324:Kasachstan
|
||||
+7323:Kasachstan
|
||||
+7322:Kasachstan
|
||||
+7321:Kasachstan
|
||||
+7319:Kirgistan
|
||||
+7318:Kasachstan
|
||||
+7317:Kasachstan
|
||||
+7316:Kasachstan
|
||||
+7315:Kasachstan
|
||||
+7314:Kasachstan
|
||||
+7313:Kasachstan
|
||||
+7312:Kasachstan
|
||||
+7311:Kasachstan
|
||||
+7310:Kasachstan
|
||||
+73:Kasachstan
|
||||
+7096:Russische Föderat. (westl.)
|
||||
+7095:Moskau
|
||||
+709246:Russische Föderat. (westl.)
|
||||
+709245:Russische Föderat. (westl.)
|
||||
+709244:Russische Föderat. (westl.)
|
||||
+709243:Russische Föderat. (westl.)
|
||||
+709237:Russische Föderat. (westl.)
|
||||
+7091:Russische Föderat. (westl.)
|
||||
+7087:Russische Föderat. (westl.)
|
||||
+7086:Russische Föderat. (westl.)
|
||||
+7085:Russische Föderat. (westl.)
|
||||
+7084:Russische Föderat. (westl.)
|
||||
+7083:Russische Föderat. (westl.)
|
||||
+7082:Russische Föderat. (westl.)
|
||||
+7081:Russische Föderat. (westl.)
|
||||
+7074:Russische Föderat. (westl.)
|
||||
+7073:Russische Föderat. (westl.)
|
||||
+7072:Russische Föderat. (westl.)
|
||||
+7071:Russische Föderat. (westl.)
|
||||
+7011:Russische Föderat. (westl.)
|
||||
+7:Russische Förderation (östl.)
|
||||
+6998:Midway-Inseln
|
||||
+6996:Chatham-Inseln
|
||||
+6993:Wake Inseln
|
||||
+692:Marshallinseln
|
||||
+691:Mikronesien
|
||||
+690:Tokelan
|
||||
+689:Französisch-Polynesien
|
||||
+688:Tuvalu
|
||||
+687:Neukaledonien
|
||||
+686:Kiribati
|
||||
+685:Samoa (West)
|
||||
+684:Amerikanisch-Samoa
|
||||
+683:Niue-Inseln
|
||||
+682:Cookinseln
|
||||
+681:Wallis und Futuna
|
||||
+680:Palau /Belau
|
||||
+679:Fidschi
|
||||
+678:Vanuatu
|
||||
+677:Salomonen
|
||||
+676:Tonga
|
||||
+675:Papua-Neuguinea
|
||||
+674:Nauru
|
||||
+673:Brunei
|
||||
+6724:Weihnachtsinsel (Australien)
|
||||
+6723:Norfolkinseln (Australien)
|
||||
+6722:Kokosinseln (Australien)
|
||||
+6721:Antarktis
|
||||
+671:Guam
|
||||
+670:Marianen
|
||||
+66:Thailand
|
||||
+65:Singapur
|
||||
+649:Pitcairn Inseln
|
||||
+64:Neuseeland
|
||||
+63:Philippinen
|
||||
+62:Indonesien
|
||||
+61:Australien
|
||||
+60:Malaysia
|
||||
+599:Niederl. Antillen
|
||||
+598:Uruguay
|
||||
+597:Suriname
|
||||
+596:Martinique / Franz. Antillen
|
||||
+595:Paraguay
|
||||
+594:Französisch-Guayana
|
||||
+593:Ecuador
|
||||
+592:Guyana
|
||||
+591:Bolivien
|
||||
+590:Guadeloupe
|
||||
+58:Venezuela
|
||||
+57:Kolumbien
|
||||
+56:Chile
|
||||
+55:Brasilien
|
||||
+54:Argentinien
|
||||
+5321:Guantanamo
|
||||
+53:Kuba
|
||||
+52:Mexiko
|
||||
+51:Peru
|
||||
+509:Haiti
|
||||
+508:St. Pierre und Miquelon
|
||||
+507:Panama
|
||||
+506:Costa Rica
|
||||
+505:Nicaragua
|
||||
+504:Honduras
|
||||
+503:El Salvador
|
||||
+502:Guatemala
|
||||
+501:Belize
|
||||
+500:Falklandinseln
|
||||
+48:Polen
|
||||
+47:Norwegen
|
||||
+468:Stockholm
|
||||
+46:Schweden
|
||||
+4574:Sønderjylland
|
||||
+4573:Sønderjylland
|
||||
+45:Dänemark
|
||||
+44181:London (Außenbezirk)
|
||||
+44171:London (Innenbezirk)
|
||||
+44131:Edinburgh
|
||||
+44:Großbritannien, Insel Man, Kanalinseln
|
||||
+431:Wien
|
||||
+43:Österreich
|
||||
+421:Slowakei, Slowakische Republik
|
||||
+420:Tschechien, Tschechische Republik
|
||||
+4175:Liechtenstein
|
||||
+4122:Genf
|
||||
+411:Zürich
|
||||
+41:Schweiz
|
||||
+40:Rumänien
|
||||
+3906:Vatikanstadt / Rom
|
||||
+3902:Mailand
|
||||
+39:Italien
|
||||
+389:Mazedonien
|
||||
+387:Bosnien-Herzegowina
|
||||
+386:Slowenien
|
||||
+385:Kroatien
|
||||
+381:Jugoslawien(Serbien/Montenegro)
|
||||
+380:Ukraine
|
||||
+378:San Marino
|
||||
+377:Monaco
|
||||
+376:Andorra
|
||||
+375:Weissrussland, Belarus
|
||||
+374:Armenien
|
||||
+373:Moldavien, Moldau (Republik)
|
||||
+372:Estland
|
||||
+371:Lettland
|
||||
+370:Litauen
|
||||
+36:Ungarn
|
||||
+359:Bulgarien
|
||||
+358:Finnland
|
||||
+357:Zypern
|
||||
+356:Malta
|
||||
+355:Albanien
|
||||
+354:Island
|
||||
+353:Irland
|
||||
+352:Luxemburg
|
||||
+35196:Azoren
|
||||
+35195:Azoren
|
||||
+35192:Azoren
|
||||
+35191:Madeira
|
||||
+351:Portugal
|
||||
+350:Gibraltar
|
||||
+34977:Tarragona
|
||||
+34972:Gerona
|
||||
+34971:Mallorca
|
||||
+3496:Valencia
|
||||
+3494:Bilbao
|
||||
+3493:Barcelona
|
||||
+34928:Kanarische Inseln
|
||||
+34922:Teneriffa
|
||||
+3491:Madrid
|
||||
+34:Spanien
|
||||
+331:Paris
|
||||
+33:Frankreich
|
||||
+323:Antwerpen
|
||||
+322:Brüssel
|
||||
+3216:Leuven
|
||||
+32:Belgien
|
||||
+3170:Den Haag
|
||||
+3120:Amsterdam
|
||||
+3110:Rotterdam
|
||||
+31:Niederlande
|
||||
+30:Griechenland
|
||||
+299:Grönland
|
||||
+298:Färöer, Faeröer
|
||||
+297:Aruba
|
||||
+291:Eritrea
|
||||
+290:St. Helena
|
||||
+2897:Tristan da Cunha
|
||||
+27:Südafrika
|
||||
+2697:Komoren
|
||||
+269:Mayotte
|
||||
+268:Swasiland
|
||||
+267:Botsuana, Botswana
|
||||
+266:Lesotho
|
||||
+265:Malawi
|
||||
+264:Namibia
|
||||
+263:Simbabwe
|
||||
+262:Reunion
|
||||
+261:Madagaskar
|
||||
+260:Sambia
|
||||
+258:Mosambik
|
||||
+257:Burundi
|
||||
+256:Uganda
|
||||
+255:Tansania, Sansiba
|
||||
+254:Kenia
|
||||
+253:Dschibuti
|
||||
+252:Somalia
|
||||
+251:Äthiopien
|
||||
+250:Ruanda
|
||||
+249:Sudan
|
||||
+248:Seyschellen, Seychellen
|
||||
+247:Ascension
|
||||
+246:Diego Garcia
|
||||
+245:Guinea-Bissau
|
||||
+244:Angola
|
||||
+243:Zaire
|
||||
+242:Kongo
|
||||
+241:Gabun
|
||||
+240:Äquatorial-Guinea
|
||||
+239:Sao Tome und Principe
|
||||
+238:Cape Verde, Kap Verde
|
||||
+237:Kamerun
|
||||
+236:Zentralafrikanische Reublik
|
||||
+235:Tschad
|
||||
+234:Nigeria
|
||||
+233:Ghana
|
||||
+232:Sierra Leone
|
||||
+231:Liberia
|
||||
+230:Mauritius
|
||||
+229:Benin
|
||||
+228:Togo
|
||||
+227:Niger
|
||||
+226:Burkina Faso, Obervolta
|
||||
+225:Elfenbeinküste, Cote de Ivoire
|
||||
+224:Guinea
|
||||
+223:Mali
|
||||
+222:Mauretanien
|
||||
+221:Senegal
|
||||
+220:Gambia
|
||||
+218:Libyen, Libysch-Arabische Dschamahirija
|
||||
+216:Tunesien
|
||||
+213:Algerien
|
||||
+212:Marokko
|
||||
+20:Ägypten
|
||||
+1907:Alaska
|
||||
+1905:Kanada
|
||||
+1902:Kanada
|
||||
+1876:Jamaika
|
||||
+1869:St. Kitts und Nevis
|
||||
+1868:Trinidad und Tobago
|
||||
+1867:Kanada
|
||||
+184:Dominikanische Republik
|
||||
+1819:Kanada
|
||||
+1809971:Dominikanische Republik
|
||||
+1809970:Dominikanische Republik
|
||||
+1809946:Turks- und Caicosinseln
|
||||
+1809941:Turks- und Caicosinseln
|
||||
+1809908:Dominikanische Republik
|
||||
+1809818:Dominikanische Republik
|
||||
+1809814:Dominikanische Republik
|
||||
+1809813:Dominikanische Republik
|
||||
+1809810:Dominikanische Republik
|
||||
+1809808:Dominikanische Republik
|
||||
+1809807:Dominikanische Republik
|
||||
+1809806:Dominikanische Republik
|
||||
+180977:Amerikanische Jungferninseln
|
||||
+1809719:Amerikanische Jungferninseln
|
||||
+1809715:Amerikanische Jungferninseln
|
||||
+1809714:Amerikanische Jungferninseln
|
||||
+1809713:Amerikanische Jungferninseln
|
||||
+1809712:Amerikanische Jungferninseln
|
||||
+1809710:Dominikanische Republik
|
||||
+1809707:Dominikanische Republik
|
||||
+1809701:Dominikanische Republik
|
||||
+1809699:Dominikanische Republik
|
||||
+1809698:Dominikanische Republik
|
||||
+1809697:Dominikanische Republik
|
||||
+1809696:Dominikanische Republik
|
||||
+1809695:Dominikanische Republik
|
||||
+1809694:Dominikanische Republik
|
||||
+1809693:Amerikanische Jungferninseln
|
||||
+1809692:Amerikanische Jungferninseln
|
||||
+1809690:Amerikanische Jungferninseln
|
||||
+1809689:Dominikanische Republik
|
||||
+1809688:Dominikanische Republik
|
||||
+1809687:Dominikanische Republik
|
||||
+1809686:Dominikanische Republik
|
||||
+1809685:Dominikanische Republik
|
||||
+1809684:Dominikanische Republik
|
||||
+1809683:Dominikanische Republik
|
||||
+1809682:Dominikanische Republik
|
||||
+1809681:Dominikanische Republik
|
||||
+1809680:Trinidad und Tobago
|
||||
+180967:Trinidad und Tobago
|
||||
+180966:Trinidad und Tobago
|
||||
+180965:Trinidad und Tobago
|
||||
+180964:Trinidad und Tobago
|
||||
+180963:Trinidad und Tobago
|
||||
+180962:Trinidad und Tobago
|
||||
+1809619:Trinidad und Tobago
|
||||
+1809616:Dominikanische Republik
|
||||
+1809615:Dominikanische Republik
|
||||
+1809612:Dominikanische Republik
|
||||
+1809611:Amerikanische Jungferninseln
|
||||
+1809606:Dominikanische Republik
|
||||
+1809604:Dominikanische Republik
|
||||
+180959:Dominikanische Republik
|
||||
+180958:Dominikanische Republik
|
||||
+180957:Dominikanische Republik
|
||||
+180956:Dominikanische Republik
|
||||
+1809559:Dominikanische Republik
|
||||
+1809558:Dominikanische Republik
|
||||
+1809557:Dominikanische Republik
|
||||
+1809556:Dominikanische Republik
|
||||
+1809554:Dominikanische Republik
|
||||
+1809553:Dominikanische Republik
|
||||
+1809552:Dominikanische Republik
|
||||
+1809551:Dominikanische Republik
|
||||
+1809550:Dominikanische Republik
|
||||
+180954:Dominikanische Republik
|
||||
+180953:Dominikanische Republik
|
||||
+180952:Dominikanische Republik
|
||||
+1809519:Dominikanische Republik
|
||||
+1809518:Dominikanische Republik
|
||||
+1809513:Amerikanische Jungferninseln
|
||||
+1809512:Dominikanische Republik
|
||||
+1809508:Dominikanische Republik
|
||||
+1809506:Dominikanische Republik
|
||||
+1809504:Dominikanische Republik
|
||||
+1809499:Britische Jungferninseln
|
||||
+1809496:Britische Jungferninseln
|
||||
+1809495:Britische Jungferninseln
|
||||
+1809494:Britische Jungferninseln
|
||||
+1809493:St. Vincent und Grenadinen
|
||||
+1809490:St. Vincent und Grenadinen
|
||||
+1809485:St. Vincent und Grenadinen
|
||||
+1809481:Dominikanische Republik
|
||||
+180947:Dominikanische Republik
|
||||
+1809458:St. Vincent und Grenadinen
|
||||
+1809457:St. Vincent und Grenadinen
|
||||
+1809456:St. Vincent und Grenadinen
|
||||
+1809449:Dominica
|
||||
+1809448:Dominica
|
||||
+1809447:Dominica
|
||||
+1809446:Dominica
|
||||
+1809445:Dominica
|
||||
+1809444:Grenada
|
||||
+1809443:Grenada
|
||||
+1809442:Grenada
|
||||
+1809441:Grenada
|
||||
+1809440:Grenada
|
||||
+1809414:Dominikanische Republik
|
||||
+1809412:Dominikanische Republik
|
||||
+1809408:Grenada
|
||||
+1809407:Grenada
|
||||
+1809350:Dominikanische Republik
|
||||
+1809343:Dominikanische Republik
|
||||
+1809320:Dominikanische Republik
|
||||
+1809310:Dominikanische Republik
|
||||
+1809301:Dominikanische Republik
|
||||
+1809299:Dominikanische Republik
|
||||
+1809295:Dominikanische Republik
|
||||
+1809293:Dominikanische Republik
|
||||
+1809292:Dominikanische Republik
|
||||
+1809291:Dominikanische Republik
|
||||
+1809290:Dominikanische Republik
|
||||
+1809282:Dominikanische Republik
|
||||
+1809281:Dominikanische Republik
|
||||
+1809280:Dominikanische Republik
|
||||
+1809279:Dominikanische Republik
|
||||
+1809278:Dominikanische Republik
|
||||
+1809277:Dominikanische Republik
|
||||
+1809276:Dominikanische Republik
|
||||
+1809275:Dominikanische Republik
|
||||
+1809274:Dominikanische Republik
|
||||
+1809273:Dominikanische Republik
|
||||
+1809248:Dominikanische Republik
|
||||
+1809247:Dominikanische Republik
|
||||
+1809246:Dominikanische Republik
|
||||
+1809245:Dominikanische Republik
|
||||
+1809244:Dominikanische Republik
|
||||
+1809243:Dominikanische Republik
|
||||
+1809242:Dominikanische Republik
|
||||
+1809241:Dominikanische Republik
|
||||
+1809240:Dominikanische Republik
|
||||
+1809239:Dominikanische Republik
|
||||
+1809238:Dominikanische Republik
|
||||
+1809237:Dominikanische Republik
|
||||
+1809236:Dominikanische Republik
|
||||
+1809235:Dominica
|
||||
+1809234:Dominikanische Republik
|
||||
+1809233:Dominikanische Republik
|
||||
+1809231:Dominikanische Republik
|
||||
+1809227:Dominikanische Republik
|
||||
+1809226:Dominikanische Republik
|
||||
+1809225:Dominikanische Republik
|
||||
+1809224:Dominikanische Republik
|
||||
+1809223:Dominikanische Republik
|
||||
+1809222:Dominikanische Republik
|
||||
+1809221:Dominikanische Republik
|
||||
+1809220:Dominikanische Republik
|
||||
+1809209:Dominikanische Republik
|
||||
+1809208:Dominikanische Republik
|
||||
+1809204:Dominikanische Republik
|
||||
+1809188:Dominikanische Republik
|
||||
+1809:Britische Jungferninseln
|
||||
+1808:Hawaii
|
||||
+1807:Kanada
|
||||
+1787:Puerto Rico
|
||||
+1784:St. Vincent und Grenadinen
|
||||
+1767:Dominica
|
||||
+1758:St. Lucia
|
||||
+1709:Kanada
|
||||
+1705:Kanada
|
||||
+1671:Marianen (Guam)
|
||||
+1670:Marianen (Saipan,Nord-)
|
||||
+1664:Montserrat
|
||||
+1649:Turks- und Caicosinseln
|
||||
+1613:Kanada
|
||||
+1604:Kanada
|
||||
+1600:Kanada
|
||||
+1519:Kanada
|
||||
+1514:Kanada
|
||||
+1506:Kanada
|
||||
+1473:Grenada
|
||||
+1441:Bermuda
|
||||
+1418:Kanada
|
||||
+1416:Kanada
|
||||
+1403:Kanada
|
||||
+1345:Kaimaninseln
|
||||
+1340:Amerikanische Jungferninseln
|
||||
+1306:Kanada
|
||||
+1284:Britische Jungferninseln
|
||||
+1268:Antigua und Barbuda
|
||||
+1264:Anguilla
|
||||
+1250:Kanada
|
||||
+1246:Barbados
|
||||
+1242:Bahamas
|
||||
+1204:Kanada
|
||||
+1:USA
|
|
@ -1,4 +1,4 @@
|
|||
V:1.0-Austria [15-Mar-1999]
|
||||
V:1.1-Austria [12-Apr-1999]
|
||||
|
||||
W:1 Montag
|
||||
W:2 Dienstag
|
||||
|
@ -7,6 +7,7 @@ W:4 Donnerstag
|
|||
W:5 Freitag
|
||||
W:6 Samstag
|
||||
W:7 Sonntag
|
||||
W:W Werktag
|
||||
W:E Wochenende
|
||||
W:H Feiertag
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
V:1.0-Switzerland [15-Mar-1999]
|
||||
V:1.1-Switzerland [12-Apr-1999]
|
||||
|
||||
W:1 Montag
|
||||
W:2 Dienstag
|
||||
|
@ -7,6 +7,7 @@ W:4 Donnerstag
|
|||
W:5 Freitag
|
||||
W:6 Samstag
|
||||
W:7 Sonntag
|
||||
W:W Werktag
|
||||
W:E Wochenende
|
||||
W:H Feiertag
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
V:1.0-Germany [15-Mar-1999]
|
||||
V:1.1-Germany [12-Apr-1999]
|
||||
|
||||
W:1 Montag
|
||||
W:2 Dienstag
|
||||
|
@ -7,6 +7,7 @@ W:4 Donnerstag
|
|||
W:5 Freitag
|
||||
W:6 Samstag
|
||||
W:7 Sonntag
|
||||
W:W Werktag
|
||||
W:E Wochenende
|
||||
W:H Feiertag
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
V:0.9-Netherlands [15-Mar-1999]
|
||||
V:0.91-Netherlands [12-Apr-1999]
|
||||
|
||||
# Fixme: these need to be translated
|
||||
|
||||
|
@ -9,6 +9,7 @@ W:4 Thursdag
|
|||
W:5 Fridag
|
||||
W:6 Saturdag
|
||||
W:7 Sundag
|
||||
W:W Workday
|
||||
W:E Weekend
|
||||
W:H Holiday
|
||||
|
||||
|
|
|
@ -20,6 +20,30 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.18 1999/04/10 16:35:14 akool
|
||||
* isdnlog Version 3.13
|
||||
*
|
||||
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
|
||||
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
|
||||
*
|
||||
* You have to do the following to test this version:
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
|
||||
*
|
||||
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
|
||||
* "/etc/isdn/callerid.conf" file:
|
||||
*
|
||||
* [ISDNLOG]
|
||||
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
|
||||
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
|
||||
* RATEFILE = /usr/lib/isdn/rate-de.dat
|
||||
* RATECONF = /etc/isdn/rate.conf
|
||||
*
|
||||
* Please replace any "de" with your country code ("at", "ch", "nl")
|
||||
*
|
||||
* Good luck (Andreas Kool and Michael Reinelt)
|
||||
*
|
||||
* Revision 1.17 1999/04/03 12:46:54 akool
|
||||
* - isdnlog Version 3.12
|
||||
* - "%B" tag in ILABEL/OLABEL corrected
|
||||
|
@ -881,7 +905,7 @@ int main(int argc, char *argv[], char *envp[])
|
|||
!memcmp(areacode, "0179", 4))
|
||||
zone = E2_NETZ;
|
||||
else
|
||||
zone = GLOBALCALL;
|
||||
zone = WELT_4;
|
||||
}
|
||||
else if (strlen(areacode) == 1) {
|
||||
switch (toupper(*areacode)) {
|
||||
|
@ -901,7 +925,6 @@ int main(int argc, char *argv[], char *envp[])
|
|||
case 'E' : zone = WELT_2; break;
|
||||
case 'F' : zone = WELT_3; break;
|
||||
case 'G' : zone = WELT_4; break;
|
||||
case 'H' : zone = INTERNET; break;
|
||||
case '.' : showLCR(); exit(0);
|
||||
default : print_msg(PRT_NORMAL, "Unknown zone \"%c\", please use 1 .. H\n", *areacode);
|
||||
exit(0);
|
||||
|
|
|
@ -19,6 +19,9 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.51 1999/04/10 17:19:51 akool
|
||||
* fix a typo
|
||||
*
|
||||
* Revision 1.50 1999/04/10 16:35:35 akool
|
||||
* isdnlog Version 3.13
|
||||
*
|
||||
|
@ -583,15 +586,9 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/* Fixme: */
|
||||
#define isInternetAccess(x,y) 0 /* Fixme: should be removed completely */
|
||||
#if 0
|
||||
^MICHI: Die folgenden 2 Variablen sind uns verlorengegangen ;-)
|
||||
~MICHI
|
||||
#endif
|
||||
/* Fixme: should be removed completely */
|
||||
#define prepreis 0.0
|
||||
#define hintpreis 0.0
|
||||
/* Fixme: */
|
||||
|
||||
|
||||
#define _PROCESSOR_C_
|
||||
|
@ -678,7 +675,7 @@ static char *location(int loc)
|
|||
} /* location */
|
||||
|
||||
|
||||
static void buildnumber(char *num, int oc3, int oc3a, char *result, int version, int *provider, int *sondernummer, int *intern, int *internetnumber, int dir, int who)
|
||||
static void buildnumber(char *num, int oc3, int oc3a, char *result, int version, int *provider, int *sondernummer, int *intern, int *local, int dir, int who)
|
||||
{
|
||||
auto char n[BUFSIZ];
|
||||
auto int partner = ((dir && (who == CALLING)) || (!dir && (who == CALLED)));
|
||||
|
@ -686,7 +683,7 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
|
||||
*sondernummer = UNKNOWN;
|
||||
*intern = 0;
|
||||
*internetnumber = 0;
|
||||
*local = 0;
|
||||
|
||||
if (Q931dmp) {
|
||||
register char *ps;
|
||||
|
@ -830,20 +827,15 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
|
||||
*intern = strlen(num) < interns0;
|
||||
|
||||
if (*provider == UNKNOWN)
|
||||
if ((*provider == UNKNOWN) && !*intern)
|
||||
*provider = preselect;
|
||||
|
||||
if (!dir && (who == CALLED) && !*intern) {
|
||||
*internetnumber = isInternetAccess(*provider, num);
|
||||
|
||||
if (!*internetnumber) {
|
||||
*sondernummer = is_sondernummer(num, *provider);
|
||||
|
||||
if (*sondernummer == UNKNOWN)
|
||||
/* Fixme: DTAG is specific to Germany */
|
||||
*sondernummer = is_sondernummer(num, DTAG); /* try with DTAG, these provider must support them all (i think) */
|
||||
} /* if */
|
||||
*sondernummer = is_sondernummer(num, *provider);
|
||||
|
||||
if (*sondernummer == UNKNOWN)
|
||||
/* Fixme: DTAG is specific to Germany */
|
||||
*sondernummer = is_sondernummer(num, DTAG); /* try with DTAG, these provider must support them all (i think) */
|
||||
} /* if */
|
||||
|
||||
if (Q931dmp) {
|
||||
|
@ -855,29 +847,26 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
Q931dump(TYPE_STRING, -1, s, version);
|
||||
} /* if */
|
||||
|
||||
if (*internetnumber) {
|
||||
sprintf(s, "(Internet access number %s)", num);
|
||||
Q931dump(TYPE_STRING, -1, s, version);
|
||||
} /* if */
|
||||
|
||||
if (*intern)
|
||||
Q931dump(TYPE_STRING, -1, "(Interne Nummer)", version);
|
||||
} /* if */
|
||||
|
||||
if ((*sondernummer == UNKNOWN) && !*intern && !*internetnumber)
|
||||
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 */
|
||||
if (*num != '0')
|
||||
if (*num != '0') {
|
||||
sprintf(result, "%s%s", mycountry, myarea);
|
||||
*local = 1;
|
||||
}
|
||||
else {
|
||||
if (num[1] != '0') /* Falls es doch Ausland ist -> nichts machen!!! */
|
||||
strcpy(result, mycountry);
|
||||
if (num[1] != '0') /* Falls es doch Ausland ist -> nichts machen!!! */
|
||||
strcpy(result, mycountry);
|
||||
else
|
||||
strcpy(result, countryprefix);
|
||||
strcpy(result, countryprefix);
|
||||
|
||||
while (*num == '0')
|
||||
num++;
|
||||
num++;
|
||||
} /* else */
|
||||
} /* if */
|
||||
break;
|
||||
|
@ -889,15 +878,17 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
case 0x20 : if (version != VERSION_1TR6) {
|
||||
strcpy(result, mycountry); /* 010 National */
|
||||
|
||||
while (*num == '0')
|
||||
num++;
|
||||
while (*num == '0')
|
||||
num++;
|
||||
} /* if */
|
||||
break;
|
||||
|
||||
case 0x30 : break; /* 011 Network specific number */
|
||||
|
||||
case 0x40 : if (*num != '0') /* 100 Subscriber number */
|
||||
case 0x40 : if (*num != '0') { /* 100 Subscriber number */
|
||||
sprintf(result, "%s%s", mycountry, myarea);
|
||||
*local = 1;
|
||||
}
|
||||
else {
|
||||
strcpy(result, mycountry);
|
||||
|
||||
|
@ -916,8 +907,8 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
else
|
||||
strcpy(result, "");
|
||||
|
||||
print_msg(PRT_DEBUG_DECODE, " DEBUG> %s: num=\"%s\", oc3=%s(%02x), result=\"%s\", sonder=%d, intern=%d, internet=%d, partner=%d\n",
|
||||
st + 4, n, i2a(oc3, 8, 2), oc3 & 0x70, result, *sondernummer, *intern, *internetnumber, partner);
|
||||
print_msg(PRT_DEBUG_DECODE, " DEBUG> %s: num=\"%s\", oc3=%s(%02x), result=\"%s\", sonder=%d, intern=%d, local=%d, partner=%d\n",
|
||||
st + 4, n, i2a(oc3, 8, 2), oc3 & 0x70, result, *sondernummer, *intern, *local, partner);
|
||||
} /* buildnumber */
|
||||
|
||||
|
||||
|
@ -2398,7 +2389,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
|
|||
strcpy(s, s1);
|
||||
} /* if */
|
||||
|
||||
buildnumber(s, oc3, oc3a, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].internetnumber[CALLED], 0, CALLED);
|
||||
buildnumber(s, oc3, oc3a, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].local[CALLED], 0, CALLED);
|
||||
|
||||
if (!dual)
|
||||
strcpy(call[chan].vnum[CALLED], vnum(chan, CALLED));
|
||||
|
@ -2453,7 +2444,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
|
|||
if (strcmp(call[chan].onum[CALLING], s)) { /* different! */
|
||||
if ((call[chan].screening == 3) && ((oc3a & 3) < 3)) { /* we believe the first one! */
|
||||
strcpy(call[chan].onum[CLIP], s);
|
||||
buildnumber(s, oc3, oc3a, call[chan].num[CLIP], version, &call[chan].provider, &call[chan].sondernummer[CLIP], &call[chan].intern[CLIP], &call[chan].internetnumber[CLIP], 0, 0);
|
||||
buildnumber(s, oc3, oc3a, call[chan].num[CLIP], version, &call[chan].provider, &call[chan].sondernummer[CLIP], &call[chan].intern[CLIP], &call[chan].local[CLIP], 0, 0);
|
||||
strcpy(call[chan].vnum[CLIP], vnum(6, CLIP));
|
||||
if (Q931dmp && (*call[chan].vnum[CLIP] != '?') && *call[chan].vorwahl[CLIP]
|
||||
&& oc3 && ((oc3 & 0x70) != 0x40)) {
|
||||
|
@ -2494,7 +2485,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
|
|||
call[chan].screening = (oc3a & 3);
|
||||
|
||||
strcpy(call[chan].onum[CALLING], s);
|
||||
buildnumber(s, oc3, oc3a, call[chan].num[CALLING], version, &call[chan].provider, &call[chan].sondernummer[CALLING], &call[chan].intern[CALLING], &call[chan].internetnumber[CALLING], call[chan].dialin, CALLING);
|
||||
buildnumber(s, oc3, oc3a, call[chan].num[CALLING], version, &call[chan].provider, &call[chan].sondernummer[CALLING], &call[chan].intern[CALLING], &call[chan].local[CALLING], call[chan].dialin, CALLING);
|
||||
|
||||
strcpy(call[chan].vnum[CALLING], vnum(chan, CALLING));
|
||||
if (Q931dmp && (*call[chan].vnum[CALLING] != '?') && *call[chan].vorwahl[CALLING]
|
||||
|
@ -2546,9 +2537,9 @@ static void decode(int chan, register char *p, int type, int version, int tei)
|
|||
strcpy(call[chan].onum[CALLED], s);
|
||||
call[chan].oc3 = oc3;
|
||||
if (Q931dmp)
|
||||
buildnumber(s, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].internetnumber[CALLED], call[chan].dialin, CALLED);
|
||||
buildnumber(s, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].local[CALLED], call[chan].dialin, CALLED);
|
||||
|
||||
buildnumber(call[chan].digits, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].internetnumber[CALLED], call[chan].dialin, CALLED);
|
||||
buildnumber(call[chan].digits, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].local[CALLED], call[chan].dialin, CALLED);
|
||||
|
||||
strcpy(call[chan].vnum[CALLED], vnum(chan, CALLED));
|
||||
|
||||
|
@ -2570,7 +2561,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
|
|||
}
|
||||
else {
|
||||
strcpy(call[chan].onum[CALLED], s);
|
||||
buildnumber(s, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].internetnumber[CALLED], call[chan].dialin, CALLED);
|
||||
buildnumber(s, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].local[CALLED], call[chan].dialin, CALLED);
|
||||
|
||||
strcpy(call[chan].vnum[CALLED], vnum(chan, CALLED));
|
||||
if (Q931dmp && (*call[chan].vnum[CALLED] != '?') && *call[chan].vorwahl[CALLED]
|
||||
|
@ -2630,7 +2621,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
|
|||
*pd = 0;
|
||||
|
||||
strcpy(call[chan].onum[REDIR], s);
|
||||
buildnumber(s, oc3, -1, call[chan].num[REDIR], version, &call[chan].provider, &call[chan].sondernummer[REDIR], &call[chan].intern[REDIR], &call[chan].internetnumber[REDIR], 0, 0);
|
||||
buildnumber(s, oc3, -1, call[chan].num[REDIR], version, &call[chan].provider, &call[chan].sondernummer[REDIR], &call[chan].intern[REDIR], &call[chan].local[REDIR], 0, 0);
|
||||
|
||||
strcpy(call[chan].vnum[REDIR], vnum(chan, REDIR));
|
||||
if (Q931dmp && (*call[chan].vnum[REDIR] != '?') && *call[chan].vorwahl[REDIR]
|
||||
|
@ -3415,13 +3406,7 @@ static void huptime(int chan, int setup)
|
|||
|
||||
/* der erste Versuch, dem einmaligen Verbindungsentgelt
|
||||
(DM 0,06/Anwahl) zu entkommen ... */
|
||||
#if 0
|
||||
^MICHI:
|
||||
Hier benoetige ich eigentlich als Information, das es einen
|
||||
"Nullten Takt" gibt - dann kann DTAG/Zone=17 wieder raus!
|
||||
~MICHI
|
||||
#endif
|
||||
if ((call[chan].Rate.prefix == DTAG) && (call[chan].Rate.zone == 17))
|
||||
if (call[chan].Rate.Basic) /* wenn es eine Grundgebuehr gibt (z.b. T-Online eco) */
|
||||
newhuptimeout = 240;
|
||||
}
|
||||
else
|
||||
|
@ -3997,13 +3982,14 @@ void processRate(int chan1)
|
|||
} /* processRate */
|
||||
|
||||
|
||||
static void processLCR(int chan, char **hint)
|
||||
static void processLCR(int chan, char *hint)
|
||||
{
|
||||
auto RATE bestRate, pselRate;
|
||||
auto char sx[BUFSIZ], sy[BUFSIZ], sz[BUFSIZ];
|
||||
static char lcrhint[BUFSIZ];
|
||||
|
||||
|
||||
*hint = 0;
|
||||
|
||||
bestRate = pselRate = call[chan].Rate;
|
||||
|
||||
bestRate.prefix = getLeastCost(&bestRate, -1);
|
||||
|
@ -4052,7 +4038,7 @@ static void processLCR(int chan, char **hint)
|
|||
|
||||
if ((call[chan].hint != UNKNOWN) && (call[chan].hint != bestRate.prefix))
|
||||
sprintf(sz, " saving vs. hint (010%02d:%s) %s %s",
|
||||
call[chan].hint, bestRate.Provider,
|
||||
call[chan].hint, getProvidername(call[chan].hint),
|
||||
currency,
|
||||
double2str(hintpreis - call[chan].pay, 6, 3, DEB));
|
||||
|
||||
|
@ -4080,15 +4066,13 @@ static void processLCR(int chan, char **hint)
|
|||
#endif
|
||||
|
||||
if (*sx || *sy || *sz)
|
||||
if (hint)
|
||||
sprintf(*hint = lcrhint, "HINT: %s%s%s LCR:%s", sx, sy, sz, ((bestRate.prefix == call[chan].provider) ? "OK" : "FAILED"));
|
||||
sprintf(hint, "HINT: %s%s%s LCR:%s", sx, sy, sz, ((bestRate.prefix == call[chan].provider) ? "OK" : "FAILED"));
|
||||
} /* processLCR */
|
||||
|
||||
|
||||
static void prepareRate(int chan, char **msg, char **tip, int viarep)
|
||||
{
|
||||
auto int provider = UNKNOWN;
|
||||
auto int zone = UNKNOWN;
|
||||
auto int zone = UNKNOWN;
|
||||
auto RATE lcRate;
|
||||
static char message[BUFSIZ];
|
||||
static char lcrhint[BUFSIZ];
|
||||
|
@ -4114,56 +4098,73 @@ static void prepareRate(int chan, char **msg, char **tip, int viarep)
|
|||
if (call[chan].intern[CALLED]) {
|
||||
call[chan].zone = INTERN;
|
||||
call[chan].tarifknown = 0;
|
||||
|
||||
if (msg)
|
||||
sprintf(*msg = message, "CHARGE: free of charge - internal call");
|
||||
sprintf(message, "CHARGE: free of charge - internal call");
|
||||
|
||||
return;
|
||||
} /* if */
|
||||
|
||||
provider = ((call[chan].provider == UNKNOWN) ? preselect : call[chan].provider);
|
||||
zone = getZone(provider, call[chan].num[CALLED]);
|
||||
zone = getZone(call[chan].provider, call[chan].num[CALLED]);
|
||||
|
||||
#if 0 /* AK:06-Apr-99 dadurch wird der "A:" Tag wieder ueberschrieben :-( */
|
||||
if (call[chan].sondernummer[CALLED] != UNKNOWN)
|
||||
switch (sondertarif(call[chan].sondernummer[CALLED])) {
|
||||
case SO_FREE : call[chan].zone = CITYCALL; /* Fixme: is 'CITYCALL == Zone 1' true worldwide ??? */
|
||||
call[chan].tarifknown = 0;
|
||||
if (msg)
|
||||
sprintf(*msg = message, "CHARGE: free of charge - FreeCall");
|
||||
return;
|
||||
if (!zone) { /* FreeCall */
|
||||
call[chan].zone = FREECALL;
|
||||
call[chan].tarifknown = 0;
|
||||
|
||||
case SO_CITYCALL : zone = CITYCALL; /* Fixme: is 'CITYCALL == Zone 1' true worldwide ??? */
|
||||
break;
|
||||
} /* switch */
|
||||
#endif
|
||||
if (msg)
|
||||
sprintf(message, "CHARGE: free of charge - FreeCall");
|
||||
|
||||
return;
|
||||
} /* if */
|
||||
|
||||
if (zone == UNKNOWN) {
|
||||
zone = area_diff(NULL, call[chan].num[CALLED]);
|
||||
if ((zone == AREA_ERROR) || (zone == AREA_UNKNOWN))
|
||||
zone = UNKNOWN;
|
||||
else if (zone == AREA_ABROAD) /* Fixme: muss noch stark verbessert werden! */
|
||||
zone = GLOBALCALL; /* Fixme: GLOBALCALL is valid in Germany only */
|
||||
if (call[chan].local[CALLED])
|
||||
zone = LOCALCALL;
|
||||
else {
|
||||
zone = area_diff(NULL, call[chan].num[CALLED]);
|
||||
|
||||
switch (zone) {
|
||||
case AREA_ERROR :
|
||||
case AREA_UNKNOWN : zone = UNKNOWN; break;
|
||||
case AREA_LOCAL : zone = CITYCALL; break;
|
||||
case AREA_R50 : zone = REGIOCALL; break;
|
||||
case AREA_FAR : zone = GERMANCALL; break;
|
||||
case AREA_ABROAD : zone = UNKNOWN; break;
|
||||
} /* switch */
|
||||
} /* else */
|
||||
} /* if */
|
||||
|
||||
call[chan].zone = zone;
|
||||
call[chan].provider = provider;
|
||||
|
||||
processRate(chan);
|
||||
if (zone == UNKNOWN)
|
||||
call[chan].tarifknown = 0;
|
||||
else
|
||||
processRate(chan);
|
||||
|
||||
if (viarep)
|
||||
return;
|
||||
|
||||
if (call[chan].tarifknown) {
|
||||
if (msg)
|
||||
sprintf(*msg = message, "CHARGE: %s %s/%ds = %s %s/Min (%s, %s, %s, %s)",
|
||||
currency, double2str(call[chan].Rate.Price, 5, 3, DEB),
|
||||
(int)(call[chan].Rate.Duration + 0.5),
|
||||
currency, double2str(60 * call[chan].Rate.Price / call[chan].Rate.Duration, 5, 3, DEB),
|
||||
call[chan].Rate.Provider, call[chan].Rate.Zone, call[chan].Rate.Day, call[chan].Rate.Hour);
|
||||
if (call[chan].Rate.Basic > 0)
|
||||
sprintf(message, "CHARGE: %s %s + %s/%ds = %s %s + %s/Min (%s)",
|
||||
currency, double2str(call[chan].Rate.Basic, 5, 3, DEB),
|
||||
double2str(call[chan].Rate.Price, 5, 3, DEB),
|
||||
(int)(call[chan].Rate.Duration + 0.5),
|
||||
currency, double2str(call[chan].Rate.Basic, 5, 3, DEB),
|
||||
double2str(60 * call[chan].Rate.Price / call[chan].Rate.Duration, 5, 3, DEB),
|
||||
explainRate(&call[chan].Rate));
|
||||
else
|
||||
sprintf(message, "CHARGE: %s %s/%ds = %s %s/Min (%s)",
|
||||
currency, double2str(call[chan].Rate.Price, 5, 3, DEB),
|
||||
(int)(call[chan].Rate.Duration + 0.5),
|
||||
currency, double2str(60 * call[chan].Rate.Price / call[chan].Rate.Duration, 5, 3, DEB),
|
||||
explainRate(&call[chan].Rate));
|
||||
}
|
||||
else {
|
||||
if (msg)
|
||||
sprintf(*msg = message, "CHARGE: Uh-oh: No charge info for provider %d, zone %d, number %s",
|
||||
provider, zone, call[chan].num[CALLED]);
|
||||
sprintf(message, "CHARGE: Uh-oh: No charge info for provider %d, zone %d, number %s",
|
||||
call[chan].provider, call[chan].zone, call[chan].num[CALLED]);
|
||||
|
||||
#if 0
|
||||
^MICHI: Hier kann man darueber streiten, ob bei unbekanntem Tarif
|
||||
|
@ -4186,7 +4187,7 @@ static void prepareRate(int chan, char **msg, char **tip, int viarep)
|
|||
|
||||
if ((call[chan].hint = getLeastCost(&lcRate, -1)) != UNKNOWN) {
|
||||
if (tip)
|
||||
sprintf(*tip = lcrhint, "HINT: Better use 010%02d:%s, %s %s/%ds = %s %s/Min, saving %s %s/%lds",
|
||||
sprintf(lcrhint, "HINT: Better use 010%02d:%s, %s %s/%ds = %s %s/Min, saving %s %s/%lds",
|
||||
lcRate.prefix, lcRate.Provider,
|
||||
currency, double2str(lcRate.Price, 5, 3, DEB),
|
||||
(int)(lcRate.Duration + 0.5),
|
||||
|
@ -4202,9 +4203,6 @@ static void prepareRate(int chan, char **msg, char **tip, int viarep)
|
|||
06.Apr 10:04:18 [1]Calling AK via Mobilcom with HDLC CHARGE: DM 0,120/60s = DM 0,120/Min (Mobilcom, GermanCall, Dienstag, )
|
||||
06.Apr 10:04:18 [1]Calling AK via Mobilcom with HDLC HINT: Better use 01051:01051, DM 0,090/60s = DM 0,090/Min, saving DM *****/181s
|
||||
---------------------------------------------------------------------------------------------------------------------------^^^^^
|
||||
|
||||
Evtl. k”nnte hier auch die Angabe des Minutenpreises entfallen,
|
||||
da (bei diesem Provider) sowieso der Minutenpreis angegeben wird.
|
||||
~MICHI
|
||||
#endif
|
||||
currency, double2str(call[chan].Rate.Charge - lcRate.Charge, 5, 3, DEB),
|
||||
|
@ -4222,6 +4220,7 @@ static void processctrl(int card, char *s)
|
|||
static int tei = BROADCAST, sapi = 0, net = 1, firsttime = 1;
|
||||
auto char sx[BUFSIZ], s1[BUFSIZ], s2[BUFSIZ];
|
||||
auto char *why, *hint;
|
||||
auto char hints[BUFSIZ];
|
||||
static char last[BUFSIZ];
|
||||
auto int isAVMB1 = 0;
|
||||
auto double tx;
|
||||
|
@ -4683,7 +4682,7 @@ static void processctrl(int card, char *s)
|
|||
if (!Q931dmp)
|
||||
if (dual && *call[chan].digits) {
|
||||
strcpy(call[chan].onum[CALLED], call[chan].digits);
|
||||
buildnumber(call[chan].digits, call[chan].oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].internetnumber[CALLED], call[chan].dialin, CALLED);
|
||||
buildnumber(call[chan].digits, call[chan].oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].local[CALLED], call[chan].dialin, CALLED);
|
||||
|
||||
strcpy(call[chan].vnum[CALLED], vnum(chan, CALLED));
|
||||
} /* if */
|
||||
|
@ -4904,11 +4903,13 @@ doppelt:break;
|
|||
|
||||
if (OUTGOING) {
|
||||
processRate(chan);
|
||||
processLCR(chan, &hint);
|
||||
|
||||
/* ^MICHI: Hier gibt's gerne mal einen core-dump: ~MICHI */
|
||||
if (*hint)
|
||||
info(chan, PRT_SHOWHANGUP, STATE_HANGUP, hint);
|
||||
if (call[chan].tarifknown) {
|
||||
processLCR(chan, hints);
|
||||
|
||||
if (*hints)
|
||||
info(chan, PRT_SHOWHANGUP, STATE_HANGUP, hints);
|
||||
} /* if */
|
||||
} /* if */
|
||||
|
||||
if (!Q931dmp)
|
||||
|
|
|
@ -24,6 +24,30 @@
|
|||
*
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.61 1999/04/10 16:36:00 akool
|
||||
* isdnlog Version 3.13
|
||||
*
|
||||
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
|
||||
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
|
||||
*
|
||||
* You have to do the following to test this version:
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
|
||||
*
|
||||
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
|
||||
* "/etc/isdn/callerid.conf" file:
|
||||
*
|
||||
* [ISDNLOG]
|
||||
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
|
||||
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
|
||||
* RATEFILE = /usr/lib/isdn/rate-de.dat
|
||||
* RATECONF = /etc/isdn/rate.conf
|
||||
*
|
||||
* Please replace any "de" with your country code ("at", "ch", "nl")
|
||||
*
|
||||
* Good luck (Andreas Kool and Michael Reinelt)
|
||||
*
|
||||
* Revision 1.60 1999/03/24 19:38:33 akool
|
||||
* - isdnlog Version 3.10
|
||||
* - moved "sondernnummern.c" from isdnlog/ to tools/
|
||||
|
@ -2447,7 +2471,7 @@ static void repair(one_call *cur_call)
|
|||
preparecint(0, why, hint, 1);
|
||||
#endif
|
||||
|
||||
if (call[0].zone == GLOBALCALL) {
|
||||
if (call[0].zone == UNKNOWN) {
|
||||
#if DEBUG
|
||||
print_msg(PRT_NORMAL, "Ooops: GlobalCall %s -- assuming \"Welt 4\"",
|
||||
cur_call->num[CALLED]);
|
||||
|
|
|
@ -204,7 +204,7 @@ T:1-4/12-13,16-18=1.116/4.2353 Tageszeit 2
|
|||
T:5/12-18=1.116/4.2353 Tageszeit 2
|
||||
T:E,H/06-20=1.116/4.8 Sparzeit
|
||||
T:*/20-06=1.116/4.8 Supersparzeit
|
||||
A:+27,+373,+64,+852,
|
||||
A:+27,+373,+64,+852
|
||||
|
||||
Z:11 Ausland Zone 6
|
||||
T:1-5/06-08,18-20=1.116/4.2353 Sparzeit
|
||||
|
@ -794,7 +794,7 @@ T:1-4/12-13,16-18=0.996/4.2353 Tageszeit 2
|
|||
T:5/12-18=0.996/4.2353 Tageszeit 2
|
||||
T:E,H/06-20=0.996/4.8 Sparzeit
|
||||
T:*/20-06=0.996/4.8 Supersparzeit
|
||||
A:+27,+373,+64,+852,
|
||||
A:+27,+373,+64,+852
|
||||
|
||||
Z:11 Ausland Zone 6
|
||||
T:1-5/06-08,18-20=0.996/4.2353 Sparzeit
|
||||
|
@ -1089,7 +1089,7 @@ T:1-4/12-13,16-18=0.936/4.2353 Tageszeit 2
|
|||
T:5/12-18=0.936/4.2353 Tageszeit 2
|
||||
T:E,H/06-20=0.936/4.8 Sparzeit
|
||||
T:*/20-06=0.936/4.8 Supersparzeit
|
||||
A:+27,+373,+64,+852,
|
||||
A:+27,+373,+64,+852
|
||||
|
||||
Z:11 Ausland Zone 6
|
||||
T:1-5/06-08,18-20=0.936/4.2353 Sparzeit
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
V:1.0-Germany [10-Apr-1999]
|
||||
V:1.0-Germany [14-Apr-1999]
|
||||
|
||||
# Zonenvergabe:
|
||||
#
|
||||
# 0 : Verbindungen an der eigenen Tk-Anlage (zwangsläufig kostenlos)
|
||||
# sowie alle "FreeCall" (kostenlos) Nummern des jeweiligen Providers
|
||||
# 1 : Ortszone (alle Nummern, die ohne Vorwahl erreichbar sind.
|
||||
# Z.Zt. nur über den preselected Provider erreichbar)
|
||||
# 2 : Cityzone (Nummern im Umkreis von max. 20 km)
|
||||
|
@ -38,10 +39,10 @@ V:1.0-Germany [10-Apr-1999]
|
|||
# Inmarsat
|
||||
# werden z.Zt. nicht unterstützt
|
||||
#####################################################################
|
||||
P:10,0 Teleglobe
|
||||
P:10 Teleglobe
|
||||
C:GmbH, Gutleutstraße 85, 60329 Frankfurt 01010
|
||||
#####################################################################
|
||||
P:11,0 o.tel.o CbC
|
||||
P:11 o.tel.o CbC
|
||||
G:01.04.1999
|
||||
C:o.tel.o communications GmbH, Am Bonneshof 35, 40474 Düsseldorf 01011
|
||||
C:Homepage: http://www.o-tel-o.de
|
||||
|
@ -52,18 +53,11 @@ T:1-5/08-18=0.15/60
|
|||
T:1-5/18-08=0.10/60
|
||||
T:6-7,H/*=0.095
|
||||
Z:5-10 Mobil
|
||||
A:01610
|
||||
A:01617
|
||||
A:01619
|
||||
A:01618 # C
|
||||
A:0170
|
||||
A:0171 # D1
|
||||
A:0172
|
||||
A:0173 # D2
|
||||
A:0177
|
||||
A:0178 # Eplus
|
||||
A:0176
|
||||
A:0179 # E2
|
||||
A:01610,01617,01619,01618 # C
|
||||
A:0170,0171 # D1
|
||||
A:0172,0173 # D2
|
||||
A:0177,0178 # Eplus
|
||||
A:0176,0179 # E2
|
||||
T:1-5/08-18=0.94/60
|
||||
T:1-5/18-08=0.47/60
|
||||
T:6-7,H/*=0.47/60
|
||||
|
@ -73,10 +67,10 @@ T:1-5/09-22=0.059/60
|
|||
T:1-5/22-09=0.059/60:1800,0.03/60
|
||||
T:6-7,H/*=0.059/60:1800,0.03/60
|
||||
#####################################################################
|
||||
P:12,0 Tele Danmark
|
||||
P:12 Tele Danmark
|
||||
C:Internetz GmbH, Süderstraße 75, 20097 Hamburg 01012
|
||||
#####################################################################
|
||||
P:13,0 Tele 2
|
||||
P:13 Tele 2
|
||||
G:08.02.1999
|
||||
C:Tele 2 Kinnevik Telecommunciations International S.A., 75, route de Longwy, L-8080 Bertrange, Luxembourg 01013
|
||||
C:Homepage: http://www.tele2.de
|
||||
|
@ -91,18 +85,11 @@ T:6-7,H/07-19=0.10/60
|
|||
T:6-7,H/19-22=0.07/60
|
||||
T:6-7,H/22-07=0.05/60
|
||||
Z:5-10 Mobilfunknetz
|
||||
A:01610
|
||||
A:01617
|
||||
A:01619
|
||||
A:01618 # C
|
||||
A:0170
|
||||
A:0171 # D1
|
||||
A:0172
|
||||
A:0173 # D2
|
||||
A:0177
|
||||
A:0178 # Eplus
|
||||
A:0176
|
||||
A:0179 # E2
|
||||
A:01610,01617,01619,01618 # C
|
||||
A:0170,0171 # D1
|
||||
A:0172,0173 # D2
|
||||
A:0177,0178 # Eplus
|
||||
A:0176,0179 # E2
|
||||
T:*/*=0.79/60
|
||||
Z:12 Euro 1 / USA, Kanada
|
||||
A:+1 # Kanada
|
||||
|
@ -167,10 +154,10 @@ A:+852 # Hongkong
|
|||
A:+972 # Israel
|
||||
T:*/*=0.97/60
|
||||
Z:15 Welt 2
|
||||
# UNKNOWN: Diego Garcia
|
||||
# UNKNOWN: Guantanamo
|
||||
A:+246 # Diego Garcia
|
||||
A:+5321 # Guantanamo
|
||||
# UNKNOWN: Solomon Inseln
|
||||
# UNKNOWN: Wallis und Futuna Inseln
|
||||
A:+681 # Wallis und Futuna Inseln
|
||||
A:+1242 # Bahamas
|
||||
A:+1246 # Barbados
|
||||
A:+1264 # Anguilla
|
||||
|
@ -198,7 +185,7 @@ A:+224 # Guinea
|
|||
A:+225 # Cote d'Ivoire (Elfenbeinküste)
|
||||
A:+226 # Burkina Faso (Obervolta)
|
||||
A:+227 # Niger
|
||||
A:+227 # Niger (FUZZ 2:``Niue'' ~ ``Niger'')
|
||||
A:+683 # Niue-Inseln
|
||||
A:+228 # Togo
|
||||
A:+229 # Benin
|
||||
A:+230 # Mauritius
|
||||
|
@ -337,22 +324,22 @@ A:+996 # Kirgisistan
|
|||
A:+998 # Usbekistan
|
||||
T:*/*=2.44/60
|
||||
#####################################################################
|
||||
P:14,0 EWE TEL
|
||||
P:14 EWE TEL
|
||||
C:GmbH, Donnerschweer Straße 22-26, 26123 Oldenburg 01014
|
||||
#####################################################################
|
||||
P:15,0 RSL COM
|
||||
P:15 RSL COM
|
||||
C:Deutschland GmbH, Lyoner Straße 36, 60528 Frankfurt/Main 01015
|
||||
#####################################################################
|
||||
P:16,0 LausitzNet
|
||||
P:16 LausitzNet
|
||||
C:Telekommunikationsgesellschaft mbH, Lausitzer Straße 1-7, 03046 Cottbus 01016
|
||||
#####################################################################
|
||||
P:17,0 SEC
|
||||
P:17 SEC
|
||||
C:Service AG, Dieskaustraße 246, 04249 Leipzig 01017
|
||||
#####################################################################
|
||||
P:18,0 debitel
|
||||
P:18 debitel
|
||||
C:Kommunikationstechnik GmbH & Co KG, Schelmenwasenstr. 37 - 39, 70567 Stuttgart 01018
|
||||
#####################################################################
|
||||
P:19,0 Mobilcom CbC
|
||||
P:19 Mobilcom CbC
|
||||
C:CityLine Telefondienste GmbH, Schwarzer Weg 13, 24837 Schleswig 01019
|
||||
G:06.04.1999
|
||||
C:MobilCom AG
|
||||
|
@ -366,42 +353,65 @@ T:*/19-22=0.08/60 Spar
|
|||
T:*/22-07=0.04/60 Nacht
|
||||
Z:6-10 Mobilfunk
|
||||
T:*/*=0.49/60
|
||||
Z:14 Gruppe A
|
||||
A:+1 # Vereinigte Staaten (USA)
|
||||
A:+30 # Griechenland
|
||||
A:+31 # Niederlande
|
||||
A:+32 # Belgien
|
||||
A:+33 # Frankreich
|
||||
A:+34 # Spanien
|
||||
A:+350 # Gibraltar
|
||||
A:+351 # Portugal
|
||||
A:+352 # Luxemburg
|
||||
A:+353 # Irland
|
||||
A:+356 # Malta
|
||||
A:+358 # Finnland
|
||||
A:+376 # Andorra
|
||||
A:+377 # Monaco
|
||||
A:+39 # Italien
|
||||
A:+41 # Schweiz
|
||||
A:+43 # Österreich
|
||||
A:+44 # Großbritannien und Nordirland
|
||||
A:+45 # Dänemark
|
||||
A:+46 # Schweden
|
||||
A:+47 # Norwegen
|
||||
T:*/*=0.49/60
|
||||
Z:20 Internet
|
||||
A:01929 # (Benutzername: mobilcom; Passwort: mobilcom)
|
||||
T:*/*=0.05/60 FreeNet
|
||||
#####################################################################
|
||||
P:20,0 ISIS
|
||||
P:20 ISIS
|
||||
C:Multimedia Net GmbH, Kaistraße 6, 40221 Düsseldorf 01020
|
||||
#####################################################################
|
||||
P:21,0 QS
|
||||
P:21 QS
|
||||
C:Communication Service GmbH, Oberländer Ufer 180-182, 50968 Köln 01021
|
||||
#####################################################################
|
||||
P:22,0 NetCologne
|
||||
P:22 NetCologne
|
||||
C:GmbH, Maarweg 163, 50825 Köln 01022
|
||||
#####################################################################
|
||||
P:23,0 tesion
|
||||
P:23 tesion
|
||||
C:Communikationsnetze Süd-West GmbH & Co. KG, Kriegsbergstr. 11, 70174 Stuttgart 01023
|
||||
#####################################################################
|
||||
P:24,0 Telepassport
|
||||
P:24 Telepassport
|
||||
C:GmbH, Schwindstraße 3, 60325 Frankfurt 01024
|
||||
#####################################################################
|
||||
P:25,0 CityKom
|
||||
P:25 CityKom
|
||||
C:Münster, Haferlandweg 8, 48155 Münster 01025
|
||||
#####################################################################
|
||||
P:26,0 ECN
|
||||
P:26 ECN
|
||||
C:Telekommunikation GmbH, Schmickstraße 38-40, 60314 Frankfurt 01026
|
||||
#####################################################################
|
||||
P:27,0 Communications Netzmanagement
|
||||
P:27 Communications Netzmanagement
|
||||
C:Bremen GmbH, Theodor-Heuss-Allee 20, 28215 Bremen 01027
|
||||
#####################################################################
|
||||
P:28,0 Colt
|
||||
P:28 Colt
|
||||
C:Telecom GmbH, Gervinusstraße 18-22, 60323 Frankfurt 01028
|
||||
C:Reseller von COLT : Telebridge, Global Communications, Nikoma
|
||||
#####################################################################
|
||||
P:29,0 Unisource
|
||||
P:29 Unisource
|
||||
C:Carrier Services, Industriestraße 21, CH-8304 Wallisellen/Schweiz 01029
|
||||
#####################################################################
|
||||
P:30,0 TelDaFax
|
||||
P:30 TelDaFax
|
||||
G:31.03.1999
|
||||
C:Telefon-, Daten- und Fax-Transfer GmbH & Co. KG, Schuppertsgasse 30, 35083 Wetter (Hessen) 01030
|
||||
C:Name: TeDaFax Telefon-, Daten- und Faxtransfer AG
|
||||
|
@ -418,13 +428,13 @@ T:6-7,H/*=0.09(60)/1
|
|||
Z:6-10 C/D/E-Netz
|
||||
T:*/*=0.48(60)/1
|
||||
#####################################################################
|
||||
P:31,0 HEAG
|
||||
P:31 HEAG
|
||||
C:MediaNet GmbH, Luisenplatz 6, 64283 Darmstadt 01031
|
||||
#####################################################################
|
||||
P:32,0 KDD
|
||||
P:32 KDD
|
||||
C:Deutschland GmbH, Immermannstraße 45, 40210 Düsseldorf 01032
|
||||
#####################################################################
|
||||
P:33,0 DTAG
|
||||
P:33 DTAG
|
||||
G:01.04.1999
|
||||
C:Deutsche Telekom AG, Friedrich-Ebert-Allee 140, 53113 Bonn 01033
|
||||
C:Name: Deutsche Telekom AG
|
||||
|
@ -435,7 +445,15 @@ C: dort ist nur das Verbindungsentgeld faellig
|
|||
C:ISDN-Tarif
|
||||
C:FORMEL: 7,2 / Minutenpreis => Taktlaenge
|
||||
C:Quelle: http://www.telekom.de/untern/tarife/mobil/index.htm
|
||||
Z:1-2 CityCall
|
||||
# Fixme: Z:1-2 CityCall!
|
||||
Z:1 Ortszone
|
||||
T:1-5/09-18=0.12/90 Standard
|
||||
T:1-5/18-21=0.12/150 Spar
|
||||
T:1-5/21-05=0.12/240 Nacht
|
||||
T:1-5/05-09=0.12/150 Spar
|
||||
T:6-7,H/05-21=0.12/150 Spar
|
||||
T:6-7,H/21-05=0.12/240 Nacht
|
||||
Z:2 CityCall
|
||||
T:1-5/09-18=0.12/90 Standard
|
||||
T:1-5/18-21=0.12/150 Spar
|
||||
T:1-5/21-05=0.12/240 Nacht
|
||||
|
@ -457,67 +475,79 @@ T:1-5/06-09=0.12/60:600,0.1084/60 Spar
|
|||
T:6-7,H/06-21=0.12/60:600,0.1084/60 Spar
|
||||
T:6-7,H/21-06=0.06/60 Nacht
|
||||
Z:8 Mobilfunknetz D2
|
||||
A:0172
|
||||
A:0173
|
||||
A:0172,0173
|
||||
T:1-5/09-18=0.12/7.5
|
||||
T:1-5/18-09=0.12/15
|
||||
T:6-7,H/0-24=0.12/15
|
||||
Z:20 Internet
|
||||
A:0191011
|
||||
T:*/*=0.06/0,0.06/60 T-Online eco
|
||||
Z:0 FreeCall
|
||||
A:0010 # Operator Service
|
||||
A:0130 # freecall 0130
|
||||
A:0800 # freecall 0800
|
||||
A:01113 # Telekom Direkt
|
||||
A:01114 # Telekom Privatkundenvertrieb
|
||||
A:01115 # Telekom Geschaftskundenvertrieb
|
||||
A:01136 # Telegrammaufnahme per Telefax
|
||||
A:01171 # Störungsannahme PK
|
||||
A:01172 # Störungsannahme GK
|
||||
A:01174 # Störungsannahme Kabelfernsehen
|
||||
A:110 # Polizei / Notruf
|
||||
A:112 # Feuerwehr / Rettungsleitstelle
|
||||
#####################################################################
|
||||
P:34,0 NEFkom
|
||||
P:34 NEFkom
|
||||
C:Telekommunikation GmbH & Co. KG, Bärenschanzstraße 4, 90429 Nürnberg 01034
|
||||
#####################################################################
|
||||
P:35,0 interCOM
|
||||
P:35 interCOM
|
||||
C:GmbH, Hauptstraße 52a, 28876 Oyten 01035
|
||||
#####################################################################
|
||||
P:36,0 Hutchison
|
||||
P:36 Hutchison
|
||||
C:Münsterstraße 109, 48155 Münster 01036
|
||||
#####################################################################
|
||||
P:37,0 ETS
|
||||
P:37 ETS
|
||||
C:Verwaltung für Sprach- und Datennetze GmbH, Brunnenstraße 4, 61191 Rosbach 01037
|
||||
#####################################################################
|
||||
P:38,0 MediaWays
|
||||
P:38 MediaWays
|
||||
C:GmbH, An der Autobahn, 33311 Gütersloh 01038
|
||||
#####################################################################
|
||||
P:39,0 First Telecom
|
||||
P:39 First Telecom
|
||||
C:GmbH, Lyoner Straße 51, 60528 Frankfurt/Main 01039
|
||||
#####################################################################
|
||||
P:40,0 PLUSNET
|
||||
P:40 PLUSNET
|
||||
C:Gesellschaft für Netzwerk Services mbH, August-Thyssen-Straße 1, 40211 Düsseldorf 01040
|
||||
#####################################################################
|
||||
P:41,0 HanseNet
|
||||
P:41 HanseNet
|
||||
C:Telekommunikation GmbH, Hammerbrookstraße 63, 20097 Hamburg 01041
|
||||
#####################################################################
|
||||
P:42,0 TeleBeL
|
||||
P:42 TeleBeL
|
||||
C:Telekommunikation Bergisches Land GmbH, Johannisberg 7, 42103 Wuppertal 01042
|
||||
#####################################################################
|
||||
P:43,0 KielNet
|
||||
P:43 KielNet
|
||||
C:GmbH, Postfach 41 60, 24100 Kiel 01043
|
||||
#####################################################################
|
||||
P:44,0 VEW TELNET
|
||||
P:44 VEW TELNET
|
||||
C:Gesellschaft für Telekommunikation und Netzdienste mbH, Unterste-Wilms-Straße 29, 44143 Dortmund 01044
|
||||
#####################################################################
|
||||
P:45,0 Global Network
|
||||
P:45 Global Network
|
||||
C:Telephone Deutschland, Grosser Plan 8, 29221 Celle 01045
|
||||
#####################################################################
|
||||
P:46,0 KomTel
|
||||
P:46 KomTel
|
||||
C:Gesellschaft für Kommunikation und Informationsdienste GmbH, Batteriestraße 48, 24937 Flensburg 01046
|
||||
#####################################################################
|
||||
P:47,0 PrimeTec
|
||||
P:47 PrimeTec
|
||||
C:International Europe Ltd. 01047
|
||||
#####################################################################
|
||||
P:48,0 DOKOM
|
||||
P:48 DOKOM
|
||||
C:GmbH, Im Defdahl 5, 44141 Dortmund 01048
|
||||
#####################################################################
|
||||
P:49,0 ACC
|
||||
P:49 ACC
|
||||
C:Telekommunikation GmbH, Heinrich-Heine-Allee 53, 40213 Düsseldorf 01049
|
||||
#####################################################################
|
||||
P:50,0 TALKLINE
|
||||
P:50 TALKLINE
|
||||
C:PS PhoneServices GmbH, Adenauer Damm 1, 25337 Elmshorn 01050
|
||||
#####################################################################
|
||||
P:51,0 01051
|
||||
P:51 01051
|
||||
C:ID-Switch GmbH, Graf-Adolf-Straße, 40210 Düsseldorf 01051
|
||||
G:17.02.1999
|
||||
C:Homepage: http://www.01051.com
|
||||
|
@ -526,61 +556,61 @@ C: 40210 Duesseldorf
|
|||
Z:2-4 Ferngespräche
|
||||
T:*/*=0.09/60
|
||||
#####################################################################
|
||||
P:52,0 Long Distance
|
||||
P:52 Long Distance
|
||||
C:International Ltd., 5 Duke's Gate Acton, London W 4 5 DX, GB 01052
|
||||
#####################################################################
|
||||
P:53,0 WOBCOM
|
||||
P:53 WOBCOM
|
||||
C:GmbH Wolfsburg, Heßlinger Str. 1-5, 38440 Wolfsburg 01053
|
||||
#####################################################################
|
||||
P:54,0 USFI
|
||||
P:54 USFI
|
||||
C:Global Network Services Germany GmbH, Kindsbacherstraße 41, 66877 Ramstein 01054
|
||||
#####################################################################
|
||||
P:55,0 ESPRIT
|
||||
P:55 ESPRIT
|
||||
C:Telecom Deutschland GmbH, Kaistraße 16 A, 40221 Düsseldorf 01055
|
||||
#####################################################################
|
||||
P:56,0 BITel
|
||||
P:56 BITel
|
||||
C:Gesellschaft für kommunale Telekommunikation mbh, Schildescher Straße 16, 33611 Bielefeld 01056
|
||||
#####################################################################
|
||||
P:57,0 Mox
|
||||
P:57 Mox
|
||||
C:Telecom GmbH, Industriestraße 3a, 40878 Ratingen 01057
|
||||
#####################################################################
|
||||
P:58,0 KaTel
|
||||
P:58 KaTel
|
||||
C:Gesellschaft für Telekommunikation mbH, Mathias-Brüggen-Straße 87-89, 50829 Köln 01058
|
||||
#####################################################################
|
||||
P:59,0 Pacific Gateway Exchange
|
||||
P:59 Pacific Gateway Exchange
|
||||
C:Inc., 533 Airport Boulevard, Suite 505, Burlingame, CA 94010, USA 01059
|
||||
#####################################################################
|
||||
P:60,0 Telecom-InfoService
|
||||
P:60 Telecom-InfoService
|
||||
C:GmbH, Postfach 174, A-1000 Wien (A) 01060
|
||||
#####################################################################
|
||||
P:61,0 TelSA
|
||||
P:61 TelSA
|
||||
C:Telekommunikationsgesellschaft mbH, Magdeburger Str. 51, 06112 Halle 01061
|
||||
#####################################################################
|
||||
P:62,0 DENTEL
|
||||
P:62 DENTEL
|
||||
C:GmbH i.G. Grimmstraße 4 80336 München 01062
|
||||
#####################################################################
|
||||
P:63,0 Conos
|
||||
P:63 Conos
|
||||
C:Corporate Network & Services Aktiengesellschaft Lievelingsweg 125 52119 Bonn 01063
|
||||
#####################################################################
|
||||
P:64,0 Hannoversche
|
||||
P:64 Hannoversche
|
||||
C:Telekommunikations- und Netzgesellschaft mbH, Glockseestraße 33, 30161 Hannover 01064
|
||||
#####################################################################
|
||||
P:65,0 Rapid Link
|
||||
P:65 Rapid Link
|
||||
C:Telecommunications GmbH, Donaustraße 68, 68199 Mannheim 01065
|
||||
#####################################################################
|
||||
P:66,0 Interoute
|
||||
P:66 Interoute
|
||||
C:Telecom Deutschland GmbH, Lyoner Str. 15, 60528 Frankfurt 01066
|
||||
#####################################################################
|
||||
P:67,0 RegioCom
|
||||
P:67 RegioCom
|
||||
C:GmbH, Steinfeldstraße 3, 39179 Barleben 01067
|
||||
#####################################################################
|
||||
P:68,0 Tele Media
|
||||
P:68 Tele Media
|
||||
C:International, Wilhelm-Leuschner-Strasse 23-25, 60329 Frankfurt/Main 01068
|
||||
#####################################################################
|
||||
P:69,0 Primus
|
||||
P:69 Primus
|
||||
C:Telecommunications Ltd. 01069
|
||||
#####################################################################
|
||||
P:70,0 Arcor CbC
|
||||
P:70 Arcor CbC
|
||||
G:01.04.99
|
||||
C:Mannesmann Arcor
|
||||
C:Mannesmann AG & Co., Kölner Str. 12, 65760 Eschborn 01070
|
||||
|
@ -611,8 +641,7 @@ T:1-5/09-18=0.96/60 Hauptzeit
|
|||
T:1-5/18-09=0.48/60 Nebenzeit
|
||||
T:6-7,H/*=0.48/60 Freizeit
|
||||
Z:8 D2
|
||||
A:0172
|
||||
A:0173
|
||||
A:0172,0173
|
||||
T:1-5/09-18=0.94/60 Hauptzeit
|
||||
T:1-5/18-09=0.46/60 Nebenzeit
|
||||
T:6-7,H/*=0.46/60 Freizeit
|
||||
|
@ -881,28 +910,80 @@ Z:20 Internet
|
|||
A:0192070 # (Benutzername: arcor; Passwort: internet; Proxy: proxy.arcor-ip.de:80; Startseite: http://www.call.arcor.net)
|
||||
T:*/*=0.06/60
|
||||
#####################################################################
|
||||
P:71,0 DeTeMobil
|
||||
P:70,1 Arcor Town to Town
|
||||
G:01.04.99
|
||||
C:Mannesmann Arcor
|
||||
C:Mannesmann AG & Co., Kölner Str. 12, 65760 Eschborn 01070
|
||||
Z:2 Nah
|
||||
T:1-5/06-09=0.05(60)/30 Freizeit
|
||||
T:1-5/09-18=0.09(60)/30 Hauptzeit
|
||||
T:1-5/18-21=0.05(60)/30 Freizeit
|
||||
T:1-5/21-06=0.04(60)/30 Nebenzeit
|
||||
T:6-7,H/06-21=0.05(60)/30 Freizeit
|
||||
T:6-7,H/21-06=0.04(60)/30 Nebenzeit
|
||||
Z:3 Regional
|
||||
T:1-5/06-09=0.075(60)/30 Freizeit
|
||||
T:1-5/09-18=0.14(60)/30 Hauptzeit
|
||||
T:1-5/18-21=0.075(60)/30 Freizeit
|
||||
T:1-5/21-06=0.04(60)/30 Nebenzeit
|
||||
T:6-7,H/06-21=0.075(60)/30 Freizeit
|
||||
T:6-7,H/21-06=0.04(60)/30 Nebenzeit
|
||||
Z:3 Fern
|
||||
T:1-5/06-09=0.095(60)/30 Freizeit
|
||||
T:1-5/09-18=0.18(60)/30 Hauptzeit
|
||||
T:1-5/18-21=0.095(60)/30 Freizeit
|
||||
T:1-5/21-06=0.06(60)/30 Nebenzeit
|
||||
T:6-7,H/06-21=0.095(60)/30 Freizeit
|
||||
T:6-7,H/21-06=0.06(60)/30 Nebenzeit
|
||||
#####################################################################
|
||||
P:70,2 Arcor Town to Town Sekunde
|
||||
G:01.04.99
|
||||
C:Mannesmann Arcor
|
||||
C:Mannesmann AG & Co., Kölner Str. 12, 65760 Eschborn 01070
|
||||
Z:2 Nah
|
||||
T:1-5/06-09=0.058/0,0.05(60)/1 Freizeit
|
||||
T:1-5/09-18=0.058/0,0.09(60)/1 Hauptzeit
|
||||
T:1-5/18-21=0.058/0,0.05(60)/1 Freizeit
|
||||
T:1-5/21-06=0.058/0,0.04(60)/1 Nebenzeit
|
||||
T:6-7,H/06-21=0.058/0,0.05(60)/1 Freizeit
|
||||
T:6-7,H/21-06=0.058/0,0.04(60)/1 Nebenzeit
|
||||
Z:3 Regional
|
||||
T:1-5/06-09=0.058/0,0.075(60)/1 Freizeit
|
||||
T:1-5/09-18=0.058/0,0.14(60)/1 Hauptzeit
|
||||
T:1-5/18-21=0.058/0,0.075(60)/1 Freizeit
|
||||
T:1-5/21-06=0.058/0,0.04(60)/1 Nebenzeit
|
||||
T:6-7,H/06-21=0.058/0,0.075(60)/1 Freizeit
|
||||
T:6-7,H/21-06=0.058/0,0.04(60)/1 Nebenzeit
|
||||
Z:3 Fern
|
||||
T:1-5/06-09=0.058/0,0.095(60)/1 Freizeit
|
||||
T:1-5/09-18=0.058/0,0.18(60)/1 Hauptzeit
|
||||
T:1-5/18-21=0.058/0,0.095(60)/1 Freizeit
|
||||
T:1-5/21-06=0.058/0,0.06(60)/1 Nebenzeit
|
||||
T:6-7,H/06-21=0.058/0,0.095(60)/1 Freizeit
|
||||
T:6-7,H/21-06=0.058/0,0.06(60)/1 Nebenzeit
|
||||
#####################################################################
|
||||
P:71 DeTeMobil
|
||||
C:Deutsche Telekom MobilNet GmbH, Landgrabenweg 151, 53227 Bonn 01071
|
||||
#####################################################################
|
||||
P:72,0 Mannesmann
|
||||
P:72 Mannesmann
|
||||
C:Mobilfunk GmbH, Am Seestern 1, 40547 Düsseldorf 01072
|
||||
#####################################################################
|
||||
P:73,0 AXXON
|
||||
P:73 AXXON
|
||||
C:Telecom GmbH, Am Seestern 24, 40547 Düsseldorf 01073
|
||||
#####################################################################
|
||||
P:74,0 Alpha
|
||||
P:74 Alpha
|
||||
C:Telecom GmbH, Beethovenstraße 1-3, 60325 Frankfurt/Main 01074
|
||||
#####################################################################
|
||||
P:75,0 ARCIS
|
||||
P:75 ARCIS
|
||||
C:Media Com Management GmbH, Maximilianstr. 14, 80539 München 01075
|
||||
#####################################################################
|
||||
P:76,0 QuickNet
|
||||
P:76 QuickNet
|
||||
C:Telenetworks & Service AG, Else-Lasker-Schüler-Straße 47, 42107 Wuppertal 01076
|
||||
#####################################################################
|
||||
P:77,0 E-Plus
|
||||
P:77 E-Plus
|
||||
C:Mobilfunk GmbH, E-Plus-Platz 1, 40468 Düsseldorf 01077
|
||||
#####################################################################
|
||||
P:78,0 3U
|
||||
P:78 3U
|
||||
G:01.04.1999
|
||||
C:Telekommunikation GmbH, Äußere Zittauer Straße 51, 02708 Löbau 01078
|
||||
C:3U Telekommunikation GmbH
|
||||
|
@ -916,18 +997,11 @@ T:1-5/20-08=0.059(60)/1
|
|||
T:6-7,H/08-20=0.139(60)/1
|
||||
T:6-7,H/20-08=0.059(60)/1
|
||||
Z:5-10
|
||||
A:01610
|
||||
A:01617
|
||||
A:01619
|
||||
A:01618 # C
|
||||
A:0170
|
||||
A:0171 # D1
|
||||
A:0172
|
||||
A:0173 # D2
|
||||
A:0177
|
||||
A:0178 # Eplus
|
||||
A:0176
|
||||
A:0179 # E2
|
||||
A:01610,01617,01619,01618 # C
|
||||
A:0170,0171 # D1
|
||||
A:0172,0173 # D2
|
||||
A:0177,0178 # Eplus
|
||||
A:0176,0179 # E2
|
||||
T:1-5/08-20=0.419(60)/1
|
||||
T:1-5/20-08=0.399(60)/1
|
||||
T:6-7,H/08-20=0.419(60)/1
|
||||
|
@ -1649,7 +1723,7 @@ A:+8741 # Inmarsat A (W.Atlantic)
|
|||
T:*/08-20=9.969(60)/1
|
||||
T:*/20-08=9.949(60)/1
|
||||
#####################################################################
|
||||
P:79,0 Viatel
|
||||
P:79 Viatel
|
||||
G:24.12.1998
|
||||
C:VIAPHONE GmbH, Hanauer Landstraße 187, 60314 Frankfurt 01079
|
||||
C:Homepage: http://www.viatel.de
|
||||
|
@ -1667,31 +1741,31 @@ T:1-5/09-18=0.73(60)/30,0.73(60)/1 Standard
|
|||
T:1-5/18-09=0.36(60)/30,0.36(60)/1 Spar
|
||||
T:6-7/*=0.36(60)/30,0.36(60)/1 Spar
|
||||
#####################################################################
|
||||
P:80,0 Telegate
|
||||
P:80 Telegate
|
||||
C:Aktiengesellschaft für telefonische Informationsdienste, Bahnhofstraße 26, 82211 Herrsching 01080
|
||||
#####################################################################
|
||||
P:81,0 Infotel
|
||||
P:81 Infotel
|
||||
C:bV, Onderlangs 120, 6812 CJ Arnhem, Niederlande 01081
|
||||
#####################################################################
|
||||
P:82,0 AugustaKom
|
||||
P:82 AugustaKom
|
||||
C:Telekommunikation GmbH & Co.KG Hoher Weg 1 86152 Augsburg 01082
|
||||
#####################################################################
|
||||
P:83,0 Wuerzburger
|
||||
P:83 Wuerzburger
|
||||
C:Telekommunikationsgesellschaft mbH, Bahnhofstraße 12-18, 97070 Würzburg 01083
|
||||
#####################################################################
|
||||
P:84,0 Telegroup
|
||||
P:84 Telegroup
|
||||
C:Network Services GmbH, Grossenbaumer Weg 6, 40472 Düsseldorf 01084
|
||||
#####################################################################
|
||||
P:85,0 WESTCom
|
||||
P:85 WESTCom
|
||||
C:GmbH, Hebelstraße 22 c, 69115 Heidelberg 01085
|
||||
#####################################################################
|
||||
P:86,0 ONE.TEL
|
||||
P:86 ONE.TEL
|
||||
C:Limited (UK), Clements House, 14-18 Gresham Street, London, EC2V 7JE, England 01086
|
||||
#####################################################################
|
||||
P:87,0 HAMCOM
|
||||
P:87 HAMCOM
|
||||
C:GmbH Telekommunikation, Südring 1-3, 59065 Hamm 01087
|
||||
#####################################################################
|
||||
P:88,0 WorldCom
|
||||
P:88 WorldCom
|
||||
C:Telecommunication Services GmbH, Brönnerstr. 15, 60313 Frankfurt 01088
|
||||
C:Dies sind *nicht* die korrekten Tarife von WorldCom, da WorldCom
|
||||
C:keine Tarifdaten veroeffentlicht!
|
||||
|
@ -1706,133 +1780,191 @@ T:1-5/21-05=0.03(60)/1 UUnet
|
|||
T:6-7,H/05-21=0.048(60)/1 UUnet
|
||||
T:6-7,H/21-05=0.03(60)/1 UUnet
|
||||
#####################################################################
|
||||
P:89,0 M'net
|
||||
P:89 M'net
|
||||
C:Telekommunikations GmbH, Corneliusstraße 10, 80469 München 01089
|
||||
#####################################################################
|
||||
P:90,0 VIAG INTERKOM
|
||||
P:90 VIAG INTERKOM
|
||||
C:GmbH & Co. KG, Elsenheimer Straße 11, 81927 München 01090
|
||||
#####################################################################
|
||||
P:91,0 IDT
|
||||
P:91 IDT
|
||||
C:Global Limited, London, United Kingdom 01091
|
||||
#####################################################################
|
||||
P:92,0 Hallo Telefon Service
|
||||
P:92 Hallo Telefon Service
|
||||
C:GmbH Dinkelbergstraße 6 76684 Östringen 01092
|
||||
#####################################################################
|
||||
P:93,0 Kray
|
||||
P:93 Kray
|
||||
C:Informationssysteme, Brüder-Grimm-Allee 73 A, 37085 Göttingen 01093
|
||||
#####################################################################
|
||||
P:94,0 Global Communications
|
||||
P:94 Global Communications
|
||||
C:GmbH, Eupener Straße 57 - 59, 50933 Köln 01094
|
||||
#####################################################################
|
||||
P:95,0 Teleos
|
||||
P:95 Teleos
|
||||
C:GmbH, Bielefelder Straße 3, 32051 Herford 01095
|
||||
#####################################################################
|
||||
P:96,0 GELSEN-NET
|
||||
P:96 GELSEN-NET
|
||||
C:Kommunikationsgesellschaft mbH, Munscheidstraße 14, 45886 Gelsenkirchen 01096
|
||||
#####################################################################
|
||||
P:97,0 AT & T-Unisource
|
||||
P:97 AT & T-Unisource
|
||||
C:Communication Services (Deutschland) GmbH, Lyoner Str. 15, 60528 Frankfurt 01097
|
||||
#####################################################################
|
||||
P:98,0 STAR
|
||||
P:98 STAR
|
||||
C:Telecommunications Deutschland GmbH, Voltastraße 1a, 60486 Frankfurt 01098
|
||||
C:Reseller von STAR : C@llas, Mox, Nikoma
|
||||
#####################################################################
|
||||
P:99,0 ECONOPHONE
|
||||
P:98,1 Mox
|
||||
G:01.04.1999
|
||||
C:Mox Telecom AG
|
||||
C:Reseller von Star Telecom
|
||||
Z:2-4 Deutschlandweit
|
||||
T:*/*=0.159(60)/1
|
||||
Z:5-10 Fest-zu-Mobil
|
||||
T:*/*=0.499(60)/1
|
||||
# Großbritannien, USA 25,9 Pfg.
|
||||
#
|
||||
# Australien, Dänemark, Frankreich,
|
||||
# Kanada, Niederlande, Norwegen, 35,9 Pfg.
|
||||
# Schweden, Schweiz
|
||||
#
|
||||
# Belgien, Finnland, Italien,
|
||||
# Luxemburg, Neuseeland, 45,9 Pfg.
|
||||
# Österreich, Spanien
|
||||
#
|
||||
# Hong Kong, Israel, 55,9 Pfg.
|
||||
# Japan, Südkorea
|
||||
#
|
||||
# Griechenland, Island, Kroatien,
|
||||
# Moskau, Polen, Slovenien, 65,9 Pfg.
|
||||
# Ungarn, Tschechien, Türkei
|
||||
#
|
||||
# Rußland*, Singapur 95,9 Pfg.
|
||||
# und restliches Europa
|
||||
#
|
||||
# Aserbaidschan, Kasachstan, 125,9 Pfg.
|
||||
# Georgien, Usbekistan, Ukraine
|
||||
#
|
||||
# Indien, Iran, Sri Lanka 175,9 Pfg.
|
||||
#
|
||||
# Restliche Welt 195,9 Pfg.
|
||||
#####################################################################
|
||||
P:99 ECONOPHONE
|
||||
C:GmbH, Flughafenstraße 54b, 22335 Hamburg 01099
|
||||
C:Reseller von ECONOPHONE : Telco
|
||||
#####################################################################
|
||||
P:100,0 TELELEV
|
||||
P:100 TELELEV
|
||||
C:Telekommunikation GmbH, Dönhoffstraße 39, 51373 Leverkusen 010000
|
||||
#####################################################################
|
||||
P:101,0 Netnet
|
||||
P:101 Netnet
|
||||
C:International AB, P.O. Box 6708, S-11385 Stockholm 010001
|
||||
#####################################################################
|
||||
P:102,0 EncoTel
|
||||
P:102 EncoTel
|
||||
C:GmbH & Co.KG, Leibnitzstraße 73, 07548 Gera 010002
|
||||
#####################################################################
|
||||
P:103,0 mevacom
|
||||
P:103 mevacom
|
||||
C:Telekommunikationsdienstleistungen GmbH, Posthofstraße 16, 14467 Potsdam 010003
|
||||
#####################################################################
|
||||
P:107,0 KPN
|
||||
P:107 KPN
|
||||
C:Telecom BV, Prinses Beatrixlaan 23, 2595 AK's Gravenhage, Niederlande 010007
|
||||
#####################################################################
|
||||
P:108,0 USA Global Link
|
||||
P:108 USA Global Link
|
||||
C:Deutschland GmbH, Theaterstraße 90, 52062 Aachen 010008
|
||||
#####################################################################
|
||||
P:110,0 Bertelsmann mediaSystems
|
||||
P:110 Bertelsmann mediaSystems
|
||||
C:GmbH, An der Autobahn, 33311 Gütersloh 010010
|
||||
#####################################################################
|
||||
P:111,0 RED LINE
|
||||
P:111 RED LINE
|
||||
C:Telekommunikationsgesellschaft mbH, Brückenstraße 17, 63897 Miltenberg 010011
|
||||
#####################################################################
|
||||
P:114,0 NordKom
|
||||
P:114 NordKom
|
||||
C:Weser-Elbe Telekommunikation GmbH, Stresemannstraße 48, 28207 Bremen 010014
|
||||
#####################################################################
|
||||
P:115,0 Delta Three
|
||||
P:115 Delta Three
|
||||
C:Inc., 430 Park Ave, New York 010015
|
||||
#####################################################################
|
||||
P:119,0 E.T.H.
|
||||
P:119 E.T.H.
|
||||
C:Telefondienste GmbH, Bettinastraße 25a, 60325 Frankfurt 010019
|
||||
#####################################################################
|
||||
P:120,0 Komm Consult
|
||||
P:120 Komm Consult
|
||||
C:Oberweg 15, 82024 Taufkirchen bei München 010020
|
||||
#####################################################################
|
||||
P:122,0 Motorola
|
||||
P:122 Motorola
|
||||
C:Electronic GmbH, Hagenauer Straße 47, 65203 Wiesbaden 010022
|
||||
#####################################################################
|
||||
P:130,0 tnp telenet
|
||||
P:130 tnp telenet
|
||||
C:potsdam, kommunikationsgesellschaft mbH, Erich-Weinert-Straße 100, 14478 Potsdam 010030
|
||||
#####################################################################
|
||||
P:131,0 accom
|
||||
P:131 accom
|
||||
C:Gesellschaft für Telekommunikationsnetze und -dienstleistungen GmbH & Co.KG, Borngasse 34, 52064 Aachen 010031
|
||||
#####################################################################
|
||||
P:133,0 Level 3
|
||||
P:133 Level 3
|
||||
C:Communications GmbH, Oberlindau 54 - 56, 60323 Frankfurt/Main 010033
|
||||
#####################################################################
|
||||
P:142,0 connection 42
|
||||
P:142 connection 42
|
||||
C:Ernst-Abbe-Straße 10, 25451 Quickborn 010042
|
||||
#####################################################################
|
||||
P:144,0 Carrier 1
|
||||
P:144 Carrier 1
|
||||
C:AG, Militärstraße 36, CH-8004 Zürich 010044
|
||||
#####################################################################
|
||||
P:150,0 Drillisch
|
||||
P:150 Drillisch
|
||||
C:AG, Horbeller Straße 33, 50858 Köln 010050
|
||||
#####################################################################
|
||||
P:155,0 Telia
|
||||
P:155 Telia
|
||||
C:Telekommunikation GmbH, Herrengraben 3, 20459 Hamburg 010055
|
||||
#####################################################################
|
||||
P:156,0 NETCOM
|
||||
P:156 NETCOM
|
||||
C:Kassel GmbH, Königstor 3 - 13, 34117 Kassel 010056
|
||||
#####################################################################
|
||||
P:160,0 JelloCom
|
||||
P:160 JelloCom
|
||||
C:GmbH & Co.KG, Prüssingstraße 41, 07745 Jena 010060
|
||||
#####################################################################
|
||||
P:166,0 InterCard
|
||||
P:166 InterCard
|
||||
C:GmbH, POS-Service, Mehlbeerenstraße 4, 82024 Taufkirchen bei München 010066
|
||||
#####################################################################
|
||||
P:170,0 Deutsche Telefon- und Marketing Services
|
||||
P:170 Deutsche Telefon- und Marketing Services
|
||||
C:GmbH, Isaac-Fulda-Allee 16, 55124 Mainz 010070
|
||||
#####################################################################
|
||||
P:173,0 TFN COM SA
|
||||
P:173 TFN COM SA
|
||||
C:World Of Communication, Via Greina 2 CP 2950, CH-6901 Lugano 010073
|
||||
#####################################################################
|
||||
P:177,0 WorldxChange
|
||||
P:177 WorldxChange
|
||||
C:Communications GmbH, Am Seedamm 44, 60489 Frankfurt 010077
|
||||
#####################################################################
|
||||
P:180,0 FaciliCom
|
||||
P:180 FaciliCom
|
||||
C:Telekommunikation GmbH; Windmühlstraße 1, 60329 Frankfurt/Main 010080
|
||||
#####################################################################
|
||||
P:184,0 Startec
|
||||
P:184 Startec
|
||||
C:Global Communications (Germany) GmbH, Broßstraße 6, 60487 Frankfurt 010084
|
||||
#####################################################################
|
||||
P:188,0 jk-tel
|
||||
P:188 jk-tel
|
||||
C:GmbH i.G., Hopfenplatz 5, 39120 Magdeburg 010088
|
||||
#####################################################################
|
||||
P:190,0 CNE
|
||||
P:190 CNE
|
||||
C:Corporate Network Essen Gesellschaft für Telekommunikation mbH, Kruppstraße 82 - 100, 45145 Essen 010090
|
||||
#####################################################################
|
||||
P:195,0 TeleNec
|
||||
P:195 TeleNec
|
||||
C:Telekommunikation Neustadt GmbH & Co.KG, Postfach 14 40, 96459 Neustadt 010095
|
||||
#####################################################################
|
||||
P:199,0 ESTel
|
||||
P:199 ESTel
|
||||
C:Energieversorgung Südsachsen Telekommunikationsgesellschaft mbH, Postfach 2 38, 09002 Chemnitz 010099
|
||||
#
|
||||
# Wichtige Provider:
|
||||
# 1. Echtes Call-by-call (per 1-Apr-99):
|
||||
# 11:o.tel.o
|
||||
# 15:Debitel
|
||||
# 19:MobilCom
|
||||
# 24:TelePassport
|
||||
# 30:TelDaFax
|
||||
# 33:Deutsche Telekom
|
||||
# 40:Esprit
|
||||
# 50:Talkline
|
||||
# 51:01051 Telecom
|
||||
# 70:Arcor
|
||||
# 78:3U
|
||||
# 79:Viatel
|
||||
# 85:GTS-WESTCom
|
||||
# 90:Viag Interkom
|
||||
#
|
||||
# 2. Angemeldet:
|
||||
# 13:Tele 2
|
||||
# 15:RSL COM
|
||||
# 88:UUnet
|
||||
# 98:Mox
|
||||
|
|
|
@ -13,6 +13,9 @@ P:28=99
|
|||
# Dont use ACC
|
||||
P:49=99
|
||||
|
||||
# Use Arcor CbC
|
||||
P:70=0
|
||||
|
||||
# Kennzahl 98, moegliche Varianten:
|
||||
# 0=Nikoma Minutentakt
|
||||
# 1=Nikoma Sekundentakt
|
||||
|
|
|
@ -19,6 +19,30 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.4 1999/04/10 16:36:31 akool
|
||||
* isdnlog Version 3.13
|
||||
*
|
||||
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
|
||||
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
|
||||
*
|
||||
* You have to do the following to test this version:
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
|
||||
*
|
||||
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
|
||||
* "/etc/isdn/callerid.conf" file:
|
||||
*
|
||||
* [ISDNLOG]
|
||||
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
|
||||
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
|
||||
* RATEFILE = /usr/lib/isdn/rate-de.dat
|
||||
* RATECONF = /etc/isdn/rate.conf
|
||||
*
|
||||
* Please replace any "de" with your country code ("at", "ch", "nl")
|
||||
*
|
||||
* Good luck (Andreas Kool and Michael Reinelt)
|
||||
*
|
||||
* Revision 1.3 1999/03/24 19:38:53 akool
|
||||
* - isdnlog Version 3.10
|
||||
* - moved "sondernnummern.c" from isdnlog/ to tools/
|
||||
|
@ -57,15 +81,9 @@
|
|||
* void exitHoliday()
|
||||
* deinitialisiert die Feiertagsberechnung
|
||||
*
|
||||
* int isHoliday(struct tm *tm, char **name)
|
||||
* 0 .. kein Feiertag
|
||||
* 1 .. Feiertag, *name zeigt auf den Namen
|
||||
*
|
||||
* int getDay(struct tm *tm, char **name)
|
||||
* 1 .. Montag
|
||||
* 7 .. Sonntag
|
||||
* 8 .. Feiertag
|
||||
* *name zeigt auf den Namen
|
||||
* int isDay(struct tm *tm, bitfield mask, char **name)
|
||||
* prüft, ob <tm> ein Tag aus <mask> ist, und liefert
|
||||
* eine Beschreibung in <*name>
|
||||
*/
|
||||
|
||||
#define _HOLIDAY_C_
|
||||
|
@ -84,9 +102,9 @@
|
|||
|
||||
#include "holiday.h"
|
||||
|
||||
#define COUNT(array) sizeof(array)/sizeof(array[0])
|
||||
|
||||
#define SOMEDAY (1<<MONDAY | 1<<THUESDAY | 1<<WEDNESDAY | 1<<THURSDAY | 1<<FRIDAY | 1<<SATURDAY | 1<<SUNDAY)
|
||||
#define LENGTH 120 /* max length of lines in data file */
|
||||
#define COUNT(array) sizeof(array)/sizeof(array[0])
|
||||
|
||||
typedef unsigned int julian;
|
||||
|
||||
|
@ -96,13 +114,15 @@ typedef struct {
|
|||
char *name;
|
||||
} HOLIDATE;
|
||||
|
||||
static char *defaultWeekday[] = { "Monday",
|
||||
static char *defaultWeekday[] = { "",
|
||||
"Monday",
|
||||
"Thuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday",
|
||||
"Sunday",
|
||||
"Workday",
|
||||
"Weekend",
|
||||
"Holiday" };
|
||||
|
||||
|
@ -192,7 +212,7 @@ void exitHoliday(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<7; i++) {
|
||||
for (i=0; i<COUNT(Weekday); i++) {
|
||||
if (Weekday[i]) {
|
||||
free (Weekday[i]);
|
||||
Weekday[i]=NULL;
|
||||
|
@ -212,7 +232,7 @@ int initHoliday(char *path, char **msg)
|
|||
int i,m,d;
|
||||
char *s, *date, *name;
|
||||
char buffer[LENGTH];
|
||||
char version[LENGTH]="";
|
||||
char version[LENGTH]="<unknown>";
|
||||
static char message[LENGTH];
|
||||
|
||||
if (msg)
|
||||
|
@ -224,12 +244,12 @@ int initHoliday(char *path, char **msg)
|
|||
Weekday[i]=strdup(defaultWeekday[i]);
|
||||
|
||||
if (!path || !*path) {
|
||||
if (msg) snprintf (*msg=message, LENGTH, "Warning: no holiday database specified!");
|
||||
if (msg) snprintf (message, LENGTH, "Warning: no holiday database specified!");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((stream=fopen(path,"r"))==NULL) {
|
||||
if (msg) snprintf (*msg=message, LENGTH, "Error: could not load holidays from %s: %s",
|
||||
if (msg) snprintf (message, LENGTH, "Error: could not load holidays from %s: %s",
|
||||
path, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
@ -252,6 +272,9 @@ int initHoliday(char *path, char **msg)
|
|||
warning("invalid weekday %d", d);
|
||||
continue;
|
||||
}
|
||||
} else if (*s=='W') {
|
||||
d=WORKDAY;
|
||||
s++;
|
||||
} else if (*s=='E') {
|
||||
d=WEEKEND;
|
||||
s++;
|
||||
|
@ -270,8 +293,8 @@ int initHoliday(char *path, char **msg)
|
|||
warning("empty weekday %d", d);
|
||||
continue;
|
||||
}
|
||||
if (Weekday[d-1]) free(Weekday[d-1]);
|
||||
Weekday[d-1]=strdup(name);
|
||||
if (Weekday[d]) free(Weekday[d]);
|
||||
Weekday[d]=strdup(name);
|
||||
break;
|
||||
|
||||
case 'D':
|
||||
|
@ -304,13 +327,13 @@ int initHoliday(char *path, char **msg)
|
|||
}
|
||||
fclose(stream);
|
||||
|
||||
if (msg) snprintf (*msg=message, LENGTH, "Holiday Version %s loaded [%d entries from %s]",
|
||||
if (msg) snprintf (message, LENGTH, "Holiday Version %s loaded [%d entries from %s]",
|
||||
version, nHoliday, path);
|
||||
|
||||
return nHoliday;
|
||||
}
|
||||
|
||||
int isHoliday(struct tm *tm, char **name)
|
||||
static int isHoliday(struct tm *tm, char **name)
|
||||
{
|
||||
int i;
|
||||
julian easter, day;
|
||||
|
@ -329,20 +352,43 @@ int isHoliday(struct tm *tm, char **name)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int getDay(struct tm *tm, char **name)
|
||||
int isDay(struct tm *tm, bitfield mask, char **name)
|
||||
{
|
||||
julian day;
|
||||
char *s;
|
||||
static char buffer[BUFSIZ];
|
||||
|
||||
if (isHoliday(tm, name))
|
||||
if (name)
|
||||
*(*name=buffer)='\0';
|
||||
|
||||
if (mask & (1<<EVERYDAY))
|
||||
return EVERYDAY;
|
||||
|
||||
if ((mask & (1<<HOLIDAY)) && isHoliday(tm, &s)) {
|
||||
sprintf (buffer, "%s (%s)", Weekday[HOLIDAY], s);
|
||||
return HOLIDAY;
|
||||
}
|
||||
|
||||
day=(date2julian(tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday)-6)%7+1;
|
||||
if (name)
|
||||
*name=Weekday[day-1];
|
||||
|
||||
if ((mask & (1<<WEEKEND)) && day>5) {
|
||||
sprintf (buffer, "%s (%s)", Weekday[WEEKEND], Weekday[day]);
|
||||
return WEEKEND;
|
||||
}
|
||||
|
||||
if ((mask & (1<<WORKDAY)) && day<6) {
|
||||
sprintf (buffer, "%s (%s)", Weekday[WORKDAY], Weekday[day]);
|
||||
return WORKDAY;
|
||||
}
|
||||
|
||||
if (mask & SOMEDAY) {
|
||||
sprintf (buffer, "%s", Weekday[day]);
|
||||
return day;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef HOLITEST
|
||||
void main (int argc, char *argv[])
|
||||
{
|
||||
|
@ -359,8 +405,14 @@ void main (int argc, char *argv[])
|
|||
tm.tm_mon=atoi(strsep(argv+i,"."))-1;
|
||||
tm.tm_year=atoi(strsep(argv+i,"."))-1900;
|
||||
|
||||
d=getDay(&tm,&name);
|
||||
printf ("%02d.%02d.%04d\t%d=%s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,name);
|
||||
d=isDay(&tm,1<<HOLIDAY,&name);
|
||||
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Holiday");
|
||||
d=isDay(&tm,1<<WEEKEND,&name);
|
||||
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Weekend");
|
||||
d=isDay(&tm,1<<WORKDAY,&name);
|
||||
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Workday");
|
||||
d=isDay(&tm,SOMEDAY,&name);
|
||||
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Day (Uh?)");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -19,6 +19,30 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.3 1999/04/10 16:36:35 akool
|
||||
* isdnlog Version 3.13
|
||||
*
|
||||
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
|
||||
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
|
||||
*
|
||||
* You have to do the following to test this version:
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
|
||||
*
|
||||
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
|
||||
* "/etc/isdn/callerid.conf" file:
|
||||
*
|
||||
* [ISDNLOG]
|
||||
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
|
||||
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
|
||||
* RATEFILE = /usr/lib/isdn/rate-de.dat
|
||||
* RATECONF = /etc/isdn/rate.conf
|
||||
*
|
||||
* Please replace any "de" with your country code ("at", "ch", "nl")
|
||||
*
|
||||
* Good luck (Andreas Kool and Michael Reinelt)
|
||||
*
|
||||
* Revision 1.2 1999/03/16 17:38:07 akool
|
||||
* - isdnlog Version 3.07
|
||||
* - Michael Reinelt's patch as of 16Mar99 06:58:58
|
||||
|
@ -50,12 +74,15 @@
|
|||
#define FRIDAY 5
|
||||
#define SATURDAY 6
|
||||
#define SUNDAY 7
|
||||
#define WEEKEND 8
|
||||
#define HOLIDAY 9
|
||||
#define WORKDAY 8
|
||||
#define WEEKEND 9
|
||||
#define HOLIDAY 10
|
||||
#define EVERYDAY 11
|
||||
|
||||
typedef unsigned long bitfield;
|
||||
|
||||
int initHoliday(char *path, char **msg);
|
||||
void exitHoliday(void);
|
||||
int isHoliday(struct tm *tm, char **name);
|
||||
int getDay(struct tm *tm, char **name);
|
||||
int isDay(struct tm *tm, bitfield mask, char **name);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -19,6 +19,30 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.4 1999/04/10 16:36:39 akool
|
||||
* isdnlog Version 3.13
|
||||
*
|
||||
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
|
||||
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
|
||||
*
|
||||
* You have to do the following to test this version:
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
|
||||
*
|
||||
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
|
||||
* "/etc/isdn/callerid.conf" file:
|
||||
*
|
||||
* [ISDNLOG]
|
||||
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
|
||||
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
|
||||
* RATEFILE = /usr/lib/isdn/rate-de.dat
|
||||
* RATECONF = /etc/isdn/rate.conf
|
||||
*
|
||||
* Please replace any "de" with your country code ("at", "ch", "nl")
|
||||
*
|
||||
* Good luck (Andreas Kool and Michael Reinelt)
|
||||
*
|
||||
* Revision 1.3 1999/03/24 19:39:00 akool
|
||||
* - isdnlog Version 3.10
|
||||
* - moved "sondernnummern.c" from isdnlog/ to tools/
|
||||
|
@ -77,6 +101,10 @@
|
|||
* versucht die Zone zu erraten, wenn mit den Daten in Rate
|
||||
* units Einheiten gemeldet wurden
|
||||
*
|
||||
* char *explainRate (RATE *Rate)
|
||||
* liefert eine textuelle Begründung für den Tarif in der Form
|
||||
* "Provider, Zone, Wochentag, Zeit"
|
||||
*
|
||||
*/
|
||||
|
||||
#define _RATE_C_
|
||||
|
@ -100,7 +128,10 @@
|
|||
#define LENGTH 250 /* max length of lines in data file */
|
||||
#define UNKNOWN -1
|
||||
|
||||
typedef unsigned long bitfield;
|
||||
typedef struct _STACK {
|
||||
int data;
|
||||
struct _STACK *next;
|
||||
} STACK;
|
||||
|
||||
typedef struct {
|
||||
int Duration;
|
||||
|
@ -126,6 +157,7 @@ typedef struct {
|
|||
} ZONE;
|
||||
|
||||
typedef struct {
|
||||
int booked;
|
||||
int used;
|
||||
char *Name;
|
||||
int nZone;
|
||||
|
@ -171,20 +203,57 @@ static char* str2set (char **s)
|
|||
static char buffer[BUFSIZ];
|
||||
char *p=buffer;
|
||||
|
||||
|
||||
while (**s) {
|
||||
if (**s==',') {
|
||||
*p='\0';
|
||||
if (**s==',')
|
||||
break;
|
||||
} else {
|
||||
*p++=**s;
|
||||
(*s)++;
|
||||
}
|
||||
else
|
||||
*p++=*(*s)++;
|
||||
}
|
||||
*p = 0;
|
||||
*p = '\0';
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static int strmatch (const char *pattern, const char *string)
|
||||
{
|
||||
while (*pattern) {
|
||||
if (*pattern!=*string || !*string)
|
||||
return 0;
|
||||
pattern++;
|
||||
string++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void push (STACK **stack, int data)
|
||||
{
|
||||
STACK *new=malloc(sizeof(STACK));
|
||||
new->data=data;
|
||||
new->next=*stack;
|
||||
*stack=new;
|
||||
}
|
||||
|
||||
static int pop (STACK **stack)
|
||||
{
|
||||
STACK *old=*stack;
|
||||
int data;
|
||||
|
||||
if (!old)
|
||||
return UNKNOWN;
|
||||
data=old->data;
|
||||
*stack=old->next;
|
||||
return (data);
|
||||
}
|
||||
|
||||
static void empty (STACK **stack)
|
||||
{
|
||||
STACK *old;
|
||||
while (*stack) {
|
||||
old=*stack;
|
||||
*stack=old->next;
|
||||
free(old);
|
||||
}
|
||||
}
|
||||
|
||||
void exitRate(void)
|
||||
{
|
||||
int i, j, k;
|
||||
|
@ -215,34 +284,35 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
{
|
||||
FILE *stream;
|
||||
char buffer[LENGTH];
|
||||
char Version[LENGTH]="";
|
||||
static char message[LENGTH];
|
||||
int use[MAXPROVIDER];
|
||||
char Version[LENGTH]="<unknown>";
|
||||
int booked[MAXPROVIDER];
|
||||
int variant[MAXPROVIDER];
|
||||
int Providers=0;
|
||||
int nZone=0;
|
||||
int nHour=0;
|
||||
int ignore=0;
|
||||
int prefix=UNKNOWN;
|
||||
int version=UNKNOWN;
|
||||
int zone=UNKNOWN;
|
||||
int day1, day2, hour1, hour2;
|
||||
STACK *zones=NULL, *zp;
|
||||
int zone1, zone2, day1, day2, hour1, hour2;
|
||||
bitfield day, hour;
|
||||
double price, divider, duration;
|
||||
int delay;
|
||||
int i, t, u;
|
||||
char *s;
|
||||
int i, t, u, v, z;
|
||||
char *a, *c, *s;
|
||||
static char message[LENGTH];
|
||||
|
||||
if (msg)
|
||||
*(*msg=message)='\0';
|
||||
|
||||
for (i=0; i<MAXPROVIDER; i++) {
|
||||
use[i]=UNKNOWN;
|
||||
booked[i]=0;
|
||||
variant[i]=UNKNOWN;
|
||||
}
|
||||
|
||||
line=0;
|
||||
if (conf && *conf) {
|
||||
if ((stream=fopen(conf,"r"))==NULL) {
|
||||
if (msg) snprintf (*msg=message, LENGTH, "Error: could not load rate configuration from %s: %s",
|
||||
if (msg) snprintf (message, LENGTH, "Error: could not load rate configuration from %s: %s",
|
||||
conf, strerror(errno));
|
||||
return -1;
|
||||
} else {
|
||||
|
@ -267,19 +337,22 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
warning ("Invalid provider-number %d", prefix);
|
||||
continue;
|
||||
}
|
||||
booked[prefix]=1;
|
||||
while (isblank(*s)) s++;
|
||||
if (*s != '=') {
|
||||
warning ("expected '=', got '%s'!", s);
|
||||
continue;
|
||||
}
|
||||
if (*s == '=') {
|
||||
s++;
|
||||
while (isblank(*s)) s++;
|
||||
if (!isdigit(*s)) {
|
||||
warning ("Invalid variant %s", s);
|
||||
continue;
|
||||
}
|
||||
use[prefix] = strtol(s, &s, 10);
|
||||
if ((v=strtol(s, &s, 10))<1) {
|
||||
warning ("Invalid variant %s", s);
|
||||
continue;
|
||||
}
|
||||
variant[prefix]=v;
|
||||
while (isblank(*s)) s++;
|
||||
}
|
||||
if (*s) {
|
||||
warning ("trailing junk '%s' ignored.", s);
|
||||
}
|
||||
|
@ -294,13 +367,13 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
}
|
||||
|
||||
if (!dat || !*dat) {
|
||||
if (msg) snprintf (*msg=message, LENGTH, "Warning: no rate database specified!",
|
||||
if (msg) snprintf (message, LENGTH, "Warning: no rate database specified!",
|
||||
conf, strerror(errno));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((stream=fopen(dat,"r"))==NULL) {
|
||||
if (msg) snprintf (*msg=message, LENGTH, "Error: could not load rate database from %s: %s",
|
||||
if (msg) snprintf (message, LENGTH, "Error: could not load rate database from %s: %s",
|
||||
dat, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
@ -320,8 +393,8 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
|
||||
case 'P': /* P:nn[,v] Bezeichnung */
|
||||
ignore = 0;
|
||||
version = UNKNOWN;
|
||||
zone = UNKNOWN;
|
||||
v = UNKNOWN;
|
||||
empty(&zones);
|
||||
|
||||
s+=2; while (isblank(*s)) s++;
|
||||
if (!isdigit(*s)) {
|
||||
|
@ -340,10 +413,13 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
warning ("Invalid variant '%c'", *s);
|
||||
continue;
|
||||
}
|
||||
version = strtol(s, &s ,10);
|
||||
if ((v=strtol(s, &s ,10))<1) {
|
||||
warning ("Invalid variant %d", v);
|
||||
continue;
|
||||
}
|
||||
if ((use[prefix]!=UNKNOWN) && (version!=UNKNOWN) && (use[prefix]!=version)) {
|
||||
version = UNKNOWN;
|
||||
}
|
||||
if ((variant[prefix]!=UNKNOWN) && (v!=UNKNOWN) && (variant[prefix]!=v)) {
|
||||
v = UNKNOWN;
|
||||
ignore = 1;
|
||||
continue;
|
||||
}
|
||||
|
@ -357,7 +433,9 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
warning ("Duplicate entry for provider %d (%s)", prefix, Provider[prefix].Name);
|
||||
if (Provider[prefix].Name) free(Provider[prefix].Name);
|
||||
}
|
||||
Provider[prefix].Name=strdup(strip(s));
|
||||
while (isblank(*s)) s++;
|
||||
Provider[prefix].Name=*s?strdup(s):NULL;
|
||||
Provider[prefix].booked=booked[prefix];
|
||||
Provider[prefix].nZone=0;
|
||||
Provider[prefix].Zone=NULL;
|
||||
Providers++;
|
||||
|
@ -371,54 +449,101 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
if (ignore) continue;
|
||||
break;
|
||||
|
||||
case 'I': /* I:nnn Internet-Zugangsnummer */
|
||||
warning ("Obsolete entry '%c'", *s);
|
||||
break;
|
||||
|
||||
case 'Z': /* Z:n[-n] Bezeichnung */
|
||||
case 'Z': /* Z:n[-n][,n] Bezeichnung */
|
||||
if (ignore) continue;
|
||||
if (prefix == UNKNOWN) {
|
||||
warning ("Unexpected tag '%c'", *s);
|
||||
break;
|
||||
}
|
||||
s+=2; while (isblank(*s)) s++;
|
||||
s+=2;
|
||||
empty(&zones);
|
||||
while (1) {
|
||||
while (isblank(*s)) s++;
|
||||
if (!isdigit(*s)) {
|
||||
warning ("Invalid zone '%c'", *s);
|
||||
empty(&zones);
|
||||
break;
|
||||
}
|
||||
zone1=strtol(s,&s,10);
|
||||
while (isblank(*s)) s++;
|
||||
if (*s=='-') {
|
||||
s++; while (isblank(*s)) s++;
|
||||
if (!isdigit(*s)) {
|
||||
warning ("Invalid zone '%c'", *s);
|
||||
empty(&zones);
|
||||
break;
|
||||
}
|
||||
zone2=strtol(++s,&s,10);
|
||||
if (zone2<zone1) {
|
||||
i=zone2; zone2=zone1; zone1=i;
|
||||
}
|
||||
for (i=zone1; i<=zone2; i++)
|
||||
push (&zones, i);
|
||||
} else {
|
||||
push (&zones, zone1);
|
||||
}
|
||||
while (isblank(*s)) s++;
|
||||
if (*s==',') {
|
||||
s++;
|
||||
continue;
|
||||
}
|
||||
zone=strtol(s,&s,10);
|
||||
if (zone>=Provider[prefix].nZone) {
|
||||
Provider[prefix].Zone=realloc(Provider[prefix].Zone, (zone+1)*sizeof(ZONE));
|
||||
for (i=Provider[prefix].nZone; i<zone; i++)
|
||||
Provider[prefix].Zone[i].used=0;
|
||||
Provider[prefix].nZone = zone+1;
|
||||
break;
|
||||
}
|
||||
Provider[prefix].Zone[zone].used=1;
|
||||
Provider[prefix].Zone[zone].Name=strdup(strip(s));
|
||||
Provider[prefix].Zone[zone].nArea=0;
|
||||
Provider[prefix].Zone[zone].Area=NULL;
|
||||
Provider[prefix].Zone[zone].nHour=0;
|
||||
Provider[prefix].Zone[zone].Hour=NULL;
|
||||
|
||||
if (!zones)
|
||||
break;
|
||||
|
||||
zp=zones;
|
||||
while (zp) {
|
||||
z=pop(&zp);
|
||||
if (z>=Provider[prefix].nZone) {
|
||||
Provider[prefix].Zone=realloc(Provider[prefix].Zone, (z+1)*sizeof(ZONE));
|
||||
for (i=Provider[prefix].nZone; i<z; i++)
|
||||
Provider[prefix].Zone[i].used=0;
|
||||
Provider[prefix].nZone = z+1;
|
||||
}
|
||||
Provider[prefix].Zone[z].used=1;
|
||||
Provider[prefix].Zone[z].Name=*s?strdup(s):NULL;
|
||||
Provider[prefix].Zone[z].nArea=0;
|
||||
Provider[prefix].Zone[z].Area=NULL;
|
||||
Provider[prefix].Zone[z].nHour=0;
|
||||
Provider[prefix].Zone[z].Hour=NULL;
|
||||
nZone++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'A': /* A:areacode[,areacode...] */
|
||||
if (ignore) continue;
|
||||
if (zone == UNKNOWN) {
|
||||
if (!zones) {
|
||||
warning ("Unexpected tag '%c'", *s);
|
||||
break;
|
||||
}
|
||||
s+=2;
|
||||
do {
|
||||
Provider[prefix].Zone[zone].Area=realloc(Provider[prefix].Zone[zone].Area,
|
||||
(Provider[prefix].Zone[zone].nArea+1)*sizeof(char*));
|
||||
Provider[prefix].Zone[zone].Area[Provider[prefix].Zone[zone].nArea++]=strdup(str2set(&s));
|
||||
} while (*s==',');
|
||||
zp=zones;
|
||||
while (zp) {
|
||||
z=pop(&zp);
|
||||
a=s;
|
||||
while(1) {
|
||||
if (*(c=strip(str2set(&a)))) {
|
||||
Provider[prefix].Zone[z].Area=realloc(Provider[prefix].Zone[z].Area,
|
||||
(Provider[prefix].Zone[z].nArea+1)*sizeof(char*));
|
||||
Provider[prefix].Zone[z].Area[Provider[prefix].Zone[z].nArea++]=strdup(c);
|
||||
} else {
|
||||
warning ("Ignoring empty areacode");
|
||||
}
|
||||
if (*a==',') {
|
||||
a++;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
s=a;
|
||||
break;
|
||||
|
||||
case 'T': /* T:d-d/h-h=p/s:t[=]Bezeichnung */
|
||||
if (ignore) continue;
|
||||
if (zone == UNKNOWN) {
|
||||
if (!zones) {
|
||||
warning ("Unexpected tag '%c'", *s);
|
||||
break;
|
||||
}
|
||||
|
@ -428,22 +553,29 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
while (1) {
|
||||
while (isblank(*s)) s++;
|
||||
if (*s=='*') { /* jeder Tag */
|
||||
day |= 0x1ff; /* 111111111 */
|
||||
day |= 1<<EVERYDAY;
|
||||
s++;
|
||||
} else if (*s=='W') { /* Wochentag 1-5 */
|
||||
day |= 0x1f; /* 000011111 */
|
||||
day |= 1<<WORKDAY;
|
||||
s++;
|
||||
} else if (*s=='E') { /* weekEnd */
|
||||
day |= 0x80; /* 010000000 */
|
||||
day |= 1<<WEEKEND;
|
||||
s++;
|
||||
} else if (*s=='H') { /* Holiday */
|
||||
day |= 0x100; /* 100000000 */
|
||||
day |= 1<<HOLIDAY;
|
||||
s++;
|
||||
} else if (isdigit(*s)) { /* 1 oder 1-5 */
|
||||
day1=strtol(s,&s,10);
|
||||
while (isblank(*s)) s++;
|
||||
if (*s=='-') day2=strtol(++s,&s,10);
|
||||
else day2=day1;
|
||||
if (*s=='-') {
|
||||
s++; while (isblank(*s)) s++;
|
||||
if (!isdigit(*s)) {
|
||||
warning ("invalid day '%s'", s);
|
||||
day=0;
|
||||
break;
|
||||
}
|
||||
day2=strtol(s,&s,10);
|
||||
} else day2=day1;
|
||||
if (day1<1 || day1>7) {
|
||||
warning ("invalid day %d", day1);
|
||||
day=0;
|
||||
|
@ -454,8 +586,11 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
day=0;
|
||||
break;
|
||||
}
|
||||
if (day2<day1) {
|
||||
i=day2; day2=day1; day1=i;
|
||||
}
|
||||
for (i=day1; i<=day2; i++)
|
||||
day|=(1<<(i-1));
|
||||
day|=(1<<i);
|
||||
} else {
|
||||
warning ("invalid day '%c'", *s);
|
||||
day=0;
|
||||
|
@ -469,14 +604,14 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
break;
|
||||
}
|
||||
|
||||
if (!day)
|
||||
break;
|
||||
|
||||
if (*s!='/') {
|
||||
warning ("expected '/', got '%s'!", s);
|
||||
day=0;
|
||||
}
|
||||
|
||||
if (!day)
|
||||
break;
|
||||
|
||||
s++;
|
||||
while (1) {
|
||||
while (isblank(*s)) s++;
|
||||
|
@ -517,21 +652,25 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
break;
|
||||
}
|
||||
|
||||
if (!hour)
|
||||
break;
|
||||
|
||||
if (*s!='=') {
|
||||
warning ("expected '=', got '%s'!", s);
|
||||
hour=0;
|
||||
}
|
||||
|
||||
if (!hour)
|
||||
break;
|
||||
|
||||
t=Provider[prefix].Zone[zone].nHour++;
|
||||
Provider[prefix].Zone[zone].Hour = realloc(Provider[prefix].Zone[zone].Hour, (t+1)*sizeof(HOUR));
|
||||
Provider[prefix].Zone[zone].Hour[t].Name=NULL;
|
||||
Provider[prefix].Zone[zone].Hour[t].Day=day;
|
||||
Provider[prefix].Zone[zone].Hour[t].Hour=hour;
|
||||
Provider[prefix].Zone[zone].Hour[t].nUnit=0;
|
||||
Provider[prefix].Zone[zone].Hour[t].Unit=NULL;
|
||||
zp=zones;
|
||||
while (zp) {
|
||||
z=pop(&zp);
|
||||
t=Provider[prefix].Zone[z].nHour++;
|
||||
Provider[prefix].Zone[z].Hour = realloc(Provider[prefix].Zone[z].Hour, (t+1)*sizeof(HOUR));
|
||||
Provider[prefix].Zone[z].Hour[t].Name=NULL;
|
||||
Provider[prefix].Zone[z].Hour[t].Day=day;
|
||||
Provider[prefix].Zone[z].Hour[t].Hour=hour;
|
||||
Provider[prefix].Zone[z].Hour[t].nUnit=0;
|
||||
Provider[prefix].Zone[z].Hour[t].Unit=NULL;
|
||||
}
|
||||
|
||||
s++;
|
||||
while (1) {
|
||||
|
@ -583,12 +722,16 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
warning("last rate must not have a delay, will be ignored!");
|
||||
delay=UNKNOWN;
|
||||
}
|
||||
t=Provider[prefix].Zone[zone].nHour-1;
|
||||
u=Provider[prefix].Zone[zone].Hour[t].nUnit++;
|
||||
Provider[prefix].Zone[zone].Hour[t].Unit=realloc(Provider[prefix].Zone[zone].Hour[t].Unit, (u+1)*sizeof(UNIT));
|
||||
Provider[prefix].Zone[zone].Hour[t].Unit[u].Duration=duration;
|
||||
Provider[prefix].Zone[zone].Hour[t].Unit[u].Delay=delay;
|
||||
Provider[prefix].Zone[zone].Hour[t].Unit[u].Price=price/divider;
|
||||
zp=zones;
|
||||
while (zp) {
|
||||
z=pop(&zp);
|
||||
t=Provider[prefix].Zone[z].nHour-1;
|
||||
u=Provider[prefix].Zone[z].Hour[t].nUnit++;
|
||||
Provider[prefix].Zone[z].Hour[t].Unit=realloc(Provider[prefix].Zone[z].Hour[t].Unit, (u+1)*sizeof(UNIT));
|
||||
Provider[prefix].Zone[z].Hour[t].Unit[u].Duration=duration;
|
||||
Provider[prefix].Zone[z].Hour[t].Unit[u].Delay=delay;
|
||||
Provider[prefix].Zone[z].Hour[t].Unit[u].Price=price/divider;
|
||||
}
|
||||
nHour++;
|
||||
if (*s==',') {
|
||||
s++;
|
||||
|
@ -596,8 +739,13 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
}
|
||||
break;
|
||||
}
|
||||
t=Provider[prefix].Zone[zone].nHour-1;
|
||||
Provider[prefix].Zone[zone].Hour[t].Name=strdup(strip(s));
|
||||
while (isblank(*s)) s++;
|
||||
zp=zones;
|
||||
while (zp) {
|
||||
z=pop(&zp);
|
||||
t=Provider[prefix].Zone[z].nHour-1;
|
||||
Provider[prefix].Zone[z].Hour[t].Name=*s?strdup(s):NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'V': /* V:xxx Version der Datenbank */
|
||||
|
@ -610,8 +758,9 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
}
|
||||
}
|
||||
fclose(stream);
|
||||
empty(&zones);
|
||||
|
||||
if (msg) snprintf (*msg=message, LENGTH, "Rate Version %s loaded [%d Providers, %d Zones, %d Rates from %s]",
|
||||
if (msg) snprintf (message, LENGTH, "Rate Version %s loaded [%d Providers, %d Zones, %d Rates from %s]",
|
||||
Version, Providers, nZone, nHour, dat);
|
||||
|
||||
return 0;
|
||||
|
@ -619,7 +768,7 @@ int initRate(char *conf, char *dat, char **msg)
|
|||
|
||||
char *getProvidername (int prefix)
|
||||
{
|
||||
if (prefix<0 || prefix>nProvider || !Provider[prefix].used) {
|
||||
if (prefix<0 || prefix>=nProvider || !Provider[prefix].used) {
|
||||
return NULL;
|
||||
}
|
||||
return Provider[prefix].Name;
|
||||
|
@ -629,7 +778,7 @@ int getZone (int prefix, char *number)
|
|||
{
|
||||
int a,z;
|
||||
|
||||
if (prefix<0 || prefix>nProvider || !Provider[prefix].used) {
|
||||
if (prefix<0 || prefix>=nProvider || !Provider[prefix].used) {
|
||||
return UNKNOWN;
|
||||
}
|
||||
|
||||
|
@ -637,7 +786,7 @@ int getZone (int prefix, char *number)
|
|||
if (!Provider[prefix].Zone[z].used)
|
||||
continue;
|
||||
for (a=0; a<Provider[prefix].Zone[z].nArea; a++) {
|
||||
if (strncmp(number, Provider[prefix].Zone[z].Area[a], strlen(Provider[prefix].Zone[z].Area[a]))==0)
|
||||
if (strmatch(Provider[prefix].Zone[z].Area[a], number))
|
||||
return z;
|
||||
}
|
||||
}
|
||||
|
@ -647,11 +796,11 @@ int getZone (int prefix, char *number)
|
|||
int getRate(RATE *Rate, char **msg)
|
||||
{
|
||||
static char message[LENGTH];
|
||||
bitfield dayMask, hourMask;
|
||||
bitfield hourBits;
|
||||
ZONE *Zone;
|
||||
HOUR *Hour;
|
||||
UNIT *Unit;
|
||||
int prefix, zone, day, hour, i;
|
||||
int prefix, zone, hour, i;
|
||||
time_t now, run, end;
|
||||
struct tm tm;
|
||||
|
||||
|
@ -662,23 +811,24 @@ int getRate(RATE *Rate, char **msg)
|
|||
return UNKNOWN;
|
||||
|
||||
prefix=Rate->prefix;
|
||||
if (prefix<0 || prefix>nProvider || !Provider[prefix].used) {
|
||||
if (msg) snprintf(*msg=message, LENGTH, "unknown provider %d", prefix);
|
||||
if (prefix<0 || prefix>=nProvider || !Provider[prefix].used) {
|
||||
if (msg) snprintf(message, LENGTH, "unknown provider %d", prefix);
|
||||
return UNKNOWN;
|
||||
}
|
||||
|
||||
zone=Rate->zone;
|
||||
if (zone<1 || zone>=Provider[prefix].nZone || !Provider[prefix].Zone[zone].used) {
|
||||
if (msg) snprintf(*msg=message, LENGTH, "unknown zone %d", zone);
|
||||
if (msg) snprintf(message, LENGTH, "unknown zone %d", zone);
|
||||
return UNKNOWN;
|
||||
}
|
||||
|
||||
Zone=&Provider[prefix].Zone[zone];
|
||||
Rate->Provider=Provider[prefix].Name;
|
||||
Rate->Zone=Zone->Name;
|
||||
Rate->Units=0;
|
||||
Rate->Duration=0;
|
||||
Rate->Basic=0;
|
||||
Rate->Price=0;
|
||||
Rate->Duration=0;
|
||||
Rate->Units=0;
|
||||
Rate->Charge=0;
|
||||
Rate->Rest=0;
|
||||
|
||||
|
@ -693,30 +843,30 @@ int getRate(RATE *Rate, char **msg)
|
|||
tm=*localtime(&now);
|
||||
if (hour!=tm.tm_hour) { /* Neuberechnung bei Stundenwechsel */
|
||||
hour=tm.tm_hour;
|
||||
day=getDay(&tm, &Rate->Day);
|
||||
dayMask=1<<(day-1);
|
||||
hourMask=1<<tm.tm_hour;
|
||||
hourBits=1<<tm.tm_hour;
|
||||
for (i=0; i<Zone->nHour; i++) {
|
||||
Hour = &Zone->Hour[i];
|
||||
if ((Hour->Day & dayMask) && (Hour->Hour & hourMask))
|
||||
if ((Hour->Hour & hourBits) && isDay(&tm, Hour->Day, &Rate->Day))
|
||||
break;
|
||||
}
|
||||
if (i==Zone->nHour) {
|
||||
if (msg) snprintf(*msg=message, LENGTH,
|
||||
if (msg) snprintf(message, LENGTH,
|
||||
"no rate found for provider=%d zone=%d day=%d hour=%d",
|
||||
prefix, zone, day, tm.tm_hour);
|
||||
prefix, zone, tm.tm_wday+1, tm.tm_hour);
|
||||
return UNKNOWN;
|
||||
}
|
||||
Rate->Hour=Hour->Name;
|
||||
Unit=Hour->Unit;
|
||||
}
|
||||
|
||||
Rate->Duration=Unit->Duration;
|
||||
Rate->Price=Unit->Price;
|
||||
Rate->Duration=Unit->Duration;
|
||||
Rate->Charge+=Unit->Price;
|
||||
Rate->Rest+=Unit->Duration;
|
||||
now+=Unit->Duration;
|
||||
run+=Unit->Duration;
|
||||
if (run==0 && Unit->Duration==0)
|
||||
Rate->Basic=Unit->Price;
|
||||
if (Unit->Duration>0)
|
||||
Rate->Units++;
|
||||
if (Unit->Delay!=UNKNOWN && Unit->Delay<=run)
|
||||
|
@ -776,9 +926,35 @@ int guessZone (RATE *Rate, int units)
|
|||
#endif
|
||||
}
|
||||
|
||||
char *explainRate (RATE *Rate)
|
||||
{
|
||||
char p[BUFSIZ], z[BUFSIZ], d[BUFSIZ]="", h[BUFSIZ]="";
|
||||
static char r[BUFSIZ];
|
||||
|
||||
if (Rate->Provider && *Rate->Provider)
|
||||
strncpy (p, Rate->Provider, BUFSIZ);
|
||||
else
|
||||
snprintf (p, BUFSIZ, "010%02d", Rate->prefix);
|
||||
|
||||
if (Rate->Zone && *Rate->Zone)
|
||||
snprintf (z, BUFSIZ, ", %s", Rate->Zone);
|
||||
else
|
||||
snprintf (z, BUFSIZ, ", Zone %d", Rate->zone);
|
||||
|
||||
if (Rate->Day && *Rate->Day)
|
||||
snprintf (d, BUFSIZ, ", %s", Rate->Day);
|
||||
|
||||
if (Rate->Hour && *Rate->Hour)
|
||||
snprintf (h, BUFSIZ, ", %s", Rate->Hour);
|
||||
|
||||
snprintf (r, BUFSIZ, "%s%s%s%s", p, z, d, h);
|
||||
return r;
|
||||
}
|
||||
|
||||
#ifdef STANDALONE
|
||||
void main (int argc, char *argv[])
|
||||
{
|
||||
int z;
|
||||
char *msg;
|
||||
struct tm now;
|
||||
|
||||
|
@ -793,6 +969,12 @@ void main (int argc, char *argv[])
|
|||
Rate.prefix = 1;
|
||||
Rate.zone = 1;
|
||||
|
||||
if (argc>1) {
|
||||
z=getZone(01, argv[1]);
|
||||
printf("number <%s> is Zone <%d>\n", argv[1], z);
|
||||
exit (0);
|
||||
}
|
||||
|
||||
time(&Rate.start);
|
||||
while (1) {
|
||||
time(&Rate.now);
|
||||
|
@ -800,16 +982,16 @@ void main (int argc, char *argv[])
|
|||
printf ("Ooops: %s\n", msg);
|
||||
else {
|
||||
now=*localtime(&Rate.now);
|
||||
printf ("%02d.%02d.%04d %02d:%02d:%02d %-5s %-12s %-12s %-12s %6.2f %7.3f %3d %6.2f %3ld %3ld\n",
|
||||
printf ("%02d.%02d.%04d %02d:%02d:%02d %s %6.2f %7.3f %3d %6.2f %3ld %3ld\n",
|
||||
now.tm_mday, now.tm_mon+1, now.tm_year+1900,
|
||||
now.tm_hour, now.tm_min, now.tm_sec,
|
||||
Rate.Provider, Rate.Zone, Rate.Day, Rate.Hour,
|
||||
explainRate(&Rate),
|
||||
Rate.Duration, Rate.Price, Rate.Units, Rate.Charge, Rate.Time, Rate.Rest);
|
||||
|
||||
LCR=Rate;
|
||||
if (getLeastCost(&LCR,-1)!=UNKNOWN) {
|
||||
printf ("least cost would be: %-5s %-12s %-12s %-12s %6.2f %7.3f %3d %6.2f %3ld %3ld\n",
|
||||
LCR.Provider, LCR.Zone, LCR.Day, LCR.Hour,
|
||||
printf ("least cost would be: %s %6.2f %7.3f %3d %6.2f %3ld %3ld\n",
|
||||
explainRate(&LCR),
|
||||
LCR.Duration, LCR.Price, LCR.Units, LCR.Charge, LCR.Time, LCR.Rest);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,30 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.4 1999/04/10 16:36:42 akool
|
||||
* isdnlog Version 3.13
|
||||
*
|
||||
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
|
||||
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
|
||||
*
|
||||
* You have to do the following to test this version:
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
|
||||
*
|
||||
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
|
||||
* "/etc/isdn/callerid.conf" file:
|
||||
*
|
||||
* [ISDNLOG]
|
||||
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
|
||||
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
|
||||
* RATEFILE = /usr/lib/isdn/rate-de.dat
|
||||
* RATECONF = /etc/isdn/rate.conf
|
||||
*
|
||||
* Please replace any "de" with your country code ("at", "ch", "nl")
|
||||
*
|
||||
* Good luck (Andreas Kool and Michael Reinelt)
|
||||
*
|
||||
* Revision 1.3 1999/03/24 19:39:03 akool
|
||||
* - isdnlog Version 3.10
|
||||
* - moved "sondernnummern.c" from isdnlog/ to tools/
|
||||
|
@ -59,8 +83,9 @@ typedef struct {
|
|||
char *Zone; /* Name der Zone */
|
||||
char *Day; /* Wochen- oder Feiertag */
|
||||
char *Hour; /* Bezeichnung des Tarifs */
|
||||
double Duration; /* Länge eines Tarifimpulses */
|
||||
double Basic; /* Grundpreis einer Verbindung */
|
||||
double Price; /* Preis eines Tarifimpulses */
|
||||
double Duration; /* Länge eines Tarifimpulses */
|
||||
int Units; /* verbrauchte Tarifimpulse */
|
||||
double Charge; /* gesamte Verbindungskosten */
|
||||
time_t Time; /* gesamte Verbindungszeit */
|
||||
|
@ -74,5 +99,6 @@ int getZone(int prefix, char *num);
|
|||
int getRate(RATE *Rate, char **msg);
|
||||
int getLeastCost(RATE *Rate, int skip);
|
||||
int guessZone (RATE *Rate, int units);
|
||||
char *explainRate (RATE *Rate);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -19,6 +19,30 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.23 1999/04/10 16:36:46 akool
|
||||
* isdnlog Version 3.13
|
||||
*
|
||||
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
|
||||
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
|
||||
*
|
||||
* You have to do the following to test this version:
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
|
||||
*
|
||||
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
|
||||
* "/etc/isdn/callerid.conf" file:
|
||||
*
|
||||
* [ISDNLOG]
|
||||
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
|
||||
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
|
||||
* RATEFILE = /usr/lib/isdn/rate-de.dat
|
||||
* RATECONF = /etc/isdn/rate.conf
|
||||
*
|
||||
* Please replace any "de" with your country code ("at", "ch", "nl")
|
||||
*
|
||||
* Good luck (Andreas Kool and Michael Reinelt)
|
||||
*
|
||||
* Revision 1.22 1999/04/03 12:47:45 akool
|
||||
* - isdnlog Version 3.12
|
||||
* - "%B" tag in ILABEL/OLABEL corrected
|
||||
|
@ -585,7 +609,7 @@ char *vnum(int chan, int who)
|
|||
flag |= C_NO_ERROR;
|
||||
#endif
|
||||
|
||||
if ((call[chan].sondernummer[who] != UNKNOWN) || call[chan].intern[who] || call[chan].internetnumber[who]) {
|
||||
if ((call[chan].sondernummer[who] != UNKNOWN) || call[chan].intern[who]) {
|
||||
strcpy(call[chan].rufnummer[who], call[chan].num[who]);
|
||||
|
||||
if (cnf > -1)
|
||||
|
@ -596,19 +620,52 @@ char *vnum(int chan, int who)
|
|||
else
|
||||
strcpy(retstr[retnum], sondernummername(call[chan].sondernummer[who]));
|
||||
}
|
||||
else if (call[chan].internetnumber[who])
|
||||
sprintf(retstr[retnum], "INTERNET %s", call[chan].num[who]);
|
||||
else
|
||||
sprintf(retstr[retnum], "TN %s", call[chan].num[who]);
|
||||
|
||||
return(retstr[retnum]);
|
||||
}
|
||||
else {
|
||||
if ((ptr = get_areacode(call[chan].num[who], &ll, flag)) != 0) {
|
||||
strcpy(call[chan].area[who], ptr);
|
||||
l = ll;
|
||||
got++;
|
||||
} /* if */
|
||||
if (!memcmp(call[chan].num[who], countryprefix, strlen(countryprefix))) { /* Ausland */
|
||||
auto FILE *f = fopen("/usr/lib/isdn/ausland.dat", "r");
|
||||
register char *p, *p1;
|
||||
auto char s[BUFSIZ];
|
||||
|
||||
|
||||
if (f != (FILE *)NULL) {
|
||||
while (fgets(s, BUFSIZ, f)) {
|
||||
if ((p = strchr(s, ':'))) {
|
||||
*p = 0;
|
||||
|
||||
if (!memcmp(call[chan].num[who], s, strlen(s))) {
|
||||
if ((p1 = strchr(p + 1, '\n')))
|
||||
*p1 = 0;
|
||||
|
||||
strcpy(call[chan].areacode[who], s);
|
||||
strcpy(call[chan].rufnummer[who], call[chan].num[who] + strlen(s));
|
||||
*call[chan].vorwahl[who] = 0;
|
||||
strcpy(call[chan].area[who], p + 1);
|
||||
|
||||
sprintf(retstr[retnum], "%s %s, %s",
|
||||
call[chan].areacode[who],
|
||||
call[chan].rufnummer[who],
|
||||
call[chan].area[who]);
|
||||
|
||||
fclose(f);
|
||||
return(retstr[retnum]);
|
||||
} /* if */
|
||||
} /* if */
|
||||
} /* while */
|
||||
|
||||
fclose(f);
|
||||
} /* if */
|
||||
} /* if */
|
||||
|
||||
if ((ptr = get_areacode(call[chan].num[who], &ll, flag)) != 0) {
|
||||
strcpy(call[chan].area[who], ptr);
|
||||
l = ll;
|
||||
got++;
|
||||
} /* if */
|
||||
} /* else */
|
||||
|
||||
if (l > 1) {
|
||||
|
|
|
@ -20,6 +20,30 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.35 1999/04/10 16:36:48 akool
|
||||
* isdnlog Version 3.13
|
||||
*
|
||||
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
|
||||
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
|
||||
*
|
||||
* You have to do the following to test this version:
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
|
||||
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
|
||||
*
|
||||
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
|
||||
* "/etc/isdn/callerid.conf" file:
|
||||
*
|
||||
* [ISDNLOG]
|
||||
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
|
||||
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
|
||||
* RATEFILE = /usr/lib/isdn/rate-de.dat
|
||||
* RATECONF = /etc/isdn/rate.conf
|
||||
*
|
||||
* Please replace any "de" with your country code ("at", "ch", "nl")
|
||||
*
|
||||
* Good luck (Andreas Kool and Michael Reinelt)
|
||||
*
|
||||
* Revision 1.34 1999/04/03 12:47:50 akool
|
||||
* - isdnlog Version 3.12
|
||||
* - "%B" tag in ILABEL/OLABEL corrected
|
||||
|
@ -439,24 +463,24 @@
|
|||
|
||||
#define SONDERNUMMER -2 /* FIXME: set by readconfig(), but unused by now */
|
||||
#define INTERN 0
|
||||
#define CITYCALL 1
|
||||
#define REGIOCALL 2
|
||||
#define GERMANCALL 3
|
||||
#define C_NETZ 4
|
||||
#define FREECALL 0
|
||||
#define LOCALCALL 1
|
||||
#define CITYCALL 2
|
||||
#define REGIOCALL 3
|
||||
#define GERMANCALL 4
|
||||
#define C_MOBILBOX 5
|
||||
#define D1_NETZ 6
|
||||
#define D2_NETZ 7
|
||||
#define E_PLUS_NETZ 8
|
||||
#define E2_NETZ 9
|
||||
#define EURO_CITY 10
|
||||
#define EURO_1 11
|
||||
#define EURO_2 12
|
||||
#define WELT_1 13
|
||||
#define WELT_2 14
|
||||
#define WELT_3 15
|
||||
#define WELT_4 16
|
||||
#define INTERNET 17
|
||||
#define GLOBALCALL 18
|
||||
#define C_NETZ 6
|
||||
#define D1_NETZ 7
|
||||
#define D2_NETZ 8
|
||||
#define E_PLUS_NETZ 9
|
||||
#define E2_NETZ 10
|
||||
#define EURO_CITY 11
|
||||
#define EURO_1 12
|
||||
#define EURO_2 13
|
||||
#define WELT_1 14
|
||||
#define WELT_2 15
|
||||
#define WELT_3 16
|
||||
#define WELT_4 17
|
||||
|
||||
/* Fixme: this is specific to Germany */
|
||||
#define DTAG 33
|
||||
|
@ -719,7 +743,7 @@ typedef struct {
|
|||
char vnum[MAXMSNS][256];
|
||||
int provider;
|
||||
int sondernummer[MAXMSNS];
|
||||
int internetnumber[MAXMSNS];
|
||||
int local[MAXMSNS];
|
||||
int intern[MAXMSNS];
|
||||
char id[32];
|
||||
char usage[16];
|
||||
|
|
Loading…
Reference in New Issue