root / pykota / trunk / NEWS @ 3032

Revision 3032, 81.1 kB (checked in by jerome, 18 years ago)

Added some javascript form validation code to avoid common mistakes
and incompatibilities between output format and data type.

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