root / pykota / trunk / NEWS @ 2624

Revision 2624, 74.2 kB (checked in by jerome, 18 years ago)

Now cupspykota can be interrupted cleanly with SIGINT.

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