Index: /pykota/trunk/docs/repykota.sgml
===================================================================
--- /pykota/trunk/docs/repykota.sgml (revision 865)
+++ /pykota/trunk/docs/repykota.sgml (revision 959)
@@ -14,4 +14,12 @@
     PyKota features a quota report generator, named <application>repykota</application>,
     with which you can print the current state of the quota database.
+  </para>
+  
+  <para>
+    <application>PyKota</application> also features a CGI script to remotely access
+    to print quota reports with a web browser, it is called <application>printquota.cgi</application>
+    and you can put it in your web server's cgi-bin directory if a web server is installed on
+    any machine on which <application>PyKota</application> is also installed and configured
+    correctly.
   </para>
   
@@ -35,4 +43,7 @@
 
 $Log$
+Revision 1.4  2003/04/24 21:09:47  jalet
+Documentation slightly improved.
+
 Revision 1.3  2003/03/25 09:32:06  jalet
 Improved documentation.
Index: /pykota/trunk/docs/warnpykota.sgml
===================================================================
--- /pykota/trunk/docs/warnpykota.sgml (revision 867)
+++ /pykota/trunk/docs/warnpykota.sgml (revision 959)
@@ -31,4 +31,11 @@
     every day, then you'll be sure that all your users who are above their print quota
     will not forget it !
+  </para>
+  
+  <para>
+    At the very least, try to make your best to disallow ordinary users to be able to
+    launch this command, since malicious users could fill other users mailboxes
+    by repeatedly running <application>warnpykota</application> : each user above
+    quota would receive multiple email messages, and possibly the administrator too !
   </para>
   
@@ -71,4 +78,7 @@
 
 $Log$
+Revision 1.4  2003/04/24 21:09:47  jalet
+Documentation slightly improved.
+
 Revision 1.3  2003/03/25 12:30:37  jalet
 Added warnpykota command synopsis
Index: /pykota/trunk/docs/edpykota.sgml
===================================================================
--- /pykota/trunk/docs/edpykota.sgml (revision 865)
+++ /pykota/trunk/docs/edpykota.sgml (revision 959)
@@ -2,10 +2,60 @@
 
 <chapter>
-  <title id="edpykota">Setting print quotas with edpykota</title>
+  <title id="edpykota">Maintaining the Print Quota DataBase with edpykota</title>
   <para>Last modified on $Date$</para>
   
   <para>
-    TODO : blah
+    <application>edpykota</application> is the command line tool with which you will 
+    maintain your print quota database.
   </para>
+  
+  <para>
+    Here's a list of features :
+    
+    <itemizedlist>
+      <listitem>
+        <para>
+          Add printers ;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Add and delete users and groups ;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Set users' account balances ;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Set users and groups print quotas on printers, eventually by using another user
+          or group as a template ;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Set price per page and price per job for printers ;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Switch users or groups to <quote>account only</quote> mode (no quota enforcement) ;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Define hard and soft limits for users ou groups quotas, on a per printer basis ;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Choose the way you will limit printing : either by page quota or by account balance value.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </para>
+  
 </chapter>
 
@@ -13,4 +63,7 @@
 
 $Log$
+Revision 1.3  2003/04/24 21:09:47  jalet
+Documentation slightly improved.
+
 Revision 1.2  2003/03/25 09:32:06  jalet
 Improved documentation.
Index: /pykota/trunk/docs/installation.sgml
===================================================================
--- /pykota/trunk/docs/installation.sgml (revision 942)
+++ /pykota/trunk/docs/installation.sgml (revision 959)
@@ -29,7 +29,7 @@
     have to decompress and visit its archive, to do so just type the following commands :
     <screen>
-jerome@nordine:~$ tar -zxf pykota-1.03-official.tar.gz    
-jerome@nordine:~$ cd pykota-1.03-official
-jerome@nordine:~/pykota-1.03-official$
+jerome@nordine:~$ tar -zxf pykota-1.04-official.tar.gz    
+jerome@nordine:~$ cd pykota-1.04-official
+jerome@nordine:~/pykota-1.04-official$
     </screen>
   </para>
@@ -160,6 +160,6 @@
         From a command line interpreter (i.e. shell), type the following commands :
         <screen>
-jerome@nordine:~$ cd pykota-1.03-official/initscripts/
-jerome@nordine:~/pykota-1.03-official/initscripts$ psql -h localhost -U postgres template1
+jerome@nordine:~$ cd pykota-1.04-official/initscripts/
+jerome@nordine:~/pykota-1.04-official/initscripts$ psql -h localhost -U postgres template1
 Welcome to psql, the PostgreSQL interactive terminal.
 
@@ -194,5 +194,5 @@
 ALTER USER
 pykota=# \q
-jerome@nordine:~/pykota-1.03-official/initscripts$
+jerome@nordine:~/pykota-1.04-official/initscripts$
         </screen>
       </para>
@@ -206,5 +206,7 @@
         To improve security further, you could encrypt your database connections, or
         take any other step as needed. Please refer to <application>PostgreSQL</application>'s
-        documentation for details.
+        documentation for details. Also if <application>PyKota</application>'s configuration
+        file is readable by anyone with access on your file system, a local user could 
+        create some script to modify his own print quota.
         <warning>
           <title>Warning</title>
@@ -274,16 +276,21 @@
       For each Print Server on which you plan to implement the print quota
       mechanism, you have, of course, to have an already working printing environment. 
-      Currently <application>PyKota</application> only works with the
-      <ulink url="http://www.cups.org"><application>CUPS</application></ulink> environment,
+      Currently <application>PyKota</application> works with either the
+      <ulink url="http://www.cups.org"><application>CUPS</application></ulink>
+      or the <ulink url="http://lprng.sourceforge.net"><application>LPRng</application></ulink>,
       but more may be added in the future.
     </para>
     
     <para>
-      Here's the list of software you have to install on each Print Server :
+      Here's the list of software you have to install on each Print Server, version numbers
+      are given as an indication of which was successfully tested, but older versions may 
+      work too.
       <itemizedlist>
         <listitem>
           <para>
-            CUPS version 1.1 or above.
-            You can download it from <ulink url="http://www.cups.org">http://www.cups.org</ulink>.
+            <application>CUPS</application> version 1.1 or above, or <application>LPRng</application>
+            version 3.8.20 or above (it probably works with older versions but this is untested).
+            You can download them from <ulink url="http://www.cups.org">http://www.cups.org</ulink>
+            or <ulink url="http://lprng.sourceforge.net">http://lprng.sourceforge.net</ulink>
           </para>
         </listitem>  
@@ -341,10 +348,19 @@
             <application>ucd-snmp</application> or <application>net-snmp</application> tools, version 4.2.5 or above. You only need
             the <application>snmpget</application> command.
-            You can download them from <ulink url="http://www.sourceforge.net/projects/net-snmp/">http://www.sourceforge.net/projects/net-snmp/</ulink>
-          </para>
-        </listitem>  
-        <listitem>
-          <para>
-            eGenix' mxDateTime Python module. It must match your default Python version.
+            You can download them from <ulink url="http://www.sourceforge.net/projects/net-snmp/">http://www.sourceforge.net/projects/net-snmp/</ulink>.
+            You only need this if you plan to query your printers for their internal page counter via SNMP.
+          </para>
+        </listitem>  
+        <listitem>
+          <para>
+            <application>netatalk</application> version 1.6.1 or above. You only need
+            the <application>pap</application> command.
+            You can download them from <ulink url="http://netatalk.sourceforge.net/">http://netatalk.sourceforge.net/</ulink>.
+            You only need this if you plan to query your printers for their internal page counter via AppleTalk.
+          </para>
+        </listitem>  
+        <listitem>
+          <para>
+            eGenix' mxDateTime Python module version 2.0.3 or above. It must match your default Python version.
             You can download it from <ulink url="http://www.egenix.com">http://www.egenix.com</ulink>.
           </para>
@@ -358,4 +374,7 @@
 
 $Log$
+Revision 1.13  2003/04/24 21:09:47  jalet
+Documentation slightly improved.
+
 Revision 1.12  2003/04/17 21:33:16  jalet
 Version 1.03 is out.
Index: /pykota/trunk/docs/filterpykota.sgml
===================================================================
--- /pykota/trunk/docs/filterpykota.sgml (revision 865)
+++ /pykota/trunk/docs/filterpykota.sgml (revision 959)
@@ -8,6 +8,7 @@
   <para>
     To account for pages or eventually ink usage, you must plug your accounting
-    system into <application>CUPS</application>. One way to do this without having
-    to modify <application>CUPS</application> itself, is by using a <firstterm>filter</firstterm>.
+    system somewhere into the printing system you use, be it either <application>CUPS</application>
+    or <application>LPRng</application>. One way to do this without having
+    to modify the printing system itself, is by using a <firstterm>filter</firstterm>.
   </para>
   
@@ -18,5 +19,5 @@
     PostScript data as its input, and, as its name implies, outputs PostScript data too, but after having
     eventually rearranged the pages to fit several pages on a single sheet of paper, or other manipulations
-    like that.
+    like that. 
   </para>
   
@@ -28,6 +29,12 @@
   
   <para>
+    <application>LPRng</application> can also use filters, one often used in combination with
+    <application>LPRng</application> is <application>magicfilter</application> which can convert 
+    different input formats to native printers languages like PostScript or ESC/P2.
+  </para>  
+  
+  <para>
     So to do its own accounting, <application>PyKota</application> has its own filter, named <application>pykota</application>,
-    which you have to plug into the different set of filters used by <application>CUPS</application>. The procedure to 
+    which you have to plug into the different set of filters used by your printing system of choice. The procedure to 
     install the <application>pykota</application> filter is described in the 
     <xref linkend="installation" endterm="installation"> chapter.
@@ -35,14 +42,43 @@
   
   <para>
-    Currently the <application>pykota</application> filter is used at the very last stage of the print mechanism,
+    Currently with a <application>CUPS</application> backend, the <application>pykota</application> filter is used at the very last stage of the print mechanism,
     just before the final data is sent to the printer, but it may eventually be used earlier with some
     modifications to <application>CUPS</application>'s filtering configuration. This is not tested yet, but this
     may be the solution to use <application>PyKota</application> with printers which really needs to have
-    a <literal>*cupsFilter</literal> line in their <acronym>PPD</acronym> file, i.e. non-postscript printers.
+    a specific filter like <application>magicfilter</applicaton> or <application>cupsomatic</application>, 
+    i.e. non-postscript printers. This is a limitation in <application>CUPS</application> which doesn't really
+    allow to specify multiple print filters for different purposes. This problem will be solved in <application>CUPS</application>
+    version 1.2 and higher.
   </para>
   
   <para>
-    The <application>pykota</application> filter really is the only thing which depends on <application>CUPS</application>,
-    so it is probable that a next version of <application>PyKota</application> will support other printing environments.
+    When used with an <application>LPRng</application> backend, the accounting filter is not defined the same way 
+    input filters are, so the problem described above doesn't exist, and <application>PyKota</application>
+    may work with non-postscript printers, provided they can report their page counter and you know how to do
+    this.
+  </para>
+  
+  <para>
+    When you submit a print job, <application>pykota</application> is automatically launched by your printing system,
+    so it has to detect which system you are using (<application>CUPS</application> or <application>LPRng</application>)
+    and behave like if it was specifically designed for your printing system. Fortunately there's not a lot
+    of differences, the more important one is the exit codes used to tell the printing environment if a job
+    has to be accepted or rejected. 
+  </para>
+  
+  <para>
+    <application>pykota</application> then asks the printer for its internal page counter, read from the Quota DataBase the internal
+    page counter for this printer when the previous job was launched, computes the difference, and report it as the 
+    previous job's size in the Quota DataBase. It then updates the last user's print quota and account balance, and
+    warn him if he is over quota or his account balance below 0. Finally it checks if the user who launched the 
+    current job is below or above his print quota, and either allow or deny the job's datas to pass to the underlying 
+    layer (the printer itself).
+  </para>
+  
+  <para>
+    If a problem occurs, it is logged either to the filter's standard output or to the system logger, depending on
+    your preferences in <application>PyKota</application>'s configuration file. Also if a print quota is reached
+    you may choose if the administrator, the user, both or noone will receive an email message explaining
+    the situation and proposing a solution.
   </para>
   
@@ -52,4 +88,7 @@
 
 $Log$
+Revision 1.3  2003/04/24 21:09:47  jalet
+Documentation slightly improved.
+
 Revision 1.2  2003/03/25 09:32:06  jalet
 Improved documentation.
