root / pykota / trunk / NEWS @ 2222

Revision 2222, 61.9 kB (checked in by jerome, 19 years ago)

Fixed history retrieval for nonexisting printers or users

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