root / pykota / trunk / NEWS @ 1867

Revision 1867, 51.6 kB (checked in by jalet, 20 years ago)

Note about today's changes

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