root / pykota / trunk / NEWS @ 1923

Revision 1923, 52.7 kB (checked in by jalet, 19 years ago)

Improved banner handling.
Fix for raw printing and banners.

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