root / pykota / trunk / NEWS @ 2455

Revision 2455, 70.4 kB (checked in by jerome, 19 years ago)

Added the precomputed job's size and price to the history.

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