root / pykota / trunk / NEWS @ 3018

Revision 3018, 80.5 kB (checked in by jerome, 18 years ago)

Ensures that the billing code and username are encoded into the user's charset
after they have been overwritten through the overwrite_jobticket directive.

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