root / pykota / trunk / NEWS @ 2011

Revision 2011, 55.9 kB (checked in by jalet, 20 years ago)

The word 'LPRng' was missing in this document's title

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1# $Id$
2
3PyKota - Print Quota for CUPS and LPRng
4
5(c) 2003-2004 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
19
20============================================================
21
22PyKota NEWS :
23
24    - 1.21alpha17 :
25     
26        - Fixed field type's name in XML dumps.
27       
28        - Now drops priviledges to user 'pykota' when launched as root
29          (directly or as a CUPS backend), if such an user exists.
30         
31        - Fixed PCL3/4/5 parser for some drivers' output.
32       
33    - 1.21alpha16 :
34   
35        - fixed several recently introduced bugs in LDAP backend code,
36          thanks to Matt Hyclak.
37         
38    - 1.21alpha15 :
39     
40        - Normalized field names between LDAP and PostgreSQL backends
41          in dumpykota's output.
42         
43        - dumpykota filtering capabilities are now supported within
44          the LDAP backend too.
45         
46    - 1.21alpha14 :
47   
48        - dumpykota now supports extended filtering possibilities
49          with the PostgreSQL backend (LDAP support will come soon).
50         
51    - 1.21alpha13 :
52   
53        - Added a --debug command line option to pkpgcounter, so
54          that people may see what really happens, and what will
55          be available in the future :-)
56         
57    - 1.21alpha12 :
58   
59        - Fixed a bug with non standard pkbanner command lines.
60       
61        - Now logs as errors the differences between precomputed and
62          computed job sizes. **CUPS only for now**
63         
64    - 1.21alpha11 :
65   
66        - Now user and group print quota entries can be stored directly
67          below the user or group with the LDAP backend, using them
68          as branches. Thanks to Stefan Wold for the patch.
69          See the sample configuration file for details.
70         
71        - TLS is now supported with the LDAP backend. Thanks to Stefan
72          Wold for the patch.
73          See the sample configuration file for details.
74         
75        - edpkota now accepts the -U | --used value command line argument
76          to preset the page counters to an initial value. Thanks to
77          Wilson Roberto Afonso and Matt Hyclak for the patch.
78         
79    - 1.21alpha10 :
80   
81        - Now automatically reconnects up to three times if the LDAP server
82          returned an error, possibly due to a timeout.
83         
84    - 1.21alpha9 :
85   
86        - Now searches the configuration files in 'pykota' system user's
87          home directory. The 'pykota' system user and group have
88          to be created by the system administrator, and given
89          sufficient permissions to PyKota's configuration files.
90         
91    - 1.21alpha8 :
92   
93        - Added the new reject_unknown directive to reject the
94          creation of user or groups which are unknown to the system.
95         
96    - 1.21alpha7 :
97   
98        - Introduction of the pkmail email gateway.
99       
100    - 1.21alpha6 :
101   
102        - Fix for LPRng filenames.
103       
104        - Added Turkish translation thanks to Baris Cicek.
105       
106    - 1.21alpha5 :
107   
108        - Improved ESC/P2 miniparser for Stylus Photo printers.
109       
110        - Implemented the --savetoner command line option to pkbanner.
111       
112        - Improved pkbanner's help and messages.
113       
114    - 1.21alpha4 :
115   
116        - Fixed job's data file detection code for LPRng.
117       
118        - Fixed a problem with PJL and PowerSave mode,
119          thanks to Wilson Roberto Afonso.
120       
121    - 1.21alpha3 :
122   
123        - PyKota can now generate its own banners, and either account
124          for them or not, depending on newly introduced directives
125          in pykota.conf
126          Thanks to Matt Hyclak for the patch.
127         
128    - 1.21alpha2 :
129   
130        - Installation script is now non interactive again, as it should
131          have stayed from the beginning. Dependencies checking can
132          be done by launching the checkdeps.py command.
133         
134    - 1.21alpha1 :
135   
136        - added an IPP messages miniparser. Extraction of the client
137          hostname is now considered to be fiable, at least until
138          the CUPS developpers change something...
139       
140    - 1.20 :
141   
142        - Version number changed.
143       
144    - 1.20beta :
145   
146        - Norwegian (Bokm� preliminary translation added.
147       
148        - German translation was finalized.
149       
150        - Greek translation was finalized.
151       
152        - For urgent legal reasons, a "privacy" directive has been added
153          to pykota.conf, to hide jobs' title, filename and options
154          in the history.
155         
156        - Minor changes in the debian directory.
157       
158    - 1.20alpha27 :
159   
160        - Fixed many problems with translation files. In particular
161          the brasilian portuguese translation file was incorrectly
162          installed into the french "breton" locale directory.
163         
164        - Finished French translation. 
165         
166    - 1.20alpha26 :
167   
168        - LPRng support code should now better detect network
169          printers' hostnames or IP addresses.
170         
171        - Fix for recently introduced bug in LPRng support.
172       
173        - Fix for incorrect locale setting when starting.
174       
175    - 1.20alpha25 :
176   
177        - pkprinters allows --list to normal users, but require user
178          to be a PyKota administrator when another command line
179          option is used.
180         
181        - pkhint doesn't use absolute path to search for helper commands
182          anymore.
183         
184        - Spanish translation ready for 1.20.   
185       
186    - 1.20alpha24 :
187   
188        - Now warnpykota only warns users limited by balance once.
189       
190        - Now warnpykota only warns users who have ever printed,
191          to not cause confusion to users who have just opened
192          their account.
193       
194        - Prepared help messages for translations.
195       
196    - 1.20alpha23 :
197   
198        - Add workaround for locale problem.
199       
200    - 1.20alpha22 :
201   
202        - Hopefully final fix for data encoding charset.
203       
204        - edpykota now refuse to work if the user is not a PyKota admin.
205       
206        - Fixes a recently introduced bug with users groups and PostgreSQL.
207       
208    - 1.20alpha21 :
209   
210        - Now dumpykota refuses to launch if the current user is not
211          a PyKota administrator (a PyKota administrator is an user
212          allowed to read the pykotadmin.conf file).
213         
214        - Now any PyKota administrator can use repykota and warnpykota
215          with additionnal arguments, not only the root user.
216         
217        - Improved documentation a bit.
218       
219    - 1.20alpha20 :
220   
221        - Reduced delay in internal SNMP and PJL_over_TCP handlers
222          from 2 to 1 second.
223       
224        - dumpykota can now output XML.
225       
226    - 1.20alpha19 :
227   
228        - Improved user groups and user groups quotas dumps in dumpykota.
229       
230        - Finished implementation of LDAP support in dumpykota.
231       
232        - The md5 sum of the job's datas is now available as an
233          hexadecimal digest in the PYKOTAMD5SUM environment variable.
234         
235        - The description, filename, title, and options fields
236          are now stored as UTF-8 strings in both LDAP and PostgreSQL.
237          Proper charset is used during extraction from the database.
238         
239    - 1.20alpha18 :
240   
241        - Experimental autopykota command to initialize user
242          account and quota entries on first print while not
243          resetting the balance value if not needed.
244         
245        - Added the new "winbind_separator" directive to strip
246          out the Samba/Winbind domain name while printing if
247          needed (Off by default).
248         
249    - 1.20alpha17 :
250   
251        - Added --hardreset command line option to edpykota.
252       
253        - Fixed problem with accented chars in title, filename
254          or options and LDAP backend.
255         
256    - 1.20alpha16 :
257   
258        - Internal handling of socket based PJL queries over
259          port tcp/9100 is now available with the magic
260          'pjl' value in the hardware accounter.
261         
262    - 1.20alpha15 :
263   
264        - LDAP pykotaAccountBalance objects were always created
265          attached to the pykotaUser objects. This is now
266          fixed and the value of balancebase in pykota.conf
267          is now correctly used.
268         
269    - 1.20alpha14 :
270   
271        - Belgian translations added (copy of the french ones).
272       
273        - External hardware accounter now loops until
274          a result can be read correctly.
275         
276        - pkhint now suggest the internal snmp handling instead
277          of the external one.
278         
279    - 1.20alpha13 :
280     
281        - Hardware accounter now accepts the special
282          'snmp' value, meaning ALL is done from main code
283          without launching any subprocess.
284          You need the http://pysnmp.sf.net Python module
285          for this to work (tested with v3.4.2)
286         
287        - Increased delay between two loops iterations 
288          to 2 seconds in waitprinter.sh to diminish
289          CPU load.
290         
291    - 1.20alpha12 :
292   
293        - waitprinter.sh rewritten from scratch to wait
294          for printer status stabilization.
295       
296    - 1.20alpha11 :
297   
298        - Generic data dumper 'dumpykota' introduced.
299          Works only with PostgreSQL backend for now.
300         
301    - 1.20alpha10 :
302   
303        - Added fix for incorrect job's size computation when
304          hardware accounting fails.
305         
306    - 1.20alpha9 :
307   
308        - Small fixes wrt subprocesses.
309       
310    - 1.20alpha8 :
311   
312        - Added full support of PCL3 : HP Deskjet printers are now
313          supported.
314       
315    - 1.20alpha7 :
316   
317        - First draft of PCL3GUI (Deskjet 640C for example) analyzer.
318          Needs more work, but no documentation is available.
319       
320    - 1.20alpha6 :
321     
322        - Improved mailandpopup.sh script.
323       
324        - Small fixes for LPRng.
325       
326        - Now exports PYKOTAPRINTERHOSTNAME for network printers'
327          hostname or IP address. Set to 'localhost' when not
328          meaningful.
329         
330        - Fixed issue with how mod_auth_ldap Apache modules
331          fills the REMOTE_USER environment variable.
332         
333        - Fixed a bug in LDAP user deletion code.
334       
335    - 1.20alpha5 :
336     
337        - Introduces the new configuration directive 'onaccountererror'
338          to specify what must be done whenever the software or
339          hardware accounter fails. Allowed values are 'continue' and
340          'stop' (default).
341         
342        - Minor fix in software accounter for a recently introduced
343          problem.
344         
345    - 1.20alpha4 :
346   
347        - Added support for more ghostscript devices in ESC/P2
348          analyzer : stcolor, st800, escp, escpc are now supported.
349         
350    - 1.20alpha3 :
351       
352        - Small improvement in PostScript parser to avoid being
353          fooled by a change in number of copies :
354          The user can't ask for 200 copies of page 1 and 1 copy
355          of page 2 to fool PyKota anymore :
356          this would have been accounted for as 1 copy only, but
357          now the maximum value seen is used.
358         
359        - Relax checks for PCL5 header to accomodate some strange
360          printer drivers.
361         
362        - Now hardware accounting method works like software
363          accounting method wrt the subprocess' output.
364         
365        - Hardware and Software accounting stop the print queue 
366          when the accounting subprocess didn't work. This will
367          be configurable in the near future.
368         
369    - 1.20alpha2 :
370   
371        - Now software accounting method reads accounter's
372          answer until a line with a single integer is
373          obtained or until all of its output has been read.
374          This should fix the problem some people have
375          when strange locale related messages are sent
376          when running subprocesses (Solaris only ?).
377         
378        - First version of ESC/P2 analyzer. Seems to work
379          ok at least with 'epson', 'epsonc', 'eps9mid'
380          and 'esp9high' ghostscript devices. Needs more
381          work to correctly analyze other devices.
382       
383    - 1.20alpha1 :
384   
385        - Fixed problem with number of copies in PCLXL parser.
386       
387        - Fixed problem with number of copies in PCL5 parser,
388          when number of copies was set outside of and before first
389          page.
390       
391        - Added workaround for number of copies directly set in
392          PostScript code.
393         
394        - Added german translation.
395       
396        - Fixed problem on first print for user group quota when
397          "enforcement: strict" is used.
398       
399        - Fixed interpolation problem in french translation.
400       
401    - 1.19 :
402   
403        - Updated existing translations.   
404       
405        - Added final Thai and Greek translations.
406       
407        - Minor last minute bug fixes.
408       
409    - 1.19beta :
410   
411        - LPRng support for both software and hardware accounting seems
412          to be OK.
413         
414        - Translation files fixed because of fuzzy matching problem. 
415       
416        - Fixed path to Swedish translation: 'sv' instead of 'se'.
417       
418        - Added first draft of Thai translation.
419       
420        - Fixed some minor bugs with Pychecker.
421       
422    - 1.19alpha35 :
423   
424        - Generic PDL analyzer now supports Binary PostScript documents
425          in addition to DSC compliant ones.
426       
427    - 1.19alpha34 :
428   
429        - LPRng support : software accounting seems to work fine,
430          but hardware accounting doesn't work yet.
431   
432    - 1.19alpha33 :
433   
434        - pykosd now accepts command line arguments. Enjoy !
435          NB : due to a bug in xosd, you need xosd version 2.2.8
436          or higher if you don't use the default C locale.
437         
438    - 1.19alpha32 :
439   
440        - Early (not working) version of the LPRng support rewrite.
441       
442        - Saner default configuration file.
443       
444    - 1.19alpha31 :
445   
446        - Fixed a double Python2.1 incompatibility with newer versions,
447          which prevented the PCL5 and the PCLXL parsers to work with
448          this older version of Python.
449         
450    - 1.19alpha30 :
451   
452        - Introduction of preliminary version of the pykosd command
453       
454        - Usernames, Groupnames and Printernames can now contain
455          ANY character, expected '/' and '@'.
456       
457        - Integrated most of the Debian work from Sergio
458          Gonz�z Gonz�z
459         
460    - 1.19alpha29 :
461   
462        - PCLXL parser should now correctly handle number of
463          copies set for each page.
464         
465        - Added testsuite for generic PDL analyzer.
466       
467        - Typo fixed in PCLXL parser.
468       
469        - Correctly dispatches error messages depending on the
470          situation : tools which can be run interactively will
471          ALWAYS output their logs to stderr, excepted for
472          their DEBUG messages, for which the "logger:"
473          directive as set in pykota.conf will be honored.
474          Tools which can't be run interactively will ALWAYS
475          honor the "logger:" directive as set in pykota.conf
476         
477    - 1.19alpha28 :
478   
479        - The description field for printers can now be set,
480          and is displayed in reports.
481         
482        - Fixed a small problem in SQL backend code.
483         
484        - Improved pkhint
485       
486        - First working PCL6 (aka PCLXL) parser !
487          Doesn't handle copies yet.
488       
489    - 1.19alpha27 :
490   
491        - Additionnal 10% speed increase in PCL5 parser for GhostScript
492          generated files (untested yet with other PCL files).
493         
494        - Reintroduced the use of mmap in PCL5 parser : this speedups
495          PCL5 parsing by almost 4 times.
496          This 4x with the 3x below give us in fact a twelvefold increase
497          in performance for PCL5 parsing !
498         
499        - The Python accelerator Psyco is now used if available
500          in the generic PDL parser : it speedups PCL5 parsing by
501          almost three times automagically.
502         
503    - 1.19alpha26 :
504   
505        - Fixed PCL5 parser according to the sources of rastertohp.
506       
507        - Fixed number of copies handling in PCL5 parser : the number
508          of copies could vary from page to page.
509         
510        - Added more debug information to PCLXL parser. 
511       
512    - 1.19alpha25 :
513   
514        - Added new "description" field to printers in both
515          PostgreSQL and LDAP. No code to handle this yet.
516         
517        - Reversed the fix for power save mode in printers : 
518          no paper or tray open would have caused people to
519          be undercharged.
520         
521        - Preliminary version of MySQL initialization script.
522         
523    - 1.19alpha24 :
524   
525        - Native PDF parsing code now works perfectly with
526          Python 2.1 and above, and is way faster than before.
527          GhostScript is not used anymore to convert PDF to PS,
528          because PDF is parsed directly.
529         
530    - 1.19alpha23 :
531   
532        - Fixed waitprinter.sh wrt PowerSave mode and some
533          printers. Thanks to Ryan Suarez.
534       
535        - Smart PDL analyzer now recognizes PDF too : two
536          PDF parsing methods are used : a native one which
537          is very fast but requires Python 2.3 or above, and
538          a slower one which uses Ghostscript. PyKota detects
539          automatically which method to use depending on your
540          version of Python.
541       
542        - All tracebacks now include PyKota's version number.
543         
544    - 1.19alpha22 :
545   
546        - Ensures that the file pointer for job's data is
547          reset to the start of the job's datas after the
548          job's size pre-computation phase.
549         
550        - Improved PostScript detection code for bad drivers
551          which don't correctly switch languages between PJL
552          and PS.
553       
554        - Even better debugging code.
555       
556    - 1.19alpha21 :
557   
558        - Additionnal check.
559       
560    - 1.19alpha20 :
561   
562        - More complete logging messages wrt accounters.
563       
564        - Now catches early failures occuring when the configuration
565          files are parsed.
566       
567    - 1.19alpha19 :
568   
569        - Fixed over-verbose exits when displaying help
570          or version.
571         
572        - Extended some PATH in the shell scripts 
573       
574        - Deleting an user now also deletes his payments history.
575       
576        - Doesn't explicitely ignore SIGCHLD anymore. This seems to
577          cause problems.
578
579    - 1.19alpha18 :
580   
581        - History of payments is now stored in the database, and
582          updated each time an user's balance is modified with
583          edpykota --balance. This history represents each time
584          the user was given some positive or negative credit,
585          but doesn't reflect price paid for jobs, which appear
586          in the jobs history instead.
587         
588        - Jobs history web reports now include the job's size in
589          bytes. Also columns were reordered to render the report
590          more easily readable.
591         
592    - 1.19alpha17 :
593   
594        - Mysterious bug (program exited unexpectedly without leaving
595          any log message) which occured once in a while when
596          cancelling jobs should be fixed now.
597         
598        - New 'crashrecipient' directive. Disabled by 
599          default. See sample configuration file to see how
600          to activate it. It is suggested that you activate it.
601         
602        - New PYKOTAJOBSIZEBYTES environment variable exported, 
603          which contains the job's size in bytes. Empty jobs
604          are now denied. This value is now stored in the job
605          history (but not yet displayed from the web interface)
606         
607        - Preliminary work on payments storage : the PostgreSQL 
608          and LDAP schemas should be OK now, but no code is written
609          yet to support this functionnality.
610         
611    - 1.19alpha16 :
612   
613        - the newuser and newgroup LDAP specific directives now accept
614          a second parameter to attach(), "fail" or "warn". If no entry
615          is found to attach PyKota attributes to, and "fail" was used,
616          then action is aborted and program exits in error. If "warn"
617          is used, a new entry is created but a warning message is logged.
618         
619        - The job's originating hostname is now stored in the database,
620          and exported as PYKOTAJOBORIGINATINGHOSTNAME in the environment.
621       
622    - 1.19alpha15 :
623   
624        - The old pykota filter is now removed. This means that
625          currently PyKota doesn't support LPRng anymore, but
626          LPRng support will be re-added, improved, in the near future.
627         
628    - 1.19alpha14 :
629   
630        - PYKOTAPRECOMPUTEDJOBSIZE and PYKOTAPRECOMPUTEDJOBPRICE
631          are now exported as environment variables.
632         
633        - Heavy CPU usage is now completely fixed it seems, by
634          introducing some 0.01 second sleeping when nothing to do.
635         
636        - Pre-computation of the job's size is now only
637          done when enforcement is "STRICT", this saves
638          CPU for people who don't want to use this new
639          feature.
640         
641        - New 'enforcement' directive which accepts either
642          STRICT or LAXIST. See sample configuration file
643          for details.
644         
645    - 1.19alpha13 :
646   
647        - Get back to an old version of the polling loop which
648          worked fine, but non-optimally. Will be optimized
649          as time permits.
650         
651    - 1.19alpha12 :
652   
653        - Job's size is now precomputed unconditionnally using
654          the generic PDL analyzer.
655          NB : This value is not yet used to pre-allow/deny the
656          job.
657       
658    - 1.19alpha11 :
659   
660        - The pykota filter is now completely deprecated and
661          can't be used anymore. LPRng users MUST download
662          an older version of PyKota. CUPS users MUST use
663          cupspykota. Better support for LPRng will come
664          in the near future.
665         
666    - 1.19alpha10 :
667   
668        - pykotme now uses generic PDL Analyzer directly instead
669          of spawning a new process.
670         
671        - Improvements to generic PDL Analyzer.
672       
673        - 25% Speedup in PCL parser. Getting more of the Python version
674          will probably be difficult, since the completely table driven
675          parser I wrote is slower than the original algorithm. Then,
676          the original algorithm is still used for now.
677          Probable that more speed could be achieved using mmap, at the
678          expense of severe memory consumption.
679       
680        - configuration simplifications : the "accounter" directive's
681          'hardware' arguments now accepts what was in the "requester"
682          directive as it's content. The "requester" directive is not
683          supported anymore. See sample configuration file for details.
684       
685    - 1.19alpha9 :
686       
687        - pkpgcounter is now just a wrapper around the PDLAnalyzer class
688       
689        - pykotaOptions LDAP attribute now accepts non-ascii characters
690          too.
691         
692        - First try at cupspykota main loop rewrite
693       
694    - 1.19alpha8 :
695   
696        - 'querying' accounting method is now called 'hardware'
697       
698        - 'external' accounting method is now called 'software'
699       
700        - 'stupid' accounting method doesn't exist anymore
701       
702        - 'snmp' requester doesn't exist anymore
703       
704        - code simplifications in external requester
705       
706    - 1.19alpha7 :
707     
708        - Database schema change (both LDAP and PostgreSQL) to
709          allow storage of the job-originating-hostname attribute.
710          An SQL upgrade script is present. The code is not yet
711          capable of setting/retrieving this attribute. Support
712          for this functionnality will be added in the future.
713         
714    - 1.19alpha6 :
715   
716        - problems connecting to SMTP servers are now catched.
717       
718        - pykotme now uses pkpgcounter to compute the size of the
719          job. This modification adds PCL5 and soon PCLXL (PCL6)
720          support. You can now get quotes for PCL in addition to
721          PostScript.
722         
723        - pkpgcounter now includes first try at PCLXL parser. 
724          It is currently disabled until it's finished.
725         
726    - 1.19alpha5 :
727   
728        - cupspykota polling loop fix for MacOSX (at least)
729       
730        - logging subsystem now logs PID too, to ease diagnosing
731          problems under heavy load.
732         
733        - pkpgcounter enhancements.
734       
735        - pkprinters --skipexisting now tells pkprinters to not
736          modify existing printers when --add is used.
737          pkprinters logs a warning message whenever --add is
738          used and a printer already exists.
739         
740        - LDAP schema now allows accented chars in pykotaFileName
741          and pykotaTitle attributes.
742       
743    - 1.19alpha4 :
744   
745        - a bad copy&paste prevented pkpgcounter to work at all, this
746          is now fixed.
747         
748        - improved PCL support in pkpgcounter, with the use of
749          HP PCL/PJL Reference Set
750          PCL5 Printer Language Technical Quick Reference Guide
751       
752        - pkpgcounter now uses mmap to speed things up : duration
753          is halved with the sample 87 pages PCL document I use for
754          testing.
755         
756    - 1.19alpha3 :
757   
758        - pkprinters now accepts the --list command line argument
759          to list informations about printers.
760         
761    - 1.19alpha2 :
762   
763        - pkpgcounter is now included as a smart external
764          accounter which can handle both PostScript and PCL.
765         
766    - 1.19alpha1 :
767   
768        - PYKOTALIMITBY environment variable is now exported too.
769       
770        - Inclusion of Michele Baldessari's work on autotools.
771       
772    - 1.18 :
773   
774        - Improved documentation
775       
776    - 1.18beta2 :
777     
778        - Fix for raw jobs with cupspykota
779       
780    - 1.18beta :
781   
782        - Small fix for new waitprinter.sh script
783       
784        - Better tracebacks on error conditions
785       
786        - Improved translations
787       
788        - Improved documentation
789       
790    - 1.18alpha15 :
791
792        - waitprinter.sh replaced by a new and possibly faster
793          and more powerful one.
794   
795        - Names can now begin with a digit.
796       
797        - Stability improvement for quotas set on printers groups.
798       
799    - 1.18alpha14 :
800   
801        - Catches more (all ?) problems with SMTP servers instead
802          of breaking.
803         
804        - Italian translation added.
805       
806    - 1.18alpha13 :
807   
808        - Pre and Post hooks are now available in the pykota
809          filter as well.
810         
811        - The pykota filter doesn't check last user's quota
812          anymore when delayed hardware accounting is used :
813          this will be done anyway the next time the last
814          user will print again. This saves some database
815          queries which are unneeded.
816       
817    - 1.18alpha12 :
818   
819        - Pre and Post hooks to external commands with many
820          many environment variables available are useable
821          from the cupspykota backend.
822          See sample configuration file for details and help.
823         
824    - 1.18alpha11 :
825   
826        - Hopefully final fix wrt groups (users and printers)
827       
828    - 1.18alpha10 :
829   
830        - Fixed nested printer groups accounting.
831       
832        - Fixed user groups + printer groups problem.
833       
834    - 1.18alpha9 :
835   
836        - Fix for LDAP problem when job price was 0.
837       
838        - Fix for empty user groups with LDAP.
839       
840        - Preliminary version of the snmpprinterstatus command added.
841       
842    - 1.18alpha8 :
843   
844        - Don't retrieve data when not needed.
845          This avoids many database queries.
846       
847    - 1.18alpha7 :
848   
849        - New experimental ldapcache directive to improve
850          LDAP caching.
851         
852    - 1.18alpha6 :
853       
854        - New configuration directive added : maildomain
855          to specify the domain to send mail to when user
856          email address is not set in PyKota database.
857         
858        - More complete email message headers. 
859         
860    - 1.18alpha5 :
861   
862        - Debian packaging specific files, contributed by
863          Peter Hawkins are now included in the project's tree.
864         
865        - Preliminary work on future low-level LDAP caching to speed
866          up modifications (at least).
867         
868    - 1.18alpha4 :
869   
870        - Applied some of the modifications suggested by
871          Peter Hawkins, for better Debian integration.
872          Most notably cupspykota, pykota, and the shell
873          scripts are now installed into /usr/share/pykota
874          instead of into /usr/bin
875          BEWARE : double check that your symbolic link
876          to cupspykota is correct, and that your pykota.conf
877          file use correct path for the shell scripts like
878          waitprinter.sh and al.
879         
880        - pkhint command added, to help in configuring correct
881          accounting method for PyKota.
882         
883    - 1.18alpha3 :
884   
885        - Fixed a rare bug in cupspykota backend which gave
886          incorrect "CUPS backend died abnormally" messages.
887       
888    - 1.18alpha2 :
889   
890        - Added the pkprinters command line tool to manage printers
891          exclusively.
892       
893    - 1.18alpha1 :
894   
895        - Preliminary work on Relationnal Database Independance.
896       
897        - Sample report made from OpenOffice.org added as PDF and SXC.
898       
899    - 1.17 :
900   
901        - Finalized release.
902       
903    - 1.17alpha2 :
904   
905        - Fix stupid software accounting bug in the CUPS backend.
906       
907    - 1.17alpha1 :
908   
909        - User/Group deletion code in edpykota rewritten.
910       
911    - 1.16 :
912   
913        - Preliminary documentation on how to use OpenOffice.org
914          to create personnalized reports for PyKota + PostgreSQL.
915         
916        - Spanish installation guide for CUPS+PyKota+PostgreSQL
917          added to the documentation. Doesn't yet document v1.16
918          though.
919       
920        - Portuguese Portuguese translation replaces Brasilian
921          Portuguese Translation. Brasilian portuguese
922          translation is still available under the 'br' locale.
923       
924    - 1.16beta3 :
925   
926        - Swedish translation added.
927       
928        - Small fix in documentation.
929       
930    - 1.16beta2 :
931   
932        - Small fix for job cancelling code while job already
933          printing in CUPS backend.
934         
935        - Big fix wrt printing policies for unknown users. 
936       
937    - 1.16beta1 :
938   
939        - Manpages upgraded.
940       
941    - 1.16alpha26 :
942   
943        - Job price is now computed like this :
944       
945          SUM((NbPages * PricePerPage) + PricePerJob)
946         
947          For current printer and all the printers groups it is
948          a member of, if any.
949         
950          This may be difficult to grasp, but offers unprecedented
951          flexibility.
952         
953    - 1.16alpha25 :
954   
955        - Email address can be set at user creation time,
956          using the following syntax :
957         
958            $ edpykota --add username/email@yourdomain.com
959       
960    - 1.16alpha24 :
961   
962        - CGI script now can show the printing history.
963       
964        - Bug wrt number of copies should be fixed.
965       
966        - Major code refactoring => It is now possible to
967          automatically add printers on first print.
968       
969    - 1.16alpha23 :
970   
971        - Fixed potential accuracy problem if a user printed on
972          several printers at the very same time.
973       
974    - 1.16alpha22 :
975   
976        - edpykota now allows adding printers to printer groups
977       
978    - 1.16alpha21 :
979   
980        - Allows the dot in user and printer names.
981       
982        - Printer groups are now cached too.
983       
984    - 1.16alpha20 :
985   
986        - Fixed several small bugs with the help of PyChecker.
987       
988    - 1.16alpha19 :
989     
990        - Fixed a bug in PostgreSQL backend's code.
991       
992    - 1.16alpha18 :
993   
994        - Initial code for printer groups support. Printer groups have
995          to be added with external tools like psql or gq for example.
996          Printer groups seems to work fine with users. Untested with user
997          groups for now.
998
999        - Several minor visual problems fixed in reports.
1000       
1001        - Fixed a bug in LDAP date handling.
1002       
1003        - Fix for LDAP problem with some combination of OpenLDAP + Python-LDAP
1004          + some particular settings.
1005         
1006        - mailandpopup.sh shell script added. See sample configuration file
1007          for details.
1008       
1009        - Several environment variables are now exported when executing
1010          external commands (accounters, requesters, mailers) :
1011           
1012            PYKOTAUSERNAME => user who is printing
1013            PYKOTAPRINTERNAME => printer on which the job is being sent
1014            PYKOTATITLE => Job's title
1015            PYKOTAFILENAME => Job's filename
1016            PYKOTACOPIES => number of copies asked
1017            PYKOTAOPTIONS => print command options (-o with CUPS)
1018         
1019    - 1.16alpha17 :
1020   
1021        - Added portugues translation.
1022       
1023        - Major code refactoring in accounters.
1024       
1025    - 1.16alpha16 :
1026   
1027        - Code refactoring, and addition of a real HTML reporter, to
1028          have nice looking and useful web based reports (in the future).
1029       
1030        - Added utolower configuration option to convert all usernames
1031          to lowercase during printing.
1032         
1033    - 1.15alpha15 :
1034   
1035        - Now includes the papwaitprinter.sh shell script to wait for
1036          AppleTalk enabled printers.
1037         
1038    - 1.16alpha14 :
1039   
1040        - Now printing on a printer not defined in the Quota Storage,
1041          results in the job being cancelled or stopped, depending
1042          on the printing system.
1043         
1044    - 1.16alpha13 :
1045   
1046        - Small bugfix wrt Python v2.1
1047       
1048        - If username is an empty string, user root is assumed.
1049       
1050        - 'postgresql' is not recognized anymore as a storage backend,
1051          you have to use 'pgstorage' instead. 'postgresql' used to
1052          be supported for compatibility with very old PyKota versions,
1053          this is not the case anymore.
1054         
1055    - 1.16alpha12 :
1056   
1057        - Job price added to job history, to keep accounting correct
1058          if a printer price per page or per job is modified and the
1059          history is not reset : the history would have given a false
1060          amount of money charged before the printer's prices were
1061          modified, this addition solves the problem.
1062         
1063    - 1.16alpha11 :
1064   
1065        - Some preliminary modifications to the database structure for
1066          PostgreSQL and OpenLDAP. A script to upgrade a PostgreSQL
1067          database is now provided. LDAP attributes now support
1068          eq, pres and sub indexes.
1069         
1070        - Job history now contains additional informations : 
1071          number of copies, filename, title and print options.
1072         
1073    - 1.16alpha10 :
1074       
1075        - Some modifications done to external policy handling.
1076          See sample configuration file for details.
1077   
1078        - Spanish translation added.
1079       
1080    - 1.16alpha9 :
1081   
1082        - mailto can be set to external(...) to warn users above
1083          quota with any command of your choice (e.g. linpopup).
1084          Several parameters are available, see sample configuration
1085          file for details.
1086         
1087    - 1.16alpha8 :
1088   
1089        - Now cupspykota transmits SIGTERMS to the original 
1090          backend when the user deletes a job being processed.
1091         
1092        - The documentation is now licensed under the terms of the
1093          GNU GPL too.
1094         
1095    - 1.16alpha7 :
1096   
1097        - The CUPS backend is now fully functionnal (it seems).
1098       
1099        - From now on, the use of the pykota filter with CUPS
1100          is deprecated. The pykota filter still has to be
1101          used with LPRng though.
1102       
1103    - 1.16alpha6 :
1104   
1105        - Bug fixed : when edpykota was used to add a printer
1106          with no user or group name, a bad user/group name "*" was
1107          added to the database.
1108         
1109    - 1.16alpha5 :
1110   
1111        - New CUPS backend supports device enumeration !
1112          This means that NO manual CUPS configuration has to
1113          be done. All can now be done from CUPS web interface.
1114       
1115    - 1.16alpha4 :
1116   
1117        - New CUPS backend added.
1118       
1119    - 1.16alpha3 :
1120       
1121        - Minimal FAQ document added.
1122       
1123    - 1.16alpha2 :
1124   
1125        - CGI script now partially supports browser's language preference
1126       
1127    - 1.16alpha1 :
1128   
1129        - Ensures that the LDAP connection is really closed at end.
1130       
1131        - More complete error messages in case of LDAP operation failure.
1132       
1133    - 1.15 :
1134     
1135        - Documentation improved.
1136       
1137    - 1.15beta :
1138   
1139        - Command line tools now accept multiple printer
1140          names or wildcards, separated with commas.
1141         
1142    - 1.15alpha9 :
1143   
1144        - External policy can be used to auto-add unknown users
1145          and any other interesting things you may want to do.
1146          WARNING : You can't auto-add printers for now.
1147          They have to be created manually before.
1148          Look at sample configuration file for examples.
1149         
1150    - 1.15alpha8 :
1151   
1152        - Job history can be disabled if needed.
1153          This feature may be useful for people who use the LDAP
1154          backend and don't want their LDAP tree to grow out of
1155          control.
1156       
1157    - 1.15alpha7 :
1158   
1159        - More work done on caching wrt groups.
1160       
1161    - 1.15alpha6 :
1162   
1163        - Performance bottleneck with LDAP solved.
1164       
1165    - 1.15alpha5 :
1166   
1167        - Caching mechanism for all database queries.
1168
1169    - 1.15alpha4 :
1170   
1171        - Problem with Python 2.3 fixed. Needs some definitive
1172          modification.
1173         
1174    - 1.15alpha3 :
1175   
1176        - CGI script now tries to restrict view when the
1177          REMOTE_USER environment variable is set. This allows
1178          people to protect its use with .htaccess files.
1179          When unprotected, or if REMOTE_USER is 'root', then
1180          unrestricted access is granted.
1181          NB : REMOTE_USER is automatically set by the web server
1182          (e.g. Apache) when a page with restricted access is viewed.
1183         
1184    - 1.15alpha2 :
1185   
1186        - Better detection of LPRng.
1187       
1188        - Outputs a warning if printing system is unknown.
1189       
1190    - 1.15alpha1 :
1191   
1192        - Bug fix in SQL code.
1193       
1194    - 1.14 :
1195   
1196        - The PostgreSQL database connection is now always closed before
1197          exit. The LDAP database connection too, but it didn't suffer
1198          from the problem anyway, AFAICT.
1199       
1200    - 1.14beta2 :
1201   
1202        - An LDAP-specific configuration field was introduced, usermail.
1203          Use it to specify which LDAP attribute contains a valid email
1204          address for the user. See sample configuration file for
1205          details.
1206       
1207    - 1.14beta :
1208   
1209        - Two new LDAP-specific configuration fields were introduced,
1210          newuser and newgroup. Use them to specify if you want to add
1211          quota information to existing entries or elsewhere.
1212          See sample configuration file for details.
1213         
1214    - 1.14alpha9 :
1215   
1216        - Documentation improved.
1217       
1218        - pykotme now also prints the user's account balance value
1219          if the user is registered in the Quota Storage and his
1220          limiting factor is "balance".
1221         
1222    - 1.14alpha8 :
1223   
1224        - bin/waitprinter.sh is now included to wait for
1225          SNMP enabled printers to be idle again before
1226          asking for their internal page counter.
1227          See sample configuration file for details.
1228         
1229    - 1.14alpha7 :
1230   
1231        - edpykota now doesn't check if the user/group is above
1232          quota. The check is only done at print time. This
1233          prevents the sending of email messages when creating
1234          user quotas if quota is already reached at creation
1235          time.
1236         
1237    - 1.14alpha6 :
1238   
1239        - Configuration file split and moved to /etc/pykota/pykota.conf
1240          and /etc/pykota/pykotadmin.conf to prevent simple users to
1241          have Read/Write access to the Quota Database.
1242          Don't forget to :
1243         
1244                $ chmod 640 /etc/pykota/pykotadmin.conf
1245               
1246        - storageuser and storageuserpw configuration fields reintroduced
1247          for the same reason.
1248         
1249        - Code cleaning for future implementation of email addresses
1250          support in the PostgreSQL and LDAP backends.
1251         
1252    - 1.14alpha5 :
1253       
1254        - Big bug fixed when changing the prices for a printer
1255       
1256    - 1.14alpha4 :
1257   
1258        - When adding an user, the user itself and its account balance
1259          are now added in the same LDAP entry. Before they were added
1260          as two different LDAP entries.
1261         
1262    - 1.14alpha3 :
1263   
1264        - Email field added to PostgreSQL database. An upgrade script
1265          is included in initscripts/postgresql.
1266       
1267    - 1.14alpha2 :
1268   
1269        - Typo fixed when using the --prototype option to edpykota
1270       
1271    - 1.14alpha1 :
1272   
1273        - Poor man's treshold included : users with a low account
1274          balance (below 1.0 by default, configurable) are sent
1275          a warning message.
1276         
1277        - All warning messages to users are now configurable. 
1278          NB : Warning messages to the administrator are not.
1279       
1280    - 1.13 :
1281   
1282        - Some small fixes wrt group handling.
1283       
1284        - The whole module code was passed through PyChecker and
1285          several small code inconsistencies were fixed,
1286          as well as a bug in the groups code.
1287         
1288    - 1.13alpha1 :
1289   
1290        - Bug fix wrt LDAP.
1291       
1292    - 1.12 :
1293   
1294        - More complete test added in edpykota.
1295       
1296    - 1.12alpha2 :
1297   
1298        - The previous bug fix was incomplete. This is corrected.
1299       
1300    - 1.12alpha1 :
1301   
1302        - Small bug fix.
1303       
1304    - 1.11 :
1305   
1306        - Now includes the pykotme command line tool, to produce
1307          printing quotes for users.
1308         
1309    - 1.10 :
1310   
1311        - Bug fixed wrt quota reports when print limiting is by
1312          account balance.
1313         
1314    - 1.09 :
1315   
1316        - Translations finalized.
1317       
1318        - Manpages updated.
1319       
1320        - Installation documentation improved wrt LDAP support.
1321       
1322    - 1.09beta2 :
1323   
1324        - The CGI script for quota reports works again, and
1325          is much more powerful.
1326       
1327    - 1.09beta :
1328   
1329        - edpykota finalized
1330       
1331    - 1.09alpha2 :
1332   
1333        - LDAP schema modified a bit. Please upgrade.
1334       
1335        - LDAP backend works !
1336       
1337        - repykota and warnpykota allow the root user to pass
1338          users or groups names on the command line. Users
1339          and groups names may contain wildcards.
1340         
1341        - repykota and warnpykota only reports or warns the
1342          current user when launched by non-root users.
1343         
1344        - Minor bug fixes. 
1345   
1346    - 1.09alpha1 :
1347   
1348        - More work on LDAP storage backend. Many options
1349          were added to /etc/pykota.conf to give some
1350          hints to the LDAP storage backend.
1351         
1352        - Severe database access optimizations were done by
1353          rewriting most of the Quota Storage backends drivers.
1354     
1355    - 1.08 :
1356   
1357        - Major bug fix wrt LPRng support for remote jobs.
1358       
1359        - Major bug fix wrt increase/decrease account balances.
1360       
1361    - 1.08alpha8 :
1362   
1363        - Code refactoring.
1364       
1365        - A single user/password pair is used to connect
1366          to the database backend. The storageuser configuration
1367          field, and its associated passwords storageuserpw, are
1368          not used anymore.
1369         
1370        - You can now set PyKota in debug mode, see sample configuration 
1371          file for details.
1372          WARNING : only Quota Storage backend queries are logged in
1373          debug mode, for now.
1374       
1375    - 1.08alpha7 :
1376   
1377        - Very latest LDAP schema.
1378       
1379        - Code enhancement wrt easy pluggability of PyKota attributes
1380          and object classes into an existing LDAP directory.
1381       
1382    - 1.08alpha6 :
1383   
1384        - Minor bug corrections
1385       
1386        - More work on LDAP : new schema
1387       
1388    - 1.08alpha5 :
1389   
1390        - More good work on LDAP storage.
1391          repykota now works reasonably well with the sample LDAP directory.
1392       
1393    - 1.08alpha4 :
1394   
1395        - LDAP schema included.
1396          THIS IS JUST FOR PEOPLE TO DISCUSS ABOUT THIS.
1397          LDAP SUPPORT DOESN'T WORK YET, AND THE SCHEMA
1398          MAY CHANGE IN THE FUTURE. PLEASE TELL US
1399          WHAT YOU THINK ABOUT THIS SCHEMA ON THE
1400          MAILING LIST.
1401         
1402    - 1.08alpha3 :
1403   
1404        - External accounting methods were partly rewritten :
1405         
1406          - No more "broken pipe" should happen.
1407         
1408          - They now take care of the number of copies
1409            This may be unneeded though, if the postscript
1410            file already does this, because this would
1411            overcharge users (number of copies counted
1412            two times). NEEDS MORE TESTING.
1413           
1414          - The sample configuration file now contains 
1415            an external accounting method example which should
1416            work with all DSC compliant Postscript files.
1417           
1418        - Some small bugs were fixed.   
1419       
1420    - 1.08alpha2 :
1421   
1422        - Now works with net-snmp v5.0 and above.
1423          It already worked, but the sample configuration
1424          file didn't contain appropriate values...
1425       
1426    - 1.07 : Release of the Shame !
1427   
1428        - The external accounting methods driver was left out of
1429          the CVS tree. Nobody could use it since it wasn't included !
1430         
1431    - 1.06 :
1432   
1433        - Severe bug fixed : if you had a printer in
1434          power saving state which couldn't answer immediately,
1435          a bug was triggered.
1436          It was caused by a bad copy/paste which
1437          forgot to import a Python module at run time.
1438         
1439    - 1.05 :
1440   
1441        - External accounters are finally available !
1442          This means that you can plug any page accounting
1443          method you like by setting the appropriate
1444          'accounter' field in /etc/pykota.conf
1445          See the sample conf/pykota.conf.sample to
1446          learn how to do.
1447         
1448          NB : Both 'external' and 'stupid' accounting methods
1449               account a job size just before *this* job is
1450               sent to the printer.
1451               The original 'querying' method accounts a job
1452               size just before *the next* job is sent to
1453               the printer.
1454       
1455    - 1.05alpha3 :
1456   
1457        - A 'stupid' and unreliable accounting method was
1458          implemented to serve as an example on how to
1459          do this sort of things. This method only counts
1460          the 'showpage' statements in the input data.
1461          See sample configuration file for details.
1462          Pluggable accounting methods work, but I advise
1463          you TO NOT USE THIS ONE WHICH IS JUST AN EXAMPLE.
1464          It is not reliable enough to be used.
1465          Use the 'querying' accounting method instead.
1466         
1467    - 1.05alpha2 :
1468   
1469        - Pluggable accounting methods.
1470       
1471        - Better error handling.
1472       
1473    - 1.05alpha1 :
1474   
1475        - SECURITY file added to help improve PyKota's security.
1476       
1477        - Extracting the printer's internal page counter is now
1478          tried several times, waiting several seconds between
1479          two tries. This lets the time to warm up for some printers
1480          which don't answer when they are sleeping (my Apple
1481          LaserWriter 16/600 PS is in this case, maybe others too)
1482         
1483        - Small display bug fixed in repykota
1484         
1485    - 1.04 :
1486   
1487        - Default print policy for users/groups unknown from
1488          the print quota system is now DENY instead of ALLOW,
1489          since ALLOW can generate inaccurate results
1490          (incorrect job sizes charged to the wrong persons)
1491         
1492        - LPRng support works !
1493       
1494        - A bug was introduced some time ago wrt printers' default
1495          policy for unknown users. It is now corrected.
1496       
1497        - repykota now displays prices per job and per page for each
1498          printer, if they are defined.
1499         
1500        - Minor display bug fixed in repykota.
1501       
1502        - Problem when running repykota with an empty database was fixed.
1503       
1504    - 1.03 :
1505   
1506        - Upgrade script included for earlier versions.
1507          Please look inside the initscripts subdirectory.
1508          THE DATABASE SCHEMA HAS CHANGED, PLEASE UPGRADE.
1509         
1510        - repykota now reports account balances too.
1511       
1512        - PyKota now has a nice logo, see the logos
1513          subdirectory.
1514       
1515        - Manual pages were finally updated.
1516       
1517        - Group quotas seem to work now !
1518       
1519        - The new database schema allows to keep an history of all
1520          jobs as well as charge users per page and/or per job,
1521          and track users' account balance.
1522         
1523        - edpykota now accepts much more command line options to 
1524          use the new functionnalities. See edpykota --help for
1525          details.
1526         
1527        - The installation script now allows to install the sample
1528          configuration file during first installation.
1529         
1530        - More group quota code works, but still not finished. 
1531       
1532        - The CGI script displays a link to PyKota's website.
1533       
1534        - The job history is now kept, this will allow per-period
1535          reports in the future.
1536         
1537        - After having modified the quota for an user with edpykota,
1538          a quota check is done to eventually warn the user/admin about
1539          a quota which is too low to print.
1540         
1541        - A workaround is provided for HP Printers : their internal
1542          page counter is only saved to NVRAM in a 10 increment, so
1543          if you switch them off and then on, the reported page counter
1544          may be lower than the real number of pages printed.
1545          See http://web.mit.edu/source/third/lprng/doc/LPRng-HOWTO-15.html
1546          We unconditionnally set the last job's page count to
1547          abs(int((10 - abs(lastcounter(snmp) - lastcounter(storage)) / 2))
1548          in this case.
1549          For a more accurate accounting, never switch your HP printers
1550          off.
1551         
1552        - A fix is provided for printers which only have a volatile 
1553          page counter (reset to 0 every time you switch the printer on)
1554          This should allow PyKota to work reasonably fine with HP Laserjet
1555          4L/5L/6L, not perfect, but better than nothing.
1556          See http://web.mit.edu/source/third/lprng/doc/LPRng-HOWTO-15.html
1557          For a more accurate accounting, never switch your HP printers
1558          off. This is untested, please report any problem.
1559         
1560        - A bug was fixed when edpykota --add was used with users who already
1561          had a quota on the specified printer.
1562         
1563        - A small display bug in repykota was introduced in preliminary
1564          1.03 versions, and fixed later on.
1565         
1566        - Some minor bugs which happened in rare situations were fixed.
1567       
1568        - Support for AppleTalk printers was added, see sample configuration
1569          file for details.
1570         
1571        - Users and group printing can now be controlled (limited) either by 
1572          print quota or by account balance.
1573       
1574    - 1.02 :
1575   
1576        - The installation script now checks for software availability
1577          and in case a software is missing asks the user if he
1578          wants to continue with the installation or abort it.
1579         
1580        - The configuration file pykota.conf is now expected to be
1581          found in /etc instead of in /etc/cups
1582          The installation script prompts the user to see if he
1583          wants to move an old configuration file to the new location
1584          if needed.
1585         
1586        - Improved documentation.
1587       
1588        - You can now set the tcp/ip port on which the Quota Storage
1589          Server is listening, see sample configuration file for details.
1590       
1591        - Better general error handling.
1592       
1593        - Upgrade script for pre 1.01 PostgreSQL database schema is now
1594          included as well.
1595       
1596    - 1.01 :
1597   
1598        - The configuration file now accepts an option   
1599          to choose the recipient(s) of the email messages :
1600         
1601            - DevNull means no one will receive them.
1602            - User means only the user will receive them.
1603            - Admin means only the admin will receive them.
1604            - Both means the User and the Admin will receive them.
1605           
1606        - The configuration file now uses hard-coded default values
1607          when an option is not set. See sample configuration file
1608          for details.
1609         
1610        - Manual pages are included since 1.00, but I forgot to   
1611          add this information to this file.
1612         
1613        - Redistribution terms for the official package have 
1614          softened and are now fully GPL compatible :
1615          unrestricted modification is now allowed even for
1616          the version number.
1617         
1618    - 1.00 :
1619   
1620        - edpykota now accepts a --noquota option. This
1621          disable quota checking while still doing page
1622          accounting. This is really useful for people
1623          who don't want to limit their users but want
1624          to know how much pages they print.
1625         
1626        - Some untested scripts were added to retrieve
1627          the life time page counter of non-SNMP printers.
1628         
1629        - Every directory now has a specific README file. 
1630       
1631    - 0.99 :
1632   
1633        - Under some circumstances while the user wasn't allowed
1634          to print, he didn't receive any email message. It is
1635          now fixed.
1636         
1637        - When an user wasn't allowed to print, the quota for
1638          the previous user wasn't updated. This is now fixed.
1639         
1640    - 0.98 :
1641   
1642        - Correctly handle the case where the printer is switched off.
1643       
1644        - Small bug wrt syslog fixed.
1645       
1646    - 0.97 :
1647   
1648        - edpykota accepts wildcards on its command line for users/groups too
1649          if the --add option is not set, e.g. :
1650         
1651              $ edpykota --printer lp --softlimit 50 --hardlimit 100 "jer*"
1652             
1653        - If no user name is passed at all, then a default wildcard of "*"
1654          which means apply the command on ALL users for this printer is used.
1655         
1656        - Small bug fixes.
1657       
1658    - 0.96 :
1659
1660        - Options requester, policy, admin, adminmail and gracedelay can now
1661          be set either globally or per printer. The printer option has
1662          priority if both are defined.
1663
1664        - More powerful configuration parser.
1665       
1666        - If all options are defined globally, there's no need to
1667          define a section for each printer in the configuration
1668          file anymore. Just define a [global] section and it's ok.
1669
1670    - 0.95 :
1671
1672        - External requesters for printers finally added.
1673
1674        - Full internationalization (english and french are supported)
1675 
1676        - More complete quota usage report
1677
1678        - CGI script to access to the quota usage report
1679
1680        - Several bugs fixed.
1681
1682
1683    - 0.9 :
1684
1685        - First public version
Note: See TracBrowser for help on using the browser.