root / pykota / trunk / NEWS @ 2193

Revision 2193, 60.8 kB (checked in by jerome, 19 years ago)

pkbanner now accepts more info to display on its command line

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