root / pykota / trunk / NEWS @ 2749

Revision 2746, 76.2 kB (checked in by jerome, 19 years ago)

Updated manual pages for 1.24alpha13.

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