isdn4k-utils/isdnlog/tools/rate-files.man

476 lines
11 KiB
Groff
Raw Blame History

'\" t
'\" ** above should format a table **
.TH rate-files 5 "February 2005" -lt-
.SH NAME
rate-files \- Format of rate-files
.SH DESCRIPTION
The rate-files used by isdnlog(8) and by isdnrate(1) are textfiles
defining the telephone fees for different destinations at certain dates/times
for all providers of one country.
.br
The rate-files have the following overall layout:
.P
.I Header entries
.P
.I Provider entries
.P
Comments starting with a hash-sign '#'
and empty lines are ignored. The first letter (tag) followed by a colon
separates the entries. Additional white space may be used after the tags
to group content more readably.
.SS Special entries
.P
.B I:includefile
.P
.B i:includefile
.br
.IP
.I includefile
get's substituted at the current position. There are two possibilities. In
the rate source file (which is prepared by
.IR pp_rate )
a small
.I 'i'
puts the contents of the include file in the outputfile.
An
.IR 'I' -Tag
means, for the preprocessor, write a new output file (the includefile) and
leave the tag in the rate-files. This is for real include files.
.br
Includes may be nested twice. The filename should not contain any paths
(except for 'i' of course), they are taken relative to their parent file.
.IP
.SS Header entries
.P
.B V:versionsstring
.IP
e.g.
V:1.0-Germany [18-Mar-1999]
.P
.B S:Servicename
.P
.B N:Servicenumber[,Servicenumber...]
.IP
This defines telephone services with special numbers. Special numbers are numbers which
a) start with no '0' or b) can not be dialed with every provider. A number
with a variable length should have the wildcard '*' at the end, eg.
.I 07189*
which matches all numbers starting with
.IR 07189 .
Numbers with wildcards should be placed after numbers which would match the
wildcard, because matching is done straight top down.
There may be multiple
.B N:
tags for one telephone service.
.IP
e.g.
.br
S:Internet
.br
N:07189*,19430
.br
N:19440
.P
.B U:currencyfmt currency
.IP
If the first char of
.I currencyfmt
is ^, the amount is multiplied by 100 before it is displayed
without leading ^.
.IP
e.g. (one of these, <20> = cent)
.br
U:%.3f EUR
.br
U:^%.3f <20>
.P
.B X:num_wildcard = provider[zZone] [,...]
.IP
Define exception. If a certain number is always routed to a certain provider
and not to the preselected provider, you should use this tag.
.br
e.g. in Austria, online service numbers 194x or 07189 go always via Telekom,
ignoring your preselection:
.br
X: 194*=1,07189*=1
.br
or
.br
X: 194*=1z6 # Provider 1 Zone 6
.SS Provider entries
A new provider starts always with a
.B P:
tag and consists of a
.I Providerheader
followed by
.I Providerzones.
.SS Providerheader
.P
.BR P: [ daterange ] " providernumber providername"
.IP
.I daterange
is
.BR [ [ fromDate ] "" [ -toDate ] ]
.br
This defines a time range for the validity of rates for this provider. Dates have to
be numeric in format
.BR dd.mm.yyyy .
Note: as time is assumed as 00:00, take for
.I toDate
the day+1. The daterange has to be enclosed in square brackets. Either
.I fromDate
or
.I -toDate
or both may be given.
.br
The
.I providernumber
may be a simple number, normally the last digits of the VBN-number, or
.B providernumber,variant
if a provider has different connection fees.
.br
e.g.
.br
P:02 UTA
.br
or
.br
P:[01.01.1999] 1,1 Telekom Minimumfee
.P
.B B:vbn
.P
VBN-Number for provider
.IP
e.g.
B:1002
.br
This is the number to select this provider and depends on your country.
.P
.B C:COMMENT: comment
.P
.B COMMENT
may be an arbitrary string, but the following entries are used already:
.IP
.TS
tab (@);
l l.
\fBC:Name:\fP@Providername
\fBC:Maintainer:\fP@Who did the hard work
\fBC:TarifChanged:\fP@and when
\fBC:Address:\fP@Provideraddress
\fBC:Homepage:\fP@http:URL for provider
\fBC:TarifURL:\fP@URL for tarif info
\fBC:EMail:\fP@EMail-Address
\fBC:Telefon:\fP@Telefon number
\fBC:Telefax:\fP@Fax number
\fBC:Hotline:\fP@Telefon number
\fBC:Zone:\fP@Textual info about zones
\fBC:Special:\fP@Guess
\fBC:GT:\fP@Additional charge text
\fBC:GF:\fP@Additional charge formula
.TE
.P
If there are multiple comments with the same comment name, they get appended
separated by a newline char.
.P
.B D:zone
.P
Name of zone file (inserted for
.B %s
.RI "in ZONEFILE = /usr/lib/isdn/zone-" CC "-%s.dat from isdn.conf)"
.IP
e.g.
D:1001 # zone file is zone-at-1001.gdbm
.P
Note: if the provider has no different domestic zones, you should not define a D:tag.
.SS Providerzones
A Providerzone entry starts with a
.B Z:
tag followed by one or more
.B A:
and
.B T:
tags.
.P
A zone is a region of areas, for which the same rates apply. Domestic and
foreign zones should not be mixed and all foreign zones should follow
domestic zones.
.P
.B R:prov, sub ; zonelist
.P
Read zones from provider
.I prov
subprovider number
.IR sub .
A
.I zonelist
is defined below.
If the referenced provider doesn't have a subprovider number, the
.I sub
must be -1. The referenced provider
may be defined before or after the R:-tag. The referenced zones must be real
Z:-entries, not references themself. The zone numbers and names are taken from
the referenced provider. The last
.I to_zone
may be missing then all zones from the start zone are used.
.br
e.g.
.br
R:1,1 ; 1-4,6, 10-
.P
There some limitations:
.br
The reference cannot be more exact than the referenced providerzones.
R:42,0;1 will not work as desired if P:42,0 defines Z:1-4.
.br
It is not possible to reference a providerzone without areas when the
default domestic zone (with your countrycode as area) is not included
in the same range of referenced zones. This applies mainly to zones for
different distances in the national fixed network, e.g. Z:1-3 in Germany.
.P
.B r:prov, sub ; start_zone-
.P
This tag is related to the R:-tag. It is interpreted by the rate-preprocessor
.IR pp_rate .
All providerzones with a zone number greater or equal
.I start_zone
are copied from provider
.I prov[,sub]
and replace the r:-tag.
If an
.I area
is already used in a previous providerzone of the current provider,
it will not be copied.
If all areas of a providerzone are already defined, the entire zone
will not be copied.
Lines that contain only comments are also not copied, but comments
at the end of other lines are.
.P
This tag is designed for providers with a rate variant that offers
different fees for some foreign destinations.
.P
.B Z:zonelist zonename
.P
where
.I zonelist
is
.BR zone [ -to_zone ][ ,... ]
.IP
e.g.
Z:1-2,4 Interior
.br
.P
.BR A:area [ ,area... ]
.P
.I area
may be a telephone number (including +countrycode for numbers which may
be reached from everywhere, a telephone number without +countrycode for numbers only reachable
in the own country) or an area name or alias as defined in country.dat.
Country names have to be translated to their code by the rate-preprocessor
.IR pp_rate .
.IP
e.g.
A:19430,07189 # Online
.IP
e.g.
A:+31,Belgium # Int 1
.P
Note: There should always be exactly one zone with your countrycode
or countryname respectively:
.IP
Z:4
.br
A:+49
.br
T:...
.P
Countrynames like
.I Belgium
in the above example are replaced by their ISO-Code (or TLD) with the
rate preprocessor
.IR pp_rate .
.P
.BR T: [ daterange ] daylist/timelist [ ! ] "=chargelist chargename"
.P
where
.I daterange
is
.BR [ [ fromDate ] "" [ -toDate ] ]
like the corresonding provider entry.
Note that the
.I daterange
is enclosed in sqare brackets, either
.I fromDate
or
.I -toDate
are optional.
.P
.I daylist
is
.BR day [ -day ][ ,... ]
and day is a daynumber (1=Mon, 2=Tue, ...) or
W (workday, Monday to Friday), E (weekend), H (holiday) or
* (everyday).
If more than one of these days match a given date, the following order of
priority (highest first) applies: H 7 .. 1 E W *.
.P
.I timelist
is
.BR hour [ -hour ][ ,hour ]
where hour is a number 0..23 or * for everytime.
.P
After
.I daylist/timelist
follows
.B =
or
.B !=
which means, provider doesn't adjust rates on a rate boundary e.g. at 18h00.
.P
A
.I chargelist
consists of
.P
.RB [ MinCharge| ] Charge [ (Divider) ] /Duration [ :Delay ][ /Duration... ]
.P
where
.I MinCharge|
is an (optional) minimum charge,
.I Charge
the rate per
.I Duration
seconds or optional rate per
.I (Divider)
seconds,
.I Duration
is the length of one charge unit in seconds. After
.I Delay
the next duration is taken. If delay is not given it equals to the duration.
The last duration may not have a delay and may not be zero.
.IP
EXAMPLES
.br
T:1-4/8-18=1.5(60)/60/1 workday
.IP
Monday until Thursday, daytime the charge is 1.50 per minute, first charge is for one minute
after this charging is calculated in seconds interval.
.IP
T:W/18-8=0.30|1.2(60)/1 night
.IP
On workdays, night, charge is the bigger of 1.20 per minute or 0.30
.IP
T:*/*=0.50/0,1(60)/1 always
.IP
Everyday, everytime there is a connection fee of 0.50, then charge is 1 per minute.
.IP
T:H/*=0.5/60:600,0.5/30 holidays
.IP
On holidays, everytime a charge of 0.5 per minute in a minutes interval, after
10 minutes 0.5 per half minute in half a minutes interval.
.IP
T:*/*=1.3/0,0/1
.IP
Everyday, everytime the charge is 1.30 independent of duration, which could also
be written as T:*/*=1.3|0/1.
.IP
T: [-01.02.2000] */17-19=0.79(60)/60/1 Happy Hour
.br
T: [-01.02.2000] */19-17=0.90(60)/60/1 Normal
.IP
Until the first of Feb 0:00h (i.e. end is 31.1.2000 24:00), everyday between
17 and 19h a charge of 0.79 per minute, the first minute is always charged fully,
after this, charging is calculated in seconds interval.
.br
The second entry defines a charge of 0.90 in the time outside the happy hour.
.IP
T:[15.11.1999-01.02.2000]*/17-19=0.79(60)/60/1 HH
.IP
Like above, but a full date range is given.
.P
The next two t:-tags are interpreted by
.I pp_rate
and replaced by one or more T:-lines.
Both methods can be used together.
.P
.B t:[daterange]?[H]=chargelist chargename
.P
This line is replaced by according T:-lines for not yet defined
.I day/hour
pairs.
.P
If a
.I daterange
is given, only previous T:-lines without a daterange or with the same daterange
will be considered as earlier definitions.
If
.I H
is noted, definitions will also be added for holidays.
.IP
EXAMPLE
.br
T:W/08-18=0.10/60 normal time
.br
t:?H=0.04/60 save time
.IP
This lines will lead to the following lines after
.IR pp_rate :
.IP
T:W/08-18=0.10/60 normal time
.br
T:W/18-08=0.04/60 save time
.br
T:E,H/*=0.04 save time
.P
.B t:daterange=srcrange [chargename]
.P
Generates T:-lines for
.I daterange
by copying previous T:-lines with
.I srcrange
in the same zone.
If a
.I chargename
is given, it will replace the chargename of the originating line.
.I srcrange
can be shortened as long as it remains definite.
.IP
EXAMPLE
.br
T:[-24.12.2003]W/*=0.08/60 on workdays
.br
T:[-24.12.2003]E,H/*=0.06 weekend
.br
T:[24.12.2003-25.12.2003]*/*=0.04 Christmas Eve
.br
t:[25.12.2003-31.12.2003]=[-24.12.2003]
.br
t:[31.12.2003-01.01.2004]=[24.12.] New Year's Eve
.br
t:[01.01.2004]=[-24.12.]
.IP
This will be transformed into:
.IP
T:[-24.12.2003]W/*=0.08/60 on workdays
.br
T:[-24.12.2003]E,H/*=0.06/60 weekend
.br
T:[24.12.2003-25.12.2003]*/*=0.04/60 Christmas Eve
.br
T:[25.12.2003-31.12.2003]W/*=0.08/60 on workdays
.br
T:[25.12.2003-31.12.2003]E,H/*=0.06/60 weekend
.br
T:[31.12.2003-01.01.2004]=0.04/60 New Years' Eve
.br
T:[01.01.2004]W/*=0.08/60 on workdays
.br
T:[01.01.2004]E,H/*=0.06/60 weekend
.SH SEE ALSO
.IR isdnlog(8) ,
.IR isdnrate(1) ,
.IR rate.conf(5) ,
isdnlog/README, rate-at.dat
.SH AUTHOR
Leopold Toetsch <lt@toetsch.at> (of this man page of course).
Tobias Becker <tobiasb@isdn4linux.de> added the tags r: and t:.