root / pykota / trunk / NEWS @ 2308

Revision 2308, 65.1 kB (checked in by jerome, 19 years ago)

Extended syntax for the denyduplicates directive : it now
allows any external command to be launched, which will decide
if the dupes should be allowed or not.

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