root / pykota / trunk / NEWS @ 3153

Revision 3153, 84.8 kB (checked in by jerome, 17 years ago)

Don't ask for confirmation anymore if there's not enough credits
to print.

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