root / pykota / trunk / NEWS @ 1975

Revision 1975, 54.8 kB (checked in by jalet, 19 years ago)

Added a note about the recent change which is CUPS only for now.

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