root / pykota / trunk / NEWS @ 2581

Revision 2581, 71.9 kB (checked in by jerome, 18 years ago)

added note

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