root / pykota / trunk / NEWS @ 1847

Revision 1847, 51.1 kB (checked in by jalet, 20 years ago)

Added a note about the recent locale fix

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