root / pykota / trunk / NEWS @ 2342

Revision 2342, 65.9 kB (checked in by jerome, 19 years ago)

The pkbcodes command line tool now works fine with the PostgreSQL
backend. The dumpykota command can now dump billing codes too.
Still no code for LDAP though.
NB : a database upgrade is necessary AGAIN !
Severity : no need to play with this until there's LDAP support.

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