root / pykota / trunk / NEWS @ 2305

Revision 2305, 64.6 kB (checked in by jerome, 19 years ago)

Fixed internal SNMP accounter according to Jamuel's findings.

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