root / pykota / trunk / NEWS @ 2856

Revision 2856, 77.5 kB (checked in by jerome, 18 years ago)

Missing info in changelog...

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