root / pykota / trunk / NEWS @ 2028

Revision 2028, 56.6 kB (checked in by jalet, 19 years ago)

Modified copyright years

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