root / pykota / trunk / NEWS @ 2266

Revision 2266, 63.3 kB (checked in by jerome, 19 years ago)

Now dumpykota and dumpykota.cgi accept start= and end=
to specify the starting and ending dates when dumping the
history.
Syntax allowed is :

start|end=YYYY[MM[DD[hh[mm[ss]]]]]

and this is REALLY powerful !

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