root / pykota / trunk / NEWS @ 2466

Revision 2466, 70.8 kB (checked in by jerome, 19 years ago)

Much more powerful pkturnkey

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