root / pykota / trunk / NEWS @ 1790

Revision 1790, 50.3 kB (checked in by jalet, 20 years ago)

Hopefully final fix for data encoding to and from the database

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