root / pykota / trunk / NEWS @ 1968

Revision 1968, 54.3 kB (checked in by jalet, 19 years ago)

TLS is now supported with the LDAP backend

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