root / pykota / trunk / NEWS @ 1758

Revision 1758, 48.9 kB (checked in by jalet, 20 years ago)

Initial release of autopykota. Reading help or manpage is greatly
encouraged !

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