root / pykota / trunk / NEWS @ 3142

Revision 3142, 84.6 kB (checked in by jerome, 17 years ago)

Make start= and end= filters also work with payments. For an unknown
reason it didn't already work (not implemented !)...
Ensures that these filters are only allowed for payments and
history, otherwise an SQL syntax error could have occured.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1# $Id$
2
3PyKota - Print Quotas for CUPS and LPRng
4
5(c) 2003, 2004, 2005, 2006, 2007 Jerome Alet <alet@librelogiciel.com>
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2 of the License, or
9(at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with this program; if not, write to the Free Software
18Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
20============================================================
21
22PyKota NEWS :
23       
24    - 1.26alpha3 (2007-01-31) :
25   
26        - Ensures start= and end= filters are only allowed for history and
27          payments. Made start= or end= filters also work with payments.
28         
29        - Doesn't print banners anymore when the user cancelled the print job.
30       
31    - 1.26alpha2 (2007-01-18) :
32   
33        - Fixed a problem with pksetup when several instances of PostgreSQL
34          were installed.
35         
36        - Fixed a failure in edpykota to cleanly delete non existing entries.
37       
38        - Fixed email headers.
39       
40        - Changed copyright years.
41       
42    - 1.26alpha1 (2007-01-17) :
43   
44        - Stefan Wold contributed a patch to make autopykota able to retrieve
45          the email address to use for a particular user when creating it.
46         
47        - Added support for pkpgcounter v2.13's GC pseudo colorspace if you
48          only want to differentiate grayscale pages from colored pages.
49         
50        - Fixed a compatibility problem dumpykota's "--format cups" command line
51          option.
52         
53    - 1.25 (2006-12-03) :
54       
55        - Fixed a minor problem in pkprinters with the --cups command line option.
56       
57        - Improved readablity when pkrefund asks for confirmation.
58       
59        - Finished the french translation.
60       
61    - 1.25beta (2006-11-30) :
62   
63        - Fixed a bug wrt ink accounting, thanks to Netzwerkler.
64   
65        - Updated all message catalogs and manual pages.
66       
67    - 1.25alpha18 (2006-11-30) :
68   
69        - Make the data dumper accept jobid= as an additional filter, just
70          like pkrefund and pkinvoice.
71       
72        - Make pkinvoice internally work like pkrefund.
73       
74        - Fixed a severe bug in the LDAP backend wrt the overcharging factor.
75       
76    - 1.25alpha17 (2006-11-27) :
77   
78        - pkrefund can now create receipts in the PDF format.
79       
80        - The code was changed to accomodate ReportLab 2.x in pkbanner
81          and pkinvoice. ReportLab v1.x is now only supported with
82          an english or C locale.
83         
84        - pknotify now accepts the --noremote command line option to
85          decide what has to be done when there's no PyKotIcon running
86          or accepting connections from the print server on the client host.
87         
88        - pkprinters now only modifies CUPS' printers.conf when the
89          -C | --cups command line switch is used.
90         
91    - 1.25alpha16 (2006-11-12) :
92     
93        - Several fixes to CGI scripts wrt i18n.
94       
95        - Introduced the pkrefund command line tool to refund jobs.
96       
97        - Several i18n fixes.
98       
99        - Several minor fixes to documentation and translations.
100       
101    - 1.25alpha15 (2006-11-06) :   
102   
103        - pkprinters --add and --delete now automatically reroutes CUPS
104          print queues through PyKota or through CUPS only.
105         
106        - Fixed date and time parsing problems.
107       
108        - Finally simplified the locking code again, and checked that no
109          stalled lock can persist. The lock files remain on disk though,
110          but it is a small price to pay.
111         
112    - 1.25alpha14 (2006-10-13) :
113     
114        - Removed some locking code which would have prevented multi-server
115          configuration to work correctly with a shared lock directory.
116         
117        - First useable release with the computation of ink
118          usage, through the introduction of the 'ink(cspace, resolution)'
119          value for the 'preaccounter' and 'accounter' directives in
120          pykota.conf
121         
122    - 1.25alpha13 (2006-10-04) :
123     
124        - The dumpykota.cgi script now does basic form checking
125          to immediately avoid incompatible dump options and
126          alerts the end user if Javascript is enabled.
127         
128        - The filter keys in dumpykota can now be specified in
129          lower or upper case.
130         
131        - Introduced the 'noprintingmaxdelay' directive to workaround
132          some buggy printers when hardware accounting is used.
133         
134        - Improved the reliability of hardware accounting. 
135         
136    - 1.25alpha12 (2006-09-15) :
137   
138        - Fixes encoding of username and billingcode when they
139          are overwritten by a subprocess.
140         
141    - 1.25alpha11 (2006-09-06) :
142   
143        - Now fails in an helpful manner if python-mysqldb is too old.
144       
145        - Now exports the original username and billing code (i.e.
146          their values before they are eventually overwritten) in
147          two additionnal environment variables.
148         
149    - 1.25alpha10 (2006-09-03) :
150   
151        - Rewrote the locking mechanism to try to fix the problem
152          some people reported.
153         
154        - Permissions on cupspykota are now correctly set after
155          installation.
156         
157        - Added a workaround to incorrect charset through the add
158          of the python-chardet module as a dependency.
159         
160    - 1.25alpha9 (2006-08-10) :
161   
162        - Fixed a problem when an SMTP error occured and the recovery
163          routine failed to handle it correctly.
164         
165    - 1.25alpha8 (2006-07-11) :
166   
167        - Fixed a problem in the MySQL schema.
168       
169    - 1.25alpha7 (2006-06-20) :
170   
171        - Fixed some date formatting problems when retrieving the
172          printing history with MySQL.
173         
174        - Began code cleaning. 
175         
176    - 1.25alpha6 (2006-06-13) :
177   
178        - pkusers now supports the --email command line switch.
179          The old method to set the email address is still supported,
180          but the new one allows the email address to be modified
181          as well.
182         
183    - 1.25alpha6 (2006-06-09) :
184   
185        - Fixed the incorrect overwriting of the original billing
186          code if the overwrite_jobticket directive was used.
187         
188    - 1.25alpha5 (2006-06-03) :
189   
190        - Fixed minor issues with pkipplib's usage.
191       
192        - Fixed MySQL schema to workaround some "features"...
193       
194    - 1.25alpha4 (2006-05-23) :
195   
196        - Introduced the 'askconfirmation' directive to interact with
197          the end user through any script (pknotify is recommended)
198          and see if he really wants to print when knowing the cost
199          of the job.
200         
201        - Now uses pkipplib if present to directly retrieve the job
202          information from the CUPS server over IPP.
203         
204    - 1.25alpha3 (2006-05-11) :
205   
206        - Added a lock to ensure that a single cupspykota backend
207          is processing datas for a particular print queue at any
208          given time.
209         
210        - Now exports more environment variables for the subprocesses.
211         
212    - 1.25alpha2 (2006-05-03) :
213   
214        - Fixed some problems with DateTime objects.
215       
216        - Added support for PySNMP v4.x in addition to 3.4.x.
217       
218    - 1.25alpha1 (2006-04-14) :
219   
220        - Make the MySQL schema work with old releases of MySQL.
221       
222        - Fixed several character encoding problems.
223         
224        - Ensures that the denied banners counter is properly initialized
225          with relationnal databases.
226         
227    - 1.24 (2006-04-08) :
228   
229        - Improved documentation and packaging stuff.
230       
231    - 1.24beta (2006-03-26) :
232   
233        - Finalized the pknotify command.
234       
235        - Updated the messages catalogs for translations.
236       
237    - 1.24alpha18 (2006-03-15) :
238   
239        - Now uses MIME encapsulation for email messages to avoid
240          some problems with 8 bits messages being rejected.
241         
242    - 1.24alpha17 (2006-03-06) :
243   
244        - Fixed a major problem in the PostgreSQL backend.
245       
246        - pknotify can now check a remote user's name and password.
247       
248    - 1.24alpha16 (2006-03-02) :
249   
250        - Introduced the pknotify command line tool to dialog
251          with remote PyKotIcon applications.
252         
253    - 1.24alpha15 (2006-03-02) :
254       
255        - optimized pkbcodes, pkprinters and pkusers using edpykota as
256          the model.
257       
258        - 'edpykota --list' and 'pkusers --list' are now authorized
259          to mere mortal users, but the list is restricted to informations
260          about the current user.
261       
262        - Extended the functionnality of the 'onbackenderror' directive to
263          allow for configurable retries.
264         
265    - 1.24alpha14 :
266   
267        - Finished optimizations in edpykota and fixed some minor
268          problems with LDAP.
269         
270    - 1.24alpha13 :
271   
272        - Introduced the pkusers command line tool to manage users and 
273          users groups. This command doesn't deal with print quota entries,
274          which continue to be managed through the edpykota command line
275          tool.
276         
277        - Major rewrite and incompatible changes to command line options
278          in edpykota. This command now only deals with print quota
279          entries. Printers, users (or users groups) now have to be created
280          first using pkprinters or pkusers.
281         
282    - 1.24alpha12 :
283   
284        - Introduced the 'duplicatesdelay' directive to specify after
285          which duration two duplicate jobs are not considered duplicate
286          jobs anymore.
287         
288        - Introduced the 'balancezero' directive to specify any value 
289          as the balance limit instead of 0.0. This can allow admins to
290          give a few free credits to users, for example.
291         
292    - 1.24alpha11 :
293   
294        - Huge speed improvements when modifying billing codes and
295          printers.
296       
297        - Both pkbcodes and pkprinters now display the percent done
298          for all actions.
299         
300        - The pkinvoice invoice generator command line utility is now
301          included.
302         
303    - 1.24alpha10 :   
304   
305        - Huge speed improvements when deleting users, printers, and
306          billing codes.
307         
308    - 1.24alpha9 :
309   
310        - Preliminary support for MySQL, thanks to Matt Hyclak.
311       
312    - 1.24alpha8 :
313   
314        - The 'preaccounter' configuration directive was introduced to control
315          which parser to use for precomputation of the job's size. When unset,
316          the internal parser is used just like it was previously. See
317          conf/pykota.conf.sample for more details.
318         
319        - Now subprocesses launched through the overwrite_jobticket directive
320          can also output 'CANCEL', to represent the user's own choice to
321          cancel the print job.
322         
323    - 1.24alpha7 :
324     
325        - pkbanner now handles new print limiting modes correctly.
326       
327        - The cupspykota backend wrapper now accepts to be interrupted
328          with a kill -INT. This causes an immediate and clean abort
329          of the current print job.
330         
331        - Matt Hyclak contributed the possibility to store the printing
332          history in a MySQL database. See the contributed/ directory
333          for details.
334         
335        - Added 2006 to the copyright's years.
336       
337    - 1.24alpha6 :
338   
339        - Fixed internal SNMP and PJL handling code for very fast
340          printers : PyKota didn't see them going from 'idle'
341          to 'printing' to 'idle' again.
342         
343        - Now waitprinter.sh accepts SNMP version number and
344          community name as arguments, thanks to Brandon
345          Holbrook.
346         
347        - Now command line errors and Ctrl+C repectively cause
348          PyKota commands to exit with status -2 and -3.
349         
350    - 1.24alpha5 :
351   
352        - All command line tools now accept -A | --arguments filename.args
353          as a way to bypass the shell's maximal command line size :
354          just put each argument on a line by itself in a file, and
355          pass the file's name as the -A | --arguments command line
356          option's argument. For now this won't be documented in
357          commands' helps.
358         
359        - dumpykota can now dump the complete database in XML
360          format.
361         
362    - 1.24alpha4 :
363   
364        - Added support for the SQLite3 backend.
365          See pykota/initscripts/sqlite/README.sqlite
366       
367    - 1.24alpha3 :
368   
369        - Fix for mailandpopup.sh : smbstatus can't be run setuid,
370          so we regain priviledges before running an external
371          mailto directive.
372       
373    - 1.24alpha2 :
374   
375        - Introduce the "onbackenderror" directive in pykota.conf, to
376          control if the user must be charged or not whenever a real
377          CUPS backend fails. The default value is 'nocharge'.
378          Set it to 'charge' if you think your users can cause a CUPS
379          backend to fail.
380         
381        - Now mark original backends related problems as such in the
382          printing history. Modified printquota.cgi and pykota.css
383          to make them be more visible.
384         
385    - 1.24alpha1 :
386   
387        - Fixed a problem which caused backend errors to be ignored.
388       
389        - The sample LDIF file now contains the two necessary user
390          entries to have an LDAP PyKota Admin and an LDAP PyKota
391          ReadOnly user. The sample configuration files were updated
392          to contain the default passwords used in the LDIF file.
393         
394        - dumpykota is now more strict when checking arguments.   
395       
396    - 1.23 :
397   
398        - Many minor bug fixes and code cleaning.
399       
400        - Improved documentation.
401       
402        - Added Polish translation.
403       
404        - Improved French and Swedish translations.
405       
406    - 1.23beta :
407   
408        - Now the mailto directive is honored in all cases where the job is
409          denied or a warning has to be issued, and the correct reason
410          can be sent back to the user.
411         
412        - The PYKOTAREASON environment variable, if defined, contains the 
413          textual reason why the job was denied or a warning has to be
414          issued.
415       
416    - 1.23alpha31 :
417   
418        - Added support for --maxjobsize, --passthrough and --nopassthrough
419          in pkprinters. These modes are now also honored when printing.
420         
421        - Allows the admin to restrict the number of print queues which will
422          be treated by pkturnkey by passing queues' names as additionnal
423          arguments on pkturnkey's command line.
424         
425        - pkturnkey now supersedes pkhint with the help of the -c | --doconf
426          command line option.   
427         
428    - 1.23alpha30 :
429   
430        - Database changes : you MUST use upgrade-to-1.23.sql again if you
431          use PostgreSQL, or copy the new schema and restart your LDAP
432          server if you use LDAP.
433         
434        - The -C | --comment command line switch was added to edpykota to 
435          attach textual information to modifications done to a user's
436          account balance.
437         
438        - The -l | --limitby command line switch to edpykota was modified 
439          to allow 'noquota', 'nochange', and 'noprint'. See the edpykota
440          command's help or manual page for details.
441         
442        - The -i | --ingroups command line switch to repykota allows 
443          PyKota Administrators to only lists members of the specified
444          group or groups (separated with commas).
445         
446        - The -I | --increase command line switch to edpykota allows
447          to increase or decrease page limits.
448         
449        - Added the precomputed job's size and price to the history
450          for controlling purpose.
451       
452    - 1.23alpha29 :
453   
454        - Fixed a small problem with billing codes.
455       
456        - Exports some environment variables earlier, to render the script
457          launched by the overwrite_jobticket directive more powerful.
458         
459        - Now autopykota also creates print quota entries for the user on the
460          printers groups the current printer is a member of.
461         
462    - 1.23alpha28 :
463   
464        - Added users groups management to pkturnkey.
465       
466        - Fixed umask in setup script.
467       
468    - 1.23alpha27 :
469   
470        - Replaced the --dryrun command line option by the --force
471          command line option in pkturnkey, with exactly the opposite
472          effect (for security reasons).
473         
474    - 1.23alpha26 :
475   
476        - Allows parametrized pjl and snmp hardware accounting methods,
477          to be able to respectively set the TCP port and the SNMP
478          community.
479         
480    - 1.23alpha25 :
481   
482        - Added a --dryrun command line switch to pkturnkey.
483       
484        - Improved pkturnkey's general usability.
485       
486        - Added a manpage for pkturnkey.
487       
488    - 1.23alpha24 :
489   
490        - Allows different databases to be used depending on the
491          user's rights. This allows PyKota admins to directly
492          use a master LDAP server for read+write, while letting
493          normal users using the replicas for readonly access.
494          NB : using different storage backends is also possible,
495          but you're on your own there.
496         
497    - 1.23alpha23 :
498   
499        - Fixed a problem with banner accounting.
500   
501        - Introduction of the new 'pkturnkey' command line tool.
502       
503    - 1.23alpha22 :
504   
505        - The cupspykota backend was almost entirely rewritten from scratch.
506          It's now much more readable, maintainable, etc...
507         
508        - LPRng support is OFFICIALLY dropped for now. LPRng users are 
509          advised to download earlier releases or purchase the
510          PyKota v1.22HotFix1 Official release. LPRng support
511          MIGHT be re-added later.
512       
513    - 1.23alpha21 :
514     
515        - Fix for IPP requests which contain more than a single
516          job-originating-host-name attribute.
517         
518    - 1.23alpha20 :
519   
520        - Added the overwrite_jobticket directive. See pykota.conf.sample
521          for how to use it.
522         
523    - 1.23alpha19 :
524   
525        - Fixed an LDAP filtering problem when managing billing codes.
526       
527        - Added the unknown_billingcode directive. See pykota.conf.sample
528          for how to use it.
529       
530    - 1.23alpha18 :
531     
532        - Added the dump_bfd.php contribution.
533       
534        - Several fixes in the internal PJL accounter.
535       
536        - Now autopykota doesn't create unneeded print quota entries anymore.
537       
538        - Increased the timeout in the PJL hardware accounting code to
539          accomodate some printers (HP5000 at least).
540         
541    - 1.23alpha17 :
542   
543        - pkpgcounter is now distributed separately only. This
544          means that people must now download and install pkpgcounter
545          v1.56 or higher prior to being able to run PyKota.
546         
547        - Removed all the autoconf/automake stuff which was outdated 
548          and confusing.
549         
550    - 1.23alpha16 :
551     
552        - Extracted the GPL blurb from all commands' help, and use
553          a static version only once. This saves space big time, and
554          eases future translations.
555         
556    - 1.23alpha15 :
557   
558        - pkbcodes now works with the PostgreSQL backend.
559          NB : PLEASE RUN upgrade-to-1.23.sql AGAIN !!!
560       
561    - 1.23alpha14 :
562   
563        - Logs a warning when the user/group doesn't exist when running
564          edpykota.
565         
566    - 1.23alpha13 :
567   
568        - Minor fix for user groups because of latest database changes.
569       
570    - 1.23alpha12 :
571   
572        - Big database changes, use the migration scripts !
573       
574    - 1.23alpha11 :
575   
576        - Small fix to the PCL3/4/5 parser for some drivers.
577       
578    - 1.23alpha10 :
579   
580        - Fixed a bad exception name in cupspykota when parsing IPP messages.
581       
582        - Improved the IPP messages module : it can now generate IPP messages
583          in addition to parsing them.
584       
585    - 1.23alpha9 :   
586   
587        - The denyduplicates directive now accepts a command line as an
588          argument beside yes/no. The command is launched and must
589          print either ALLOW or DENY to its standard output. Then the
590          job gets allowed or denied by PyKota.
591          This will allow user interaction in the near future.
592         
593        - Introduced the new 'striptitle' directive to remove ugly prefixes
594          from print job's titles whenever a new print job is submitted.
595         
596        - Fixed internal SNMP accounter for printers which only have a life time
597          page counter, and not a volatile page counter.
598         
599    - 1.23alpha8 :
600   
601        - The data dumper can now summarize payments and history with the
602          help of the --sum command line option (or checkbox in the CGI).
603         
604        - The message used when the job's filename, title and options are
605          hidden because of the privacy directive is now translated at
606          retrieval time, instead of at saving time.
607         
608        - Minor fix in the LDAP backend code. 
609         
610    - 1.23alpha7 :
611   
612        - Improvements to the internal PJL and SNMP accounter : now should
613          support more printers and waste less time.
614         
615    - 1.23alpha6 :
616   
617        - The data dumper's start= and end= date filtering options now
618          accept a positive or negative offset to be added to the special
619          keywords 'yesterday', 'today', 'now', 'tomorrow'.
620          e.g. : dumpykota --data history start=yesterday-5 end=today
621         
622    - 1.23alpha5 :
623   
624        - The data dumper's start= and end= date filtering options now accept
625          the special keywords 'yesterday', 'today', 'now' and 'tomorrow'.
626         
627    - 1.23alpha4 :
628   
629        - The data dumper now accept start= and end= to specify the starting
630          and ending dates to dump the history.
631         
632    - 1.23alpha3 :
633   
634        - The destination link for the logo used in CGI scripts is
635          configurable.
636         
637        - Data dumper improved : it's faster and now datas are correctly
638          escaped.
639       
640        - The URL to the logo displayed in the CGI scripts is configurable.
641       
642    - 1.23alpha2 :
643   
644        - Fixed edpykota --prototype with balance.
645       
646        - Major rewrite of the IPP message parsing code to definitely
647          fix the job-originating-hostname IPP attribute problem.
648       
649    - 1.23alpha1 :   
650   
651        - Sets current username to the user CUPS runs as instead of "root"
652          when printing test pages from CUPS' web interface (because
653          the username is empty in this case).
654         
655        - Fix for strange values in job-originating-hostname
656       
657    - 1.22 :
658   
659        - Big improvements to the documentation.
660       
661    - 1.22beta :
662   
663        - Improved stability in pykotme and pykotme.cgi.
664       
665        - Fixed a permission problem in pykotme and pykosd.
666       
667        - Fixed an inconsitency between SQL and LDAP backends'
668          behavior in edpykota.
669         
670        - Improved stability and allowed tracebacks in CGI scripts.
671       
672        - Improved pykotme.cgi
673         
674    - 1.22alpha8 :
675   
676        - Fixed history retrieval for nonexisting printers or users.
677       
678        - Clicking on the billing code in printquota.cgi's job history
679          now shows all jobs matching this billing code.
680         
681        - Fixed the dump in CUPS' page_log format which didn't
682          dump the oldest entry.
683         
684        - The data dumper now accepts billingcode= and hostname= as
685          filters when dumping the job history.
686         
687        - The job billing code if present is now saved into the database,
688          and exported to subprocesses as the PYKOTAJOBBILLING environment
689          variable.
690         
691        - Ctrl+C now makes PyKota commands exit without a traceback.
692       
693        - Fixed an i18n problem with Python 2.1
694       
695    - 1.22alpha7 :
696   
697        - Fixed some problems with the retrieval of the history from LDAP.
698       
699    - 1.22alpha6 :
700   
701        - Early errors now produce meaningful error messages (finally !)
702       
703    - 1.22alpha5 :
704       
705        - SNMP and PJL improvements with regard to PowerSave / StandBy.
706       
707    - 1.22alpha4 :
708   
709        - Fixed charset problem under MacOSX.
710       
711        - Allows pkbanner to accept more info to display on its
712          command line.
713         
714    - 1.22alpha3 :
715   
716        - Fixes some case related problems with some LDAP backends.
717       
718        - Fixes some problem for printers which directly go from
719          "idle" to "warmup" and never to "printing" before
720          returning to "idle".
721         
722        - Some permissions settings may have prevented cupspykota
723          from parsing cupsd.conf, this is now fixed.
724         
725    - 1.22alpha2 :
726   
727        - Introduction of the web enabled print quote generator.
728       
729        - Fixed a potential race condition when several backend
730          wrappers were present in CUPS' backend directory.
731         
732        - Fixed dumpykota's output in CUPS' page_log format to better
733          match CUPS format.
734         
735    - 1.22alpha1 :
736   
737        - Import into Subversion.
738       
739    - 1.21 :
740   
741        - Improved documentation.
742       
743        - Improved dependencies checker.
744       
745        - Updated some translation files.
746       
747    - 1.21beta2 :
748   
749        - Fixed an LPRng specific bug.
750       
751        - Several improvements on stability issues with manually modified
752          LDAP trees.
753         
754        - Documentation improvements. 
755       
756    - 1.21beta :
757   
758        - Prepared translation files for next release.
759       
760    - 1.21alpha27 :
761   
762        - Allows software() (no arguments) to the software accounting
763          directive. This saves a lot of CPU since the job is not
764          parsed again : the precomputed size is used directly in this
765          case.
766         
767        - epykota's --prototype option now works fine with accounts
768          limited by balance.
769         
770    - 1.21alpha26 :
771   
772        - Fixed the handling of the 'maxdenybanners' directive.
773       
774        - Introduced the 'denyduplicates' directive.
775       
776        - Fixed some database related glitches.
777       
778    - 1.21alpha25 :
779   
780        - The job's size is now always precomputed, even when
781          'enforcement' is not set to 'strict'.
782         
783        - Introduction of the new 'trustjobsize' configuration directive
784          to workaround some problematic printers. See the sample
785          configuration file for details.
786         
787    - 1.21alpha24 :
788   
789        - Big database structure changes. An upgrade script
790          is now included for PostgreSQL. LDAP users may just
791          want to copy the new schema in place.
792         
793        - edpykota now recognizes the -o | --overcharge command line
794          option to set an overcharging or undercharging factor
795          on each print job's cost for a particular user.
796         
797        - repykota's output format has changed an is not limited to 
798          80 characters wide anymore. People who used to parse
799          repykota's output in their own tools are strongly advised
800          to parse dumpykota's output instead.
801         
802        - Introduction of the new 'maxdenybanners' configuration directive
803          to allow up to N (the directive's value) deny banners to be
804          printed even if the print account is forbidden to print.
805         
806        - Better detection of the number of copies in the PostScript parser.
807       
808    - 1.21alpha23 :
809   
810        - Traditional Chinese translation added.
811   
812        - Several fixes and performance improvements with the LDAP backend.
813       
814    - 1.21alpha22 :
815   
816        - edpykota's --delete command line option doesn't consider
817          '*' to be the default argument anymore :-)
818         
819    - 1.21alpha21 :
820   
821        - dumpykota.cgi can now be run as a normal user as opposed to
822          a PyKota administrator. No read access to pykotadmin.conf is
823          necessary anymore. This CGI scripts now honors the REMOTE_USER
824          environment variable just like printquota.cgi does, see
825          the file cgi-bin/README for details.
826          The command line tool dumpykota must still be run by a PyKota
827          administrator.
828         
829        - Fix exception's name error due to a change in recent versions
830          of PygreSQL.   
831         
832    - 1.21alpha20 :
833         
834        - Big bug fix wrt the datelimit field which was never reset.
835         
836    - 1.21alpha19 :
837   
838        - Introduction of the new dumpykota.cgi CGI script, which
839          allows third party tools like phpPrintAnalyzer to be
840          interfaced in real time with PyKota. To use it you
841          may have to change your web server's configuration,
842          please see pykota/cgi-bin/README
843         
844    - 1.21alpha18 :
845   
846        - Now dumpykota can dump the job history into CUPS' page_log
847          format (even when the printing system is LPRng). This allows
848          people to use tools like PrintAnalyzer or phpPrintAnalyzer
849          (two completely different beasts) with PyKota.
850         
851    - 1.21alpha17 :
852     
853        - Fixed field type's name in XML dumps.
854       
855        - Now drops priviledges to user 'pykota' when launched as root
856          (directly or as a CUPS backend), if such an user exists.
857         
858        - Fixed PCL3/4/5 parser for some drivers' output.
859       
860    - 1.21alpha16 :
861   
862        - fixed several recently introduced bugs in LDAP backend code,
863          thanks to Matt Hyclak.
864         
865    - 1.21alpha15 :
866     
867        - Normalized field names between LDAP and PostgreSQL backends
868          in dumpykota's output.
869         
870        - dumpykota filtering capabilities are now supported within
871          the LDAP backend too.
872         
873    - 1.21alpha14 :
874   
875        - dumpykota now supports extended filtering possibilities
876          with the PostgreSQL backend (LDAP support will come soon).
877         
878    - 1.21alpha13 :
879   
880        - Added a --debug command line option to pkpgcounter, so
881          that people may see what really happens, and what will
882          be available in the future :-)
883         
884    - 1.21alpha12 :
885   
886        - Fixed a bug with non standard pkbanner command lines.
887       
888        - Now logs as errors the differences between precomputed and
889          computed job sizes. **CUPS only for now**
890         
891    - 1.21alpha11 :
892   
893        - Now user and group print quota entries can be stored directly
894          below the user or group with the LDAP backend, using them
895          as branches. Thanks to Stefan Wold for the patch.
896          See the sample configuration file for details.
897         
898        - TLS is now supported with the LDAP backend. Thanks to Stefan
899          Wold for the patch.
900          See the sample configuration file for details.
901         
902        - edpkota now accepts the -U | --used value command line argument
903          to preset the page counters to an initial value. Thanks to
904          Wilson Roberto Afonso and Matt Hyclak for the patch.
905         
906    - 1.21alpha10 :
907   
908        - Now automatically reconnects up to three times if the LDAP server
909          returned an error, possibly due to a timeout.
910         
911    - 1.21alpha9 :
912   
913        - Now searches the configuration files in 'pykota' system user's
914          home directory. The 'pykota' system user and group have
915          to be created by the system administrator, and given
916          sufficient permissions to PyKota's configuration files.
917         
918    - 1.21alpha8 :
919   
920        - Added the new reject_unknown directive to reject the
921          creation of user or groups which are unknown to the system.
922         
923    - 1.21alpha7 :
924   
925        - Introduction of the pkmail email gateway.
926       
927    - 1.21alpha6 :
928   
929        - Fix for LPRng filenames.
930       
931        - Added Turkish translation thanks to Baris Cicek.
932       
933    - 1.21alpha5 :
934   
935        - Improved ESC/P2 miniparser for Stylus Photo printers.
936       
937        - Implemented the --savetoner command line option to pkbanner.
938       
939        - Improved pkbanner's help and messages.
940       
941    - 1.21alpha4 :
942   
943        - Fixed job's data file detection code for LPRng.
944       
945        - Fixed a problem with PJL and PowerSave mode,
946          thanks to Wilson Roberto Afonso.
947       
948    - 1.21alpha3 :
949   
950        - PyKota can now generate its own banners, and either account
951          for them or not, depending on newly introduced directives
952          in pykota.conf
953          Thanks to Matt Hyclak for the patch.
954         
955    - 1.21alpha2 :
956   
957        - Installation script is now non interactive again, as it should
958          have stayed from the beginning. Dependencies checking can
959          be done by launching the checkdeps.py command.
960         
961    - 1.21alpha1 :
962   
963        - added an IPP messages miniparser. Extraction of the client
964          hostname is now considered to be fiable, at least until
965          the CUPS developpers change something...
966       
967    - 1.20 :
968   
969        - Version number changed.
970       
971    - 1.20beta :
972   
973        - Norwegian (Bokm� preliminary translation added.
974       
975        - German translation was finalized.
976       
977        - Greek translation was finalized.
978       
979        - For urgent legal reasons, a "privacy" directive has been added
980          to pykota.conf, to hide jobs' title, filename and options
981          in the history.
982         
983        - Minor changes in the debian directory.
984       
985    - 1.20alpha27 :
986   
987        - Fixed many problems with translation files. In particular
988          the Brazilian Portuguese translation file was incorrectly
989          installed into the french "breton" locale directory.
990         
991        - Finished French translation. 
992         
993    - 1.20alpha26 :
994   
995        - LPRng support code should now better detect network
996          printers' hostnames or IP addresses.
997         
998        - Fix for recently introduced bug in LPRng support.
999       
1000        - Fix for incorrect locale setting when starting.
1001       
1002    - 1.20alpha25 :
1003   
1004        - pkprinters allows --list to normal users, but require user
1005          to be a PyKota administrator when another command line
1006          option is used.
1007         
1008        - pkhint doesn't use absolute path to search for helper commands
1009          anymore.
1010         
1011        - Spanish translation ready for 1.20.   
1012       
1013    - 1.20alpha24 :
1014   
1015        - Now warnpykota only warns users limited by balance once.
1016       
1017        - Now warnpykota only warns users who have ever printed,
1018          to not cause confusion to users who have just opened
1019          their account.
1020       
1021        - Prepared help messages for translations.
1022       
1023    - 1.20alpha23 :
1024   
1025        - Add workaround for locale problem.
1026       
1027    - 1.20alpha22 :
1028   
1029        - Hopefully final fix for data encoding charset.
1030       
1031        - edpykota now refuse to work if the user is not a PyKota admin.
1032       
1033        - Fixes a recently introduced bug with users groups and PostgreSQL.
1034       
1035    - 1.20alpha21 :
1036   
1037        - Now dumpykota refuses to launch if the current user is not
1038          a PyKota administrator (a PyKota administrator is an user
1039          allowed to read the pykotadmin.conf file).
1040         
1041        - Now any PyKota administrator can use repykota and warnpykota
1042          with additionnal arguments, not only the root user.
1043         
1044        - Improved documentation a bit.
1045       
1046    - 1.20alpha20 :
1047   
1048        - Reduced delay in internal SNMP and PJL_over_TCP handlers
1049          from 2 to 1 second.
1050       
1051        - dumpykota can now output XML.
1052       
1053    - 1.20alpha19 :
1054   
1055        - Improved user groups and user groups quotas dumps in dumpykota.
1056       
1057        - Finished implementation of LDAP support in dumpykota.
1058       
1059        - The md5 sum of the job's datas is now available as an
1060          hexadecimal digest in the PYKOTAMD5SUM environment variable.
1061         
1062        - The description, filename, title, and options fields
1063          are now stored as UTF-8 strings in both LDAP and PostgreSQL.
1064          Proper charset is used during extraction from the database.
1065         
1066    - 1.20alpha18 :
1067   
1068        - Experimental autopykota command to initialize user
1069          account and quota entries on first print while not
1070          resetting the balance value if not needed.
1071         
1072        - Added the new "winbind_separator" directive to strip
1073          out the Samba/Winbind domain name while printing if
1074          needed (Off by default).
1075         
1076    - 1.20alpha17 :
1077   
1078        - Added --hardreset command line option to edpykota.
1079       
1080        - Fixed problem with accented chars in title, filename
1081          or options and LDAP backend.
1082         
1083    - 1.20alpha16 :
1084   
1085        - Internal handling of socket based PJL queries over
1086          port tcp/9100 is now available with the magic
1087          'pjl' value in the hardware accounter.
1088         
1089    - 1.20alpha15 :
1090   
1091        - LDAP pykotaAccountBalance objects were always created
1092          attached to the pykotaUser objects. This is now
1093          fixed and the value of balancebase in pykota.conf
1094          is now correctly used.
1095         
1096    - 1.20alpha14 :
1097   
1098        - Belgian translations added (copy of the french ones).
1099       
1100        - External hardware accounter now loops until
1101          a result can be read correctly.
1102         
1103        - pkhint now suggest the internal snmp handling instead
1104          of the external one.
1105         
1106    - 1.20alpha13 :
1107     
1108        - Hardware accounter now accepts the special
1109          'snmp' value, meaning ALL is done from main code
1110          without launching any subprocess.
1111          You need the http://pysnmp.sf.net Python module
1112          for this to work (tested with v3.4.2)
1113         
1114        - Increased delay between two loops iterations 
1115          to 2 seconds in waitprinter.sh to diminish
1116          CPU load.
1117         
1118    - 1.20alpha12 :
1119   
1120        - waitprinter.sh rewritten from scratch to wait
1121          for printer status stabilization.
1122       
1123    - 1.20alpha11 :
1124   
1125        - Generic data dumper 'dumpykota' introduced.
1126          Works only with PostgreSQL backend for now.
1127         
1128    - 1.20alpha10 :
1129   
1130        - Added fix for incorrect job's size computation when
1131          hardware accounting fails.
1132         
1133    - 1.20alpha9 :
1134   
1135        - Small fixes wrt subprocesses.
1136       
1137    - 1.20alpha8 :
1138   
1139        - Added full support of PCL3 : HP Deskjet printers are now
1140          supported.
1141       
1142    - 1.20alpha7 :
1143   
1144        - First draft of PCL3GUI (Deskjet 640C for example) analyzer.
1145          Needs more work, but no documentation is available.
1146       
1147    - 1.20alpha6 :
1148     
1149        - Improved mailandpopup.sh script.
1150       
1151        - Small fixes for LPRng.
1152       
1153        - Now exports PYKOTAPRINTERHOSTNAME for network printers'
1154          hostname or IP address. Set to 'localhost' when not
1155          meaningful.
1156         
1157        - Fixed issue with how mod_auth_ldap Apache modules
1158          fills the REMOTE_USER environment variable.
1159         
1160        - Fixed a bug in LDAP user deletion code.
1161       
1162    - 1.20alpha5 :
1163     
1164        - Introduces the new configuration directive 'onaccountererror'
1165          to specify what must be done whenever the software or
1166          hardware accounter fails. Allowed values are 'continue' and
1167          'stop' (default).
1168         
1169        - Minor fix in software accounter for a recently introduced
1170          problem.
1171         
1172    - 1.20alpha4 :
1173   
1174        - Added support for more ghostscript devices in ESC/P2
1175          analyzer : stcolor, st800, escp, escpc are now supported.
1176         
1177    - 1.20alpha3 :
1178       
1179        - Small improvement in PostScript parser to avoid being
1180          fooled by a change in number of copies :
1181          The user can't ask for 200 copies of page 1 and 1 copy
1182          of page 2 to fool PyKota anymore :
1183          this would have been accounted for as 1 copy only, but
1184          now the maximum value seen is used.
1185         
1186        - Relax checks for PCL5 header to accomodate some strange
1187          printer drivers.
1188         
1189        - Now hardware accounting method works like software
1190          accounting method wrt the subprocess' output.
1191         
1192        - Hardware and Software accounting stop the print queue 
1193          when the accounting subprocess didn't work. This will
1194          be configurable in the near future.
1195         
1196    - 1.20alpha2 :
1197   
1198        - Now software accounting method reads accounter's
1199          answer until a line with a single integer is
1200          obtained or until all of its output has been read.
1201          This should fix the problem some people have
1202          when strange locale related messages are sent
1203          when running subprocesses (Solaris only ?).
1204         
1205        - First version of ESC/P2 analyzer. Seems to work
1206          ok at least with 'epson', 'epsonc', 'eps9mid'
1207          and 'esp9high' ghostscript devices. Needs more
1208          work to correctly analyze other devices.
1209       
1210    - 1.20alpha1 :
1211   
1212        - Fixed problem with number of copies in PCLXL parser.
1213       
1214        - Fixed problem with number of copies in PCL5 parser,
1215          when number of copies was set outside of and before first
1216          page.
1217       
1218        - Added workaround for number of copies directly set in
1219          PostScript code.
1220         
1221        - Added german translation.
1222       
1223        - Fixed problem on first print for user group quota when
1224          "enforcement: strict" is used.
1225       
1226        - Fixed interpolation problem in french translation.
1227       
1228    - 1.19 :
1229   
1230        - Updated existing translations.   
1231       
1232        - Added final Thai and Greek translations.
1233       
1234        - Minor last minute bug fixes.
1235       
1236    - 1.19beta :
1237   
1238        - LPRng support for both software and hardware accounting seems
1239          to be OK.
1240         
1241        - Translation files fixed because of fuzzy matching problem. 
1242       
1243        - Fixed path to Swedish translation: 'sv' instead of 'se'.
1244       
1245        - Added first draft of Thai translation.
1246       
1247        - Fixed some minor bugs with Pychecker.
1248       
1249    - 1.19alpha35 :
1250   
1251        - Generic PDL analyzer now supports Binary PostScript documents
1252          in addition to DSC compliant ones.
1253       
1254    - 1.19alpha34 :
1255   
1256        - LPRng support : software accounting seems to work fine,
1257          but hardware accounting doesn't work yet.
1258   
1259    - 1.19alpha33 :
1260   
1261        - pykosd now accepts command line arguments. Enjoy !
1262          NB : due to a bug in xosd, you need xosd version 2.2.8
1263          or higher if you don't use the default C locale.
1264         
1265    - 1.19alpha32 :
1266   
1267        - Early (not working) version of the LPRng support rewrite.
1268       
1269        - Saner default configuration file.
1270       
1271    - 1.19alpha31 :
1272   
1273        - Fixed a double Python2.1 incompatibility with newer versions,
1274          which prevented the PCL5 and the PCLXL parsers to work with
1275          this older version of Python.
1276         
1277    - 1.19alpha30 :
1278   
1279        - Introduction of preliminary version of the pykosd command
1280       
1281        - Usernames, Groupnames and Printernames can now contain
1282          ANY character, expected '/' and '@'.
1283       
1284        - Integrated most of the Debian work from Sergio
1285          Gonz�z Gonz�z
1286         
1287    - 1.19alpha29 :
1288   
1289        - PCLXL parser should now correctly handle number of
1290          copies set for each page.
1291         
1292        - Added testsuite for generic PDL analyzer.
1293       
1294        - Typo fixed in PCLXL parser.
1295       
1296        - Correctly dispatches error messages depending on the
1297          situation : tools which can be run interactively will
1298          ALWAYS output their logs to stderr, excepted for
1299          their DEBUG messages, for which the "logger:"
1300          directive as set in pykota.conf will be honored.
1301          Tools which can't be run interactively will ALWAYS
1302          honor the "logger:" directive as set in pykota.conf
1303         
1304    - 1.19alpha28 :
1305   
1306        - The description field for printers can now be set,
1307          and is displayed in reports.
1308         
1309        - Fixed a small problem in SQL backend code.
1310         
1311        - Improved pkhint
1312       
1313        - First working PCL6 (aka PCLXL) parser !
1314          Doesn't handle copies yet.
1315       
1316    - 1.19alpha27 :
1317   
1318        - Additionnal 10% speed increase in PCL5 parser for GhostScript
1319          generated files (untested yet with other PCL files).
1320         
1321        - Reintroduced the use of mmap in PCL5 parser : this speedups
1322          PCL5 parsing by almost 4 times.
1323          This 4x with the 3x below give us in fact a twelvefold increase
1324          in performance for PCL5 parsing !
1325         
1326        - The Python accelerator Psyco is now used if available
1327          in the generic PDL parser : it speedups PCL5 parsing by
1328          almost three times automagically.
1329         
1330    - 1.19alpha26 :
1331   
1332        - Fixed PCL5 parser according to the sources of rastertohp.
1333       
1334        - Fixed number of copies handling in PCL5 parser : the number
1335          of copies could vary from page to page.
1336         
1337        - Added more debug information to PCLXL parser. 
1338       
1339    - 1.19alpha25 :
1340   
1341        - Added new "description" field to printers in both
1342          PostgreSQL and LDAP. No code to handle this yet.
1343         
1344        - Reversed the fix for power save mode in printers : 
1345          no paper or tray open would have caused people to
1346          be undercharged.
1347         
1348        - Preliminary version of MySQL initialization script.
1349         
1350    - 1.19alpha24 :
1351   
1352        - Native PDF parsing code now works perfectly with
1353          Python 2.1 and above, and is way faster than before.
1354          GhostScript is not used anymore to convert PDF to PS,
1355          because PDF is parsed directly.
1356         
1357    - 1.19alpha23 :
1358   
1359        - Fixed waitprinter.sh wrt PowerSave mode and some
1360          printers. Thanks to Ryan Suarez.
1361       
1362        - Smart PDL analyzer now recognizes PDF too : two
1363          PDF parsing methods are used : a native one which
1364          is very fast but requires Python 2.3 or above, and
1365          a slower one which uses Ghostscript. PyKota detects
1366          automatically which method to use depending on your
1367          version of Python.
1368       
1369        - All tracebacks now include PyKota's version number.
1370         
1371    - 1.19alpha22 :
1372   
1373        - Ensures that the file pointer for job's data is
1374          reset to the start of the job's datas after the
1375          job's size pre-computation phase.
1376         
1377        - Improved PostScript detection code for bad drivers
1378          which don't correctly switch languages between PJL
1379          and PS.
1380       
1381        - Even better debugging code.
1382       
1383    - 1.19alpha21 :
1384   
1385        - Additionnal check.
1386       
1387    - 1.19alpha20 :
1388   
1389        - More complete logging messages wrt accounters.
1390       
1391        - Now catches early failures occuring when the configuration
1392          files are parsed.
1393       
1394    - 1.19alpha19 :
1395   
1396        - Fixed over-verbose exits when displaying help
1397          or version.
1398         
1399        - Extended some PATH in the shell scripts 
1400       
1401        - Deleting an user now also deletes his payments history.
1402       
1403        - Doesn't explicitely ignore SIGCHLD anymore. This seems to
1404          cause problems.
1405
1406    - 1.19alpha18 :
1407   
1408        - History of payments is now stored in the database, and
1409          updated each time an user's balance is modified with
1410          edpykota --balance. This history represents each time
1411          the user was given some positive or negative credit,
1412          but doesn't reflect price paid for jobs, which appear
1413          in the jobs history instead.
1414         
1415        - Jobs history web reports now include the job's size in
1416          bytes. Also columns were reordered to render the report
1417          more easily readable.
1418         
1419    - 1.19alpha17 :
1420   
1421        - Mysterious bug (program exited unexpectedly without leaving
1422          any log message) which occured once in a while when
1423          cancelling jobs should be fixed now.
1424         
1425        - New 'crashrecipient' directive. Disabled by 
1426          default. See sample configuration file to see how
1427          to activate it. It is suggested that you activate it.
1428         
1429        - New PYKOTAJOBSIZEBYTES environment variable exported, 
1430          which contains the job's size in bytes. Empty jobs
1431          are now denied. This value is now stored in the job
1432          history (but not yet displayed from the web interface)
1433         
1434        - Preliminary work on payments storage : the PostgreSQL 
1435          and LDAP schemas should be OK now, but no code is written
1436          yet to support this functionnality.
1437         
1438    - 1.19alpha16 :
1439   
1440        - the newuser and newgroup LDAP specific directives now accept
1441          a second parameter to attach(), "fail" or "warn". If no entry
1442          is found to attach PyKota attributes to, and "fail" was used,
1443          then action is aborted and program exits in error. If "warn"
1444          is used, a new entry is created but a warning message is logged.
1445         
1446        - The job's originating hostname is now stored in the database,
1447          and exported as PYKOTAJOBORIGINATINGHOSTNAME in the environment.
1448       
1449    - 1.19alpha15 :
1450   
1451        - The old pykota filter is now removed. This means that
1452          currently PyKota doesn't support LPRng anymore, but
1453          LPRng support will be re-added, improved, in the near future.
1454         
1455    - 1.19alpha14 :
1456   
1457        - PYKOTAPRECOMPUTEDJOBSIZE and PYKOTAPRECOMPUTEDJOBPRICE
1458          are now exported as environment variables.
1459         
1460        - Heavy CPU usage is now completely fixed it seems, by
1461          introducing some 0.01 second sleeping when nothing to do.
1462         
1463        - Pre-computation of the job's size is now only
1464          done when enforcement is "STRICT", this saves
1465          CPU for people who don't want to use this new
1466          feature.
1467         
1468        - New 'enforcement' directive which accepts either
1469          STRICT or LAXIST. See sample configuration file
1470          for details.
1471         
1472    - 1.19alpha13 :
1473   
1474        - Get back to an old version of the polling loop which
1475          worked fine, but non-optimally. Will be optimized
1476          as time permits.
1477         
1478    - 1.19alpha12 :
1479   
1480        - Job's size is now precomputed unconditionnally using
1481          the generic PDL analyzer.
1482          NB : This value is not yet used to pre-allow/deny the
1483          job.
1484       
1485    - 1.19alpha11 :
1486   
1487        - The pykota filter is now completely deprecated and
1488          can't be used anymore. LPRng users MUST download
1489          an older version of PyKota. CUPS users MUST use
1490          cupspykota. Better support for LPRng will come
1491          in the near future.
1492         
1493    - 1.19alpha10 :
1494   
1495        - pykotme now uses generic PDL Analyzer directly instead
1496          of spawning a new process.
1497         
1498        - Improvements to generic PDL Analyzer.
1499       
1500        - 25% Speedup in PCL parser. Getting more of the Python version
1501          will probably be difficult, since the completely table driven
1502          parser I wrote is slower than the original algorithm. Then,
1503          the original algorithm is still used for now.
1504          Probable that more speed could be achieved using mmap, at the
1505          expense of severe memory consumption.
1506       
1507        - configuration simplifications : the "accounter" directive's
1508          'hardware' arguments now accepts what was in the "requester"
1509          directive as it's content. The "requester" directive is not
1510          supported anymore. See sample configuration file for details.
1511       
1512    - 1.19alpha9 :
1513       
1514        - pkpgcounter is now just a wrapper around the PDLAnalyzer class
1515       
1516        - pykotaOptions LDAP attribute now accepts non-ascii characters
1517          too.
1518         
1519        - First try at cupspykota main loop rewrite
1520       
1521    - 1.19alpha8 :
1522   
1523        - 'querying' accounting method is now called 'hardware'
1524       
1525        - 'external' accounting method is now called 'software'
1526       
1527        - 'stupid' accounting method doesn't exist anymore
1528       
1529        - 'snmp' requester doesn't exist anymore
1530       
1531        - code simplifications in external requester
1532       
1533    - 1.19alpha7 :
1534     
1535        - Database schema change (both LDAP and PostgreSQL) to
1536          allow storage of the job-originating-hostname attribute.
1537          An SQL upgrade script is present. The code is not yet
1538          capable of setting/retrieving this attribute. Support
1539          for this functionnality will be added in the future.
1540         
1541    - 1.19alpha6 :
1542   
1543        - problems connecting to SMTP servers are now catched.
1544       
1545        - pykotme now uses pkpgcounter to compute the size of the
1546          job. This modification adds PCL5 and soon PCLXL (PCL6)
1547          support. You can now get quotes for PCL in addition to
1548          PostScript.
1549         
1550        - pkpgcounter now includes first try at PCLXL parser. 
1551          It is currently disabled until it's finished.
1552         
1553    - 1.19alpha5 :
1554   
1555        - cupspykota polling loop fix for MacOSX (at least)
1556       
1557        - logging subsystem now logs PID too, to ease diagnosing
1558          problems under heavy load.
1559         
1560        - pkpgcounter enhancements.
1561       
1562        - pkprinters --skipexisting now tells pkprinters to not
1563          modify existing printers when --add is used.
1564          pkprinters logs a warning message whenever --add is
1565          used and a printer already exists.
1566         
1567        - LDAP schema now allows accented chars in pykotaFileName
1568          and pykotaTitle attributes.
1569       
1570    - 1.19alpha4 :
1571   
1572        - a bad copy&paste prevented pkpgcounter to work at all, this
1573          is now fixed.
1574         
1575        - improved PCL support in pkpgcounter, with the use of
1576          HP PCL/PJL Reference Set
1577          PCL5 Printer Language Technical Quick Reference Guide
1578       
1579        - pkpgcounter now uses mmap to speed things up : duration
1580          is halved with the sample 87 pages PCL document I use for
1581          testing.
1582         
1583    - 1.19alpha3 :
1584   
1585        - pkprinters now accepts the --list command line argument
1586          to list informations about printers.
1587         
1588    - 1.19alpha2 :
1589   
1590        - pkpgcounter is now included as a smart external
1591          accounter which can handle both PostScript and PCL.
1592         
1593    - 1.19alpha1 :
1594   
1595        - PYKOTALIMITBY environment variable is now exported too.
1596       
1597        - Inclusion of Michele Baldessari's work on autotools.
1598       
1599    - 1.18 :
1600   
1601        - Improved documentation
1602       
1603    - 1.18beta2 :
1604     
1605        - Fix for raw jobs with cupspykota
1606       
1607    - 1.18beta :
1608   
1609        - Small fix for new waitprinter.sh script
1610       
1611        - Better tracebacks on error conditions
1612       
1613        - Improved translations
1614       
1615        - Improved documentation
1616       
1617    - 1.18alpha15 :
1618
1619        - waitprinter.sh replaced by a new and possibly faster
1620          and more powerful one.
1621   
1622        - Names can now begin with a digit.
1623       
1624        - Stability improvement for quotas set on printers groups.
1625       
1626    - 1.18alpha14 :
1627   
1628        - Catches more (all ?) problems with SMTP servers instead
1629          of breaking.
1630         
1631        - Italian translation added.
1632       
1633    - 1.18alpha13 :
1634   
1635        - Pre and Post hooks are now available in the pykota
1636          filter as well.
1637         
1638        - The pykota filter doesn't check last user's quota
1639          anymore when delayed hardware accounting is used :
1640          this will be done anyway the next time the last
1641          user will print again. This saves some database
1642          queries which are unneeded.
1643       
1644    - 1.18alpha12 :
1645   
1646        - Pre and Post hooks to external commands with many
1647          many environment variables available are useable
1648          from the cupspykota backend.
1649          See sample configuration file for details and help.
1650         
1651    - 1.18alpha11 :
1652   
1653        - Hopefully final fix wrt groups (users and printers)
1654       
1655    - 1.18alpha10 :
1656   
1657        - Fixed nested printer groups accounting.
1658       
1659        - Fixed user groups + printer groups problem.
1660       
1661    - 1.18alpha9 :
1662   
1663        - Fix for LDAP problem when job price was 0.
1664       
1665        - Fix for empty user groups with LDAP.
1666       
1667        - Preliminary version of the snmpprinterstatus command added.
1668       
1669    - 1.18alpha8 :
1670   
1671        - Don't retrieve data when not needed.
1672          This avoids many database queries.
1673       
1674    - 1.18alpha7 :
1675   
1676        - New experimental ldapcache directive to improve
1677          LDAP caching.
1678         
1679    - 1.18alpha6 :
1680       
1681        - New configuration directive added : maildomain
1682          to specify the domain to send mail to when user
1683          email address is not set in PyKota database.
1684         
1685        - More complete email message headers. 
1686         
1687    - 1.18alpha5 :
1688   
1689        - Debian packaging specific files, contributed by
1690          Peter Hawkins are now included in the project's tree.
1691         
1692        - Preliminary work on future low-level LDAP caching to speed
1693          up modifications (at least).
1694         
1695    - 1.18alpha4 :
1696   
1697        - Applied some of the modifications suggested by
1698          Peter Hawkins, for better Debian integration.
1699          Most notably cupspykota, pykota, and the shell
1700          scripts are now installed into /usr/share/pykota
1701          instead of into /usr/bin
1702          BEWARE : double check that your symbolic link
1703          to cupspykota is correct, and that your pykota.conf
1704          file use correct path for the shell scripts like
1705          waitprinter.sh and al.
1706         
1707        - pkhint command added, to help in configuring correct
1708          accounting method for PyKota.
1709         
1710    - 1.18alpha3 :
1711   
1712        - Fixed a rare bug in cupspykota backend which gave
1713          incorrect "CUPS backend died abnormally" messages.
1714       
1715    - 1.18alpha2 :
1716   
1717        - Added the pkprinters command line tool to manage printers
1718          exclusively.
1719       
1720    - 1.18alpha1 :
1721   
1722        - Preliminary work on Relationnal Database Independance.
1723       
1724        - Sample report made from OpenOffice.org added as PDF and SXC.
1725       
1726    - 1.17 :
1727   
1728        - Finalized release.
1729       
1730    - 1.17alpha2 :
1731   
1732        - Fix stupid software accounting bug in the CUPS backend.
1733       
1734    - 1.17alpha1 :
1735   
1736        - User/Group deletion code in edpykota rewritten.
1737       
1738    - 1.16 :
1739   
1740        - Preliminary documentation on how to use OpenOffice.org
1741          to create personnalized reports for PyKota + PostgreSQL.
1742         
1743        - Spanish installation guide for CUPS+PyKota+PostgreSQL
1744          added to the documentation. Doesn't yet document v1.16
1745          though.
1746       
1747        - Portuguese Portuguese translation replaces Brazilian
1748          Portuguese Translation. Brazilian portuguese
1749          translation is still available under the 'br' locale.
1750       
1751    - 1.16beta3 :
1752   
1753        - Swedish translation added.
1754       
1755        - Small fix in documentation.
1756       
1757    - 1.16beta2 :
1758   
1759        - Small fix for job cancelling code while job already
1760          printing in CUPS backend.
1761         
1762        - Big fix wrt printing policies for unknown users. 
1763       
1764    - 1.16beta1 :
1765   
1766        - Manpages upgraded.
1767       
1768    - 1.16alpha26 :
1769   
1770        - Job price is now computed like this :
1771       
1772          SUM((NbPages * PricePerPage) + PricePerJob)
1773         
1774          For current printer and all the printers groups it is
1775          a member of, if any.
1776         
1777          This may be difficult to grasp, but offers unprecedented
1778          flexibility.
1779         
1780    - 1.16alpha25 :
1781   
1782        - Email address can be set at user creation time,
1783          using the following syntax :
1784         
1785            $ edpykota --add username/email@yourdomain.com
1786       
1787    - 1.16alpha24 :
1788   
1789        - CGI script now can show the printing history.
1790       
1791        - Bug wrt number of copies should be fixed.
1792       
1793        - Major code refactoring => It is now possible to
1794          automatically add printers on first print.
1795       
1796    - 1.16alpha23 :
1797   
1798        - Fixed potential accuracy problem if a user printed on
1799          several printers at the very same time.
1800       
1801    - 1.16alpha22 :
1802   
1803        - edpykota now allows adding printers to printer groups
1804       
1805    - 1.16alpha21 :
1806   
1807        - Allows the dot in user and printer names.
1808       
1809        - Printer groups are now cached too.
1810       
1811    - 1.16alpha20 :
1812   
1813        - Fixed several small bugs with the help of PyChecker.
1814       
1815    - 1.16alpha19 :
1816     
1817        - Fixed a bug in PostgreSQL backend's code.
1818       
1819    - 1.16alpha18 :
1820   
1821        - Initial code for printer groups support. Printer groups have
1822          to be added with external tools like psql or gq for example.
1823          Printer groups seems to work fine with users. Untested with user
1824          groups for now.
1825
1826        - Several minor visual problems fixed in reports.
1827       
1828        - Fixed a bug in LDAP date handling.
1829       
1830        - Fix for LDAP problem with some combination of OpenLDAP + Python-LDAP
1831          + some particular settings.
1832         
1833        - mailandpopup.sh shell script added. See sample configuration file
1834          for details.
1835       
1836        - Several environment variables are now exported when executing
1837          external commands (accounters, requesters, mailers) :
1838           
1839            PYKOTAUSERNAME => user who is printing
1840            PYKOTAPRINTERNAME => printer on which the job is being sent
1841            PYKOTATITLE => Job's title
1842            PYKOTAFILENAME => Job's filename
1843            PYKOTACOPIES => number of copies asked
1844            PYKOTAOPTIONS => print command options (-o with CUPS)
1845         
1846    - 1.16alpha17 :
1847   
1848        - Added portugues translation.
1849       
1850        - Major code refactoring in accounters.
1851       
1852    - 1.16alpha16 :
1853   
1854        - Code refactoring, and addition of a real HTML reporter, to
1855          have nice looking and useful web based reports (in the future).
1856       
1857        - Added utolower configuration option to convert all usernames
1858          to lowercase during printing.
1859         
1860    - 1.15alpha15 :
1861   
1862        - Now includes the papwaitprinter.sh shell script to wait for
1863          AppleTalk enabled printers.
1864         
1865    - 1.16alpha14 :
1866   
1867        - Now printing on a printer not defined in the Quota Storage,
1868          results in the job being cancelled or stopped, depending
1869          on the printing system.
1870         
1871    - 1.16alpha13 :
1872   
1873        - Small bugfix wrt Python v2.1
1874       
1875        - If username is an empty string, user root is assumed.
1876       
1877        - 'postgresql' is not recognized anymore as a storage backend,
1878          you have to use 'pgstorage' instead. 'postgresql' used to
1879          be supported for compatibility with very old PyKota versions,
1880          this is not the case anymore.
1881         
1882    - 1.16alpha12 :
1883   
1884        - Job price added to job history, to keep accounting correct
1885          if a printer price per page or per job is modified and the
1886          history is not reset : the history would have given a false
1887          amount of money charged before the printer's prices were
1888          modified, this addition solves the problem.
1889         
1890    - 1.16alpha11 :
1891   
1892        - Some preliminary modifications to the database structure for
1893          PostgreSQL and OpenLDAP. A script to upgrade a PostgreSQL
1894          database is now provided. LDAP attributes now support
1895          eq, pres and sub indexes.
1896         
1897        - Job history now contains additional informations : 
1898          number of copies, filename, title and print options.
1899         
1900    - 1.16alpha10 :
1901       
1902        - Some modifications done to external policy handling.
1903          See sample configuration file for details.
1904   
1905        - Spanish translation added.
1906       
1907    - 1.16alpha9 :
1908   
1909        - mailto can be set to external(...) to warn users above
1910          quota with any command of your choice (e.g. linpopup).
1911          Several parameters are available, see sample configuration
1912          file for details.
1913         
1914    - 1.16alpha8 :
1915   
1916        - Now cupspykota transmits SIGTERMS to the original 
1917          backend when the user deletes a job being processed.
1918         
1919        - The documentation is now licensed under the terms of the
1920          GNU GPL too.
1921         
1922    - 1.16alpha7 :
1923   
1924        - The CUPS backend is now fully functionnal (it seems).
1925       
1926        - From now on, the use of the pykota filter with CUPS
1927          is deprecated. The pykota filter still has to be
1928          used with LPRng though.
1929       
1930    - 1.16alpha6 :
1931   
1932        - Bug fixed : when edpykota was used to add a printer
1933          with no user or group name, a bad user/group name "*" was
1934          added to the database.
1935         
1936    - 1.16alpha5 :
1937   
1938        - New CUPS backend supports device enumeration !
1939          This means that NO manual CUPS configuration has to
1940          be done. All can now be done from CUPS web interface.
1941       
1942    - 1.16alpha4 :
1943   
1944        - New CUPS backend added.
1945       
1946    - 1.16alpha3 :
1947       
1948        - Minimal FAQ document added.
1949       
1950    - 1.16alpha2 :
1951   
1952        - CGI script now partially supports browser's language preference
1953       
1954    - 1.16alpha1 :
1955   
1956        - Ensures that the LDAP connection is really closed at end.
1957       
1958        - More complete error messages in case of LDAP operation failure.
1959       
1960    - 1.15 :
1961     
1962        - Documentation improved.
1963       
1964    - 1.15beta :
1965   
1966        - Command line tools now accept multiple printer
1967          names or wildcards, separated with commas.
1968         
1969    - 1.15alpha9 :
1970   
1971        - External policy can be used to auto-add unknown users
1972          and any other interesting things you may want to do.
1973          WARNING : You can't auto-add printers for now.
1974          They have to be created manually before.
1975          Look at sample configuration file for examples.
1976         
1977    - 1.15alpha8 :
1978   
1979        - Job history can be disabled if needed.
1980          This feature may be useful for people who use the LDAP
1981          backend and don't want their LDAP tree to grow out of
1982          control.
1983       
1984    - 1.15alpha7 :
1985   
1986        - More work done on caching wrt groups.
1987       
1988    - 1.15alpha6 :
1989   
1990        - Performance bottleneck with LDAP solved.
1991       
1992    - 1.15alpha5 :
1993   
1994        - Caching mechanism for all database queries.
1995
1996    - 1.15alpha4 :
1997   
1998        - Problem with Python 2.3 fixed. Needs some definitive
1999          modification.
2000         
2001    - 1.15alpha3 :
2002   
2003        - CGI script now tries to restrict view when the
2004          REMOTE_USER environment variable is set. This allows
2005          people to protect its use with .htaccess files.
2006          When unprotected, or if REMOTE_USER is 'root', then
2007          unrestricted access is granted.
2008          NB : REMOTE_USER is automatically set by the web server
2009          (e.g. Apache) when a page with restricted access is viewed.
2010         
2011    - 1.15alpha2 :
2012   
2013        - Better detection of LPRng.
2014       
2015        - Outputs a warning if printing system is unknown.
2016       
2017    - 1.15alpha1 :
2018   
2019        - Bug fix in SQL code.
2020       
2021    - 1.14 :
2022   
2023        - The PostgreSQL database connection is now always closed before
2024          exit. The LDAP database connection too, but it didn't suffer
2025          from the problem anyway, AFAICT.
2026       
2027    - 1.14beta2 :
2028   
2029        - An LDAP-specific configuration field was introduced, usermail.
2030          Use it to specify which LDAP attribute contains a valid email
2031          address for the user. See sample configuration file for
2032          details.
2033       
2034    - 1.14beta :
2035   
2036        - Two new LDAP-specific configuration fields were introduced,
2037          newuser and newgroup. Use them to specify if you want to add
2038          quota information to existing entries or elsewhere.
2039          See sample configuration file for details.
2040         
2041    - 1.14alpha9 :
2042   
2043        - Documentation improved.
2044       
2045        - pykotme now also prints the user's account balance value
2046          if the user is registered in the Quota Storage and his
2047          limiting factor is "balance".
2048         
2049    - 1.14alpha8 :
2050   
2051        - bin/waitprinter.sh is now included to wait for
2052          SNMP enabled printers to be idle again before
2053          asking for their internal page counter.
2054          See sample configuration file for details.
2055         
2056    - 1.14alpha7 :
2057   
2058        - edpykota now doesn't check if the user/group is above
2059          quota. The check is only done at print time. This
2060          prevents the sending of email messages when creating
2061          user quotas if quota is already reached at creation
2062          time.
2063         
2064    - 1.14alpha6 :
2065   
2066        - Configuration file split and moved to /etc/pykota/pykota.conf
2067          and /etc/pykota/pykotadmin.conf to prevent simple users to
2068          have Read/Write access to the Quota Database.
2069          Don't forget to :
2070         
2071                $ chmod 640 /etc/pykota/pykotadmin.conf
2072               
2073        - storageuser and storageuserpw configuration fields reintroduced
2074          for the same reason.
2075         
2076        - Code cleaning for future implementation of email addresses
2077          support in the PostgreSQL and LDAP backends.
2078         
2079    - 1.14alpha5 :
2080       
2081        - Big bug fixed when changing the prices for a printer
2082       
2083    - 1.14alpha4 :
2084   
2085        - When adding an user, the user itself and its account balance
2086          are now added in the same LDAP entry. Before they were added
2087          as two different LDAP entries.
2088         
2089    - 1.14alpha3 :
2090   
2091        - Email field added to PostgreSQL database. An upgrade script
2092          is included in initscripts/postgresql.
2093       
2094    - 1.14alpha2 :
2095   
2096        - Typo fixed when using the --prototype option to edpykota
2097       
2098    - 1.14alpha1 :
2099   
2100        - Poor man's treshold included : users with a low account
2101          balance (below 1.0 by default, configurable) are sent
2102          a warning message.
2103         
2104        - All warning messages to users are now configurable. 
2105          NB : Warning messages to the administrator are not.
2106       
2107    - 1.13 :
2108   
2109        - Some small fixes wrt group handling.
2110       
2111        - The whole module code was passed through PyChecker and
2112          several small code inconsistencies were fixed,
2113          as well as a bug in the groups code.
2114         
2115    - 1.13alpha1 :
2116   
2117        - Bug fix wrt LDAP.
2118       
2119    - 1.12 :
2120   
2121        - More complete test added in edpykota.
2122       
2123    - 1.12alpha2 :
2124   
2125        - The previous bug fix was incomplete. This is corrected.
2126       
2127    - 1.12alpha1 :
2128   
2129        - Small bug fix.
2130       
2131    - 1.11 :
2132   
2133        - Now includes the pykotme command line tool, to produce
2134          printing quotes for users.
2135         
2136    - 1.10 :
2137   
2138        - Bug fixed wrt quota reports when print limiting is by
2139          account balance.
2140         
2141    - 1.09 :
2142   
2143        - Translations finalized.
2144       
2145        - Manpages updated.
2146       
2147        - Installation documentation improved wrt LDAP support.
2148       
2149    - 1.09beta2 :
2150   
2151        - The CGI script for quota reports works again, and
2152          is much more powerful.
2153       
2154    - 1.09beta :
2155   
2156        - edpykota finalized
2157       
2158    - 1.09alpha2 :
2159   
2160        - LDAP schema modified a bit. Please upgrade.
2161       
2162        - LDAP backend works !
2163       
2164        - repykota and warnpykota allow the root user to pass
2165          users or groups names on the command line. Users
2166          and groups names may contain wildcards.
2167         
2168        - repykota and warnpykota only reports or warns the
2169          current user when launched by non-root users.
2170         
2171        - Minor bug fixes. 
2172   
2173    - 1.09alpha1 :
2174   
2175        - More work on LDAP storage backend. Many options
2176          were added to /etc/pykota.conf to give some
2177          hints to the LDAP storage backend.
2178         
2179        - Severe database access optimizations were done by
2180          rewriting most of the Quota Storage backends drivers.
2181     
2182    - 1.08 :
2183   
2184        - Major bug fix wrt LPRng support for remote jobs.
2185       
2186        - Major bug fix wrt increase/decrease account balances.
2187       
2188    - 1.08alpha8 :
2189   
2190        - Code refactoring.
2191       
2192        - A single user/password pair is used to connect
2193          to the database backend. The storageuser configuration
2194          field, and its associated passwords storageuserpw, are
2195          not used anymore.
2196         
2197        - You can now set PyKota in debug mode, see sample configuration 
2198          file for details.
2199          WARNING : only Quota Storage backend queries are logged in
2200          debug mode, for now.
2201       
2202    - 1.08alpha7 :
2203   
2204        - Very latest LDAP schema.
2205       
2206        - Code enhancement wrt easy pluggability of PyKota attributes
2207          and object classes into an existing LDAP directory.
2208       
2209    - 1.08alpha6 :
2210   
2211        - Minor bug corrections
2212       
2213        - More work on LDAP : new schema
2214       
2215    - 1.08alpha5 :
2216   
2217        - More good work on LDAP storage.
2218          repykota now works reasonably well with the sample LDAP directory.
2219       
2220    - 1.08alpha4 :
2221   
2222        - LDAP schema included.
2223          THIS IS JUST FOR PEOPLE TO DISCUSS ABOUT THIS.
2224          LDAP SUPPORT DOESN'T WORK YET, AND THE SCHEMA
2225          MAY CHANGE IN THE FUTURE. PLEASE TELL US
2226          WHAT YOU THINK ABOUT THIS SCHEMA ON THE
2227          MAILING LIST.
2228         
2229    - 1.08alpha3 :
2230   
2231        - External accounting methods were partly rewritten :
2232         
2233          - No more "broken pipe" should happen.
2234         
2235          - They now take care of the number of copies
2236            This may be unneeded though, if the postscript
2237            file already does this, because this would
2238            overcharge users (number of copies counted
2239            two times). NEEDS MORE TESTING.
2240           
2241          - The sample configuration file now contains 
2242            an external accounting method example which should
2243            work with all DSC compliant Postscript files.
2244           
2245        - Some small bugs were fixed.   
2246       
2247    - 1.08alpha2 :
2248   
2249        - Now works with net-snmp v5.0 and above.
2250          It already worked, but the sample configuration
2251          file didn't contain appropriate values...
2252       
2253    - 1.07 : Release of the Shame !
2254   
2255        - The external accounting methods driver was left out of
2256          the CVS tree. Nobody could use it since it wasn't included !
2257         
2258    - 1.06 :
2259   
2260        - Severe bug fixed : if you had a printer in
2261          power saving state which couldn't answer immediately,
2262          a bug was triggered.
2263          It was caused by a bad copy/paste which
2264          forgot to import a Python module at run time.
2265         
2266    - 1.05 :
2267   
2268        - External accounters are finally available !
2269          This means that you can plug any page accounting
2270          method you like by setting the appropriate
2271          'accounter' field in /etc/pykota.conf
2272          See the sample conf/pykota.conf.sample to
2273          learn how to do.
2274         
2275          NB : Both 'external' and 'stupid' accounting methods
2276               account a job size just before *this* job is
2277               sent to the printer.
2278               The original 'querying' method accounts a job
2279               size just before *the next* job is sent to
2280               the printer.
2281       
2282    - 1.05alpha3 :
2283   
2284        - A 'stupid' and unreliable accounting method was
2285          implemented to serve as an example on how to
2286          do this sort of things. This method only counts
2287          the 'showpage' statements in the input data.
2288          See sample configuration file for details.
2289          Pluggable accounting methods work, but I advise
2290          you TO NOT USE THIS ONE WHICH IS JUST AN EXAMPLE.
2291          It is not reliable enough to be used.
2292          Use the 'querying' accounting method instead.
2293         
2294    - 1.05alpha2 :
2295   
2296        - Pluggable accounting methods.
2297       
2298        - Better error handling.
2299       
2300    - 1.05alpha1 :
2301   
2302        - SECURITY file added to help improve PyKota's security.
2303       
2304        - Extracting the printer's internal page counter is now
2305          tried several times, waiting several seconds between
2306          two tries. This lets the time to warm up for some printers
2307          which don't answer when they are sleeping (my Apple
2308          LaserWriter 16/600 PS is in this case, maybe others too)
2309         
2310        - Small display bug fixed in repykota
2311         
2312    - 1.04 :
2313   
2314        - Default print policy for users/groups unknown from
2315          the print quota system is now DENY instead of ALLOW,
2316          since ALLOW can generate inaccurate results
2317          (incorrect job sizes charged to the wrong persons)
2318         
2319        - LPRng support works !
2320       
2321        - A bug was introduced some time ago wrt printers' default
2322          policy for unknown users. It is now corrected.
2323       
2324        - repykota now displays prices per job and per page for each
2325          printer, if they are defined.
2326         
2327        - Minor display bug fixed in repykota.
2328       
2329        - Problem when running repykota with an empty database was fixed.
2330       
2331    - 1.03 :
2332   
2333        - Upgrade script included for earlier versions.
2334          Please look inside the initscripts subdirectory.
2335          THE DATABASE SCHEMA HAS CHANGED, PLEASE UPGRADE.
2336         
2337        - repykota now reports account balances too.
2338       
2339        - PyKota now has a nice logo, see the logos
2340          subdirectory.
2341       
2342        - Manual pages were finally updated.
2343       
2344        - Group quotas seem to work now !
2345       
2346        - The new database schema allows to keep an history of all
2347          jobs as well as charge users per page and/or per job,
2348          and track users' account balance.
2349         
2350        - edpykota now accepts much more command line options to 
2351          use the new functionnalities. See edpykota --help for
2352          details.
2353         
2354        - The installation script now allows to install the sample
2355          configuration file during first installation.
2356         
2357        - More group quota code works, but still not finished. 
2358       
2359        - The CGI script displays a link to PyKota's website.
2360       
2361        - The job history is now kept, this will allow per-period
2362          reports in the future.
2363         
2364        - After having modified the quota for an user with edpykota,
2365          a quota check is done to eventually warn the user/admin about
2366          a quota which is too low to print.
2367         
2368        - A workaround is provided for HP Printers : their internal
2369          page counter is only saved to NVRAM in a 10 increment, so
2370          if you switch them off and then on, the reported page counter
2371          may be lower than the real number of pages printed.
2372          See http://web.mit.edu/source/third/lprng/doc/LPRng-HOWTO-15.html
2373          We unconditionnally set the last job's page count to
2374          abs(int((10 - abs(lastcounter(snmp) - lastcounter(storage)) / 2))
2375          in this case.
2376          For a more accurate accounting, never switch your HP printers
2377          off.
2378         
2379        - A fix is provided for printers which only have a volatile 
2380          page counter (reset to 0 every time you switch the printer on)
2381          This should allow PyKota to work reasonably fine with HP Laserjet
2382          4L/5L/6L, not perfect, but better than nothing.
2383          See http://web.mit.edu/source/third/lprng/doc/LPRng-HOWTO-15.html
2384          For a more accurate accounting, never switch your HP printers
2385          off. This is untested, please report any problem.
2386         
2387        - A bug was fixed when edpykota --add was used with users who already
2388          had a quota on the specified printer.
2389         
2390        - A small display bug in repykota was introduced in preliminary
2391          1.03 versions, and fixed later on.
2392         
2393        - Some minor bugs which happened in rare situations were fixed.
2394       
2395        - Support for AppleTalk printers was added, see sample configuration
2396          file for details.
2397         
2398        - Users and group printing can now be controlled (limited) either by 
2399          print quota or by account balance.
2400       
2401    - 1.02 :
2402   
2403        - The installation script now checks for software availability
2404          and in case a software is missing asks the user if he
2405          wants to continue with the installation or abort it.
2406         
2407        - The configuration file pykota.conf is now expected to be
2408          found in /etc instead of in /etc/cups
2409          The installation script prompts the user to see if he
2410          wants to move an old configuration file to the new location
2411          if needed.
2412         
2413        - Improved documentation.
2414       
2415        - You can now set the tcp/ip port on which the Quota Storage
2416          Server is listening, see sample configuration file for details.
2417       
2418        - Better general error handling.
2419       
2420        - Upgrade script for pre 1.01 PostgreSQL database schema is now
2421          included as well.
2422       
2423    - 1.01 :
2424   
2425        - The configuration file now accepts an option   
2426          to choose the recipient(s) of the email messages :
2427         
2428            - DevNull means no one will receive them.
2429            - User means only the user will receive them.
2430            - Admin means only the admin will receive them.
2431            - Both means the User and the Admin will receive them.
2432           
2433        - The configuration file now uses hard-coded default values
2434          when an option is not set. See sample configuration file
2435          for details.
2436         
2437        - Manual pages are included since 1.00, but I forgot to   
2438          add this information to this file.
2439         
2440        - Redistribution terms for the official package have 
2441          softened and are now fully GPL compatible :
2442          unrestricted modification is now allowed even for
2443          the version number.
2444         
2445    - 1.00 :
2446   
2447        - edpykota now accepts a --noquota option. This
2448          disable quota checking while still doing page
2449          accounting. This is really useful for people
2450          who don't want to limit their users but want
2451          to know how much pages they print.
2452         
2453        - Some untested scripts were added to retrieve
2454          the life time page counter of non-SNMP printers.
2455         
2456        - Every directory now has a specific README file. 
2457       
2458    - 0.99 :
2459   
2460        - Under some circumstances while the user wasn't allowed
2461          to print, he didn't receive any email message. It is
2462          now fixed.
2463         
2464        - When an user wasn't allowed to print, the quota for
2465          the previous user wasn't updated. This is now fixed.
2466         
2467    - 0.98 :
2468   
2469        - Correctly handle the case where the printer is switched off.
2470       
2471        - Small bug wrt syslog fixed.
2472       
2473    - 0.97 :
2474   
2475        - edpykota accepts wildcards on its command line for users/groups too
2476          if the --add option is not set, e.g. :
2477         
2478              $ edpykota --printer lp --softlimit 50 --hardlimit 100 "jer*"
2479             
2480        - If no user name is passed at all, then a default wildcard of "*"
2481          which means apply the command on ALL users for this printer is used.
2482         
2483        - Small bug fixes.
2484       
2485    - 0.96 :
2486
2487        - Options requester, policy, admin, adminmail and gracedelay can now
2488          be set either globally or per printer. The printer option has
2489          priority if both are defined.
2490
2491        - More powerful configuration parser.
2492       
2493        - If all options are defined globally, there's no need to
2494          define a section for each printer in the configuration
2495          file anymore. Just define a [global] section and it's ok.
2496
2497    - 0.95 :
2498
2499        - External requesters for printers finally added.
2500
2501        - Full internationalization (english and french are supported)
2502 
2503        - More complete quota usage report
2504
2505        - CGI script to access to the quota usage report
2506
2507        - Several bugs fixed.
2508
2509
2510    - 0.9 :
2511
2512        - First public version
Note: See TracBrowser for help on using the browser.