root / pykota / trunk / NEWS @ 2546

Revision 2478, 71.3 kB (checked in by jerome, 19 years ago)

Typos, and removed references to LPRng

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