root / pykota / trunk / NEWS @ 2413

Revision 2413, 67.8 kB (checked in by jerome, 19 years ago)

Introduces the new 'pkturnkey' command line tool.
Severity : you don't need this unless you plan to initialize your PyKota
database anew, but you can play with it if you want :-)

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