root / pykota / trunk / NEWS @ 2188

Revision 2188, 60.7 kB (checked in by jerome, 20 years ago)

Fixes some case related problems with LDAP

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