root / pykota / trunk / NEWS @ 2882

Revision 2882, 78.1 kB (checked in by jerome, 18 years ago)

Exports more environment variables.

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