root / pykota / trunk / NEWS @ 2276

Revision 2276, 63.8 kB (checked in by jerome, 19 years ago)

A positive or negative offset can be added to the special keywords in dumpykota's date filtering options

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