root / pykota / trunk / NEWS @ 1701

Revision 1701, 46.7 kB (checked in by jalet, 20 years ago)

Support for PCL3 (HP Deskjets) added to generic PDL parser

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