man printbillrc (Formats) - fair printing billing and accounting system config file

NAME

printbillrc - fair printing billing and accounting system config file

SYNOPSIS

printbill

DESCRIPTION

/etc/printbill/printbillrc

contains all definitions for printbilld(1), printbill(1), printbill_printer(1) as well as the other configuration and support utilities and CGI scripts. It could also just contain a URL where the real configuration file can be downloaded.

For the local-configuration version the format is very simple. A parameter is followed by a colon and a value. Whitespace is permitted on either side of the colon.

For the URL version it is even easier - the file only contains the URL of the config file (e.g. http://some.host.in.my.network/pub/printbillrc). It may be either FTP or HTTP. If you are going to use this option you will need to install wget as well.

Printers may be defined individually by creating "printer exception files" called /etc/printbill/printer/<printername>, or may use defaults specified in the printbillrc file. This eases deployment in a facility with (e.g.) 100 identical printers. Most people with just one or two printers can probably stick with the defaults in printbillrc.

The currently supported fields are as follows:

colourspace
Default colourspace (set to either mono (black & white), cmyk (Cyan-Magenta-Yellow, the most common colour printer (either inkjet or colour laser). 'colour' is a synonym for cmyk, for backwards compatibility) or cmy (Cyan-Magenta-Yellow, for cheapo 3-colour printers). Also supported is the experimental and not-to-be-trusted-at-all 'pagecount' option, which should be really fast but which totally ignores toner usage.
price_per_percent_black
The default price in dollars (or euros or roubles or whatever) per percentage coverage of black toner/ink.
price_per_percent_colour
The default price in dollars (or euros or roubles or whatever) per percentage coverage of colour toner/ink.
price_per_page
Default price per page (charged in addition to toner/ink charges).
estimated_total_percent_black
Estimated total amount of coverage, in percent - a typical laser printer can do 5000 pages at 5% coverage, which equates to 25000 percent coverage total.
estimated_total_percent_colour
As per estimated_total_percent_black, only for colour toner/ink.
response_method
Default user response method. Currently supported methods include mail to the user and a Winpopup message via smbclient to the user's Windows machine. Multiple response methods may be specified (comma or space separated). If you use the smbclient option, you MUST put the following line in your smb.conf file (of course change the path if necessary):

print command = /usr/bin/lpr -P%p %s @@@%m

printbill will then be able to find the correct machine to send the winpopup message to.

db_home
The location for printbill's databases. If it starts with http:// or ftp:// printbill uses wget to suck the databases down from the specified location. Of course, this only works with read-only operations :-)
tmpfs
Temporary filesystem for storing intermediate data files. For best performance, this should be on the same filesystem as your print queue. /var/tmp is a good idea. Note that some tmpfile operations are still performed on /tmp, since /tmp should always exist and always be world-writable. Only performance-critical stuff happens in /var/tmp so it doesn't need to be too huge.
dpi
Dots-per-inch for use with bill calculation. More dpi is more accurate but slower and more resource-hungry. Too low tends to overestimate the amount of toner used since the png driver of ghostscript doesn't do antialiasing. Useful values are between 100 and 750 (I'd not recommend more than 300).
prog_path
Where non-admin printbill programs (i.e. printquote(1)) are located - e.g. /usr/bin or /usr/local/bin.
admin_prog_path
Where admin-related printbill programs are located - e.g. /usr/sbin or /usr/local/sbin.
gs
Path to your ghostscript binary.
lpr
Path to your print spooler program.
smbclient
Path to smbclient (optional - you only need to set this if your response_method includes "smbclient"). See the response_method section for details as to how this works...
filter
The print filter to be used. Magicfilter has several anything-to-PostScript filters which are suitable. It is suggested that you put this here rather than in printcap(5) because that way printquote can use it too.
mta
Mail transport agent (e.g. /usr/bin/sendmail).
gnuplot
Path to gnuplot (optional - you only need to set this if you wish to use printbill_grapher(1).
admin_mail
Where to call for assistance should the need arise. Also, where annoying status/error messages get sent.
retry_interval
If the lockfile is present, we wait this number of seconds between checking to see if it is still there. This implements a kind of persistent file locking (not based on flock()). Further, after the job finishes we wait this amount of time after releasing the lock before returning (to ensure fair access to the databases for different queues).
lpd_user
Equivalent of printbilld_user - deprecated & will disappear in version 5.x. - use printbilld_user instead, which is more logical.
printbilld_user
Username under which the printbilld process runs. On Debian and FreeBSD this probably should be "daemon".
printbilld_group
Group under which the printbilld process runs. Add a 'printbill' group if you want to use the web interface - add both printbilld_user and web_user to it.
web_user
Username under which the web server process runs. On Debian this is "www-data", "www" on FreeBSD.
printcap
Location of your printcap file (since lprng can be compiled with printcap in places other than /etc).
currency_symbol
Whatever your locale uses for dollars, pounds, francs, marks etc. Printed immediately before the unit, e.g. $4.00, RMB25, Y10.34. This is just used for display purposes (and in the web interface).
verbosity
Either HIGH or LOW, depending on how much logging you want.
stats_path
The path for statistics. Normally this would be db_home/stats, but you may choose to put it elsewhere if you wish. This parameter is optional, do not define it if you do not require statistics collection. The output files are named printbill_stats_$printer.dat. The format of this file is that each line corresponds to a file that someone attempted to print (individual files, not total batch jobs), and the columns list user and system times, child process user and system times, file size, page count, and percentage coverage in cyan, magenta, yellow and black. If the printer is monochrome, the CMY parameters will be zero.
save_bad_path
Jobs which, for some reason, cannot be billed are saved in this directory if this optional parameter is defined. You are then free to try to figure out what went wrong. Files are saved as FAILED_printer_user-N, N being the number of the file in the job (i.e., user prints 5 jobs, 3rd one failes, N = 3). This option is really only required for debugging.
financelog
Optional logfile which records all transactions conducted via pqm (thus including the web interface). Each of this log is simply localtime, followed by a tab, a numerical Unix timestamp (as returned by time(3)), a tab and a positive or negative amount (from pqm --inc and --dec). This should be both human-readable and easily parsed in software for sorting etc.
bill_max_processes
Maximum number of concurrent processes that printbill can spawn. 2-5 is recommended on a single-processor machine. 1 will process jobs purely sequentially, so you want more than 1 if you want to do out-of-order printing/billing to avoid the head-of-line problem.
bill_nicethreshold
Files larger than this are niced at large_bill_niceness, otherwise small_bill_niceness.
small_bill_niceness
Niceness level for jobs smaller than bill_nicethreshold. 5 is a reasonable value - make it zero for a dedicated machine.
large_bill_niceness
Niceness level for jobs larger than bill_nicethreshold. 10 is a reasonable value.
quote_generation_niceness
Niceness level used by printbill_quote. Make it bigger than either small_bill_niceness or large_bill_niceness - printing should take precedence over non-interactive quotation generation.
cookieroot
Location for web cookies.
admin_cgi
Name of the CGI script for administration.
check_cgi
Name of the CGI script for users to check their quota levels.
web_header
Contents are printed out at the top of the page (a bit like SSI #include directive).
web_footer
Contents are printed out at the bottom of the page (a bit like SSI #include directive).
web_message_text
Contains brief "Welcome to Franklin Corporation Print Management System" type message.
extra_quota_message
Contains brief "See this person for more quota" type message.
admin_form_type
SHORT or LONG - SHORT is suggested for sites with large numbers of users. LONG is fine if you only have a page or two to scroll through. LONG is still accessable from SHORT.
png_url
Web document-root relative URL where stats-related PNG files should go. Must be writable by web_user, and correspond to the same location as graph_png_output_dir (which should be an absolute filesystem path). This parameter is optional - you only need to use it if you are collating stats and wish to display them via the web interface.
graph_png_output_dir
Absoulte filesystem path pointing to output directory for stats-related PNG files. It must be writable by web_user. This parameter is optional - you only need to use it if you are collating stats and wish to display them via the web interface.

PRINTER DEFINITIONS

You may define a printers as per the following example (which would go in a file called /etc/printbill/printers/inkjet)

# Example definition for a colour inkjet printer called "inkjet".

colourspace: cmyk price_per_percent_black: 0.02 price_per_percent_colour: 0.04 price_per_page: 0.05 estimated_total_percent_black: 3000 estimated_total_percent_colour: 1750 response_method: mail, smbclient

Default colourspace (set to either mono (black & white), cmyk (Cyan-Magenta-Yellow-Black, the most common colour printer (either inkjet or colour laser - 'colour' is a synonym for cmyk, for backwards compatibility), cmy (Cyan-Magenta-Yellow, for cheapo 3-colour printers) or "pagecount" for a dumb easily-fooled page counter. The prices are as before, in [local currency units] per percent coverage or per page. The estimated total percent black may be calculated easily - the manufacturer will say 5000 pages at an average 5% coverage, this gives 25000 percent total coverage. For mono printers the colour entries can of course be deleted.

SEE ALSO