Changeset 3413 for pykota/trunk/docs

Show
Ignore:
Timestamp:
09/27/08 22:02:37 (16 years ago)
Author:
jerome
Message:

Removed unnecessary spaces at EOL.

Location:
pykota/trunk/docs
Files:
21 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/docs/autopykota.sgml

    r2147 r3413  
    44  <title>Automate user account creation with autopykota</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    If you want to automate the users account and quota entries creation on first print, 
     
    1111    You just have to put your command of choice there. 
    1212  </para> 
    13    
     13 
    1414  <para> 
    1515    <command>autopykota</command> was designed to automatically set 
    1616    an initial account balance value to newly added users, while taking 
    17     care of not resetting the balance value if the user already exists  
    18     but doesn't have a quota entry on the current printer.  
     17    care of not resetting the balance value if the user already exists 
     18    but doesn't have a quota entry on the current printer. 
    1919  </para> 
    20    
     20 
    2121  <para> 
    2222    If you want to limit your users by page quota then you must not use 
     
    3030    care of all this automagically. 
    3131  </para> 
    32    
     32 
    3333  <sect1> 
    3434    <title>Reference</title> 
  • pykota/trunk/docs/dumpykota.sgml

    r2551 r3413  
    44  <title>Export datas to other software with dumpykota</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    If you want to reuse <application>PyKota</application> datas from another 
     
    1111    best option is the new <command>dumpykota</command> command. 
    1212  </para> 
    13    
     13 
    1414  <para> 
    1515    <command>dumpykota</command> can export <application>PyKota</application> 
    1616    datas in a number of formats. The supported output formats are 
    1717    comma separated values, semicolon separated values, tab separated values, and <acronym>XML</acronym>. 
    18   </para>   
    19    
     18  </para> 
     19 
    2020  <para> 
    2121    For the print job history's datas, a special format identical to <application>CUPS</application>' <literal>page_log</literal> 
     
    2323    This allows you to interface <application>PyKota</application> with third party tools like 
    2424    <application>phpPrintAnalyzer</application> which is a logfile analyzer for <application>CUPS</application>. 
    25   </para>   
    26    
     25  </para> 
     26 
    2727  <para> 
    28     More formats may be added in the future. In particular,  
    29     <acronym>SQL</acronym> and <acronym>LDIF</acronym> are planned, but  
    30     are currently not implemented.  
     28    More formats may be added in the future. In particular, 
     29    <acronym>SQL</acronym> and <acronym>LDIF</acronym> are planned, but 
     30    are currently not implemented. 
    3131  </para> 
    32    
     32 
    3333  <para> 
    3434    <command>dumpykota</command> can't dump all datas at once though, you have 
     
    4444      <listitem><para>History of payments</para></listitem> 
    4545      <listitem><para>History of print jobs</para></listitem> 
    46     </itemizedlist>   
     46    </itemizedlist> 
    4747  </para> 
    48    
     48 
    4949  <para> 
    50     You can then import the dumped datas into a spreadsheet for example,  
     50    You can then import the dumped datas into a spreadsheet for example, 
    5151    if you want to create complex reports with nice looking graphs and 
    5252    the like. 
    5353  </para> 
    54    
     54 
    5555  <para> 
    5656    An important feature of this command is the possibility to use 
     
    6464    the year <literal>2005</literal>. 
    6565  </para> 
    66    
     66 
    6767  <para> 
    6868    Several keys like <literal>username</literal> are possible, but some 
     
    7474        the complete list of supported keys. 
    7575      </para> 
    76     </tip>   
     76    </tip> 
    7777  </para> 
    78    
     78 
    7979  <para> 
    8080    This command could also be used if you plan to write your own management 
     
    8585    This is exactly what the third party software <application>phpPykotaAdmin</application> does. 
    8686  </para> 
    87    
     87 
    8888  <para> 
    8989    Finally, <command>dumpykota</command>'s functionnality is now also available remotely through 
    9090    the use of the <command>dumpykota.cgi</command> <acronym>CGI</acronym> script. 
    9191  </para> 
    92    
     92 
    9393  <warning> 
    9494    <title>Warning</title> 
     
    9696      Only <application>PyKota</application> administrators can dump PyKota's datas. 
    9797    </para> 
    98   </warning>   
    99          
     98  </warning> 
     99 
    100100  <sect1> 
    101101    <title>Reference</title> 
  • pykota/trunk/docs/edpykota.sgml

    r2833 r3413  
    44  <title id="edpykota">Manage Print Quotas with edpykota</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    You'll use this tool to create, manage or delete print quota entries for users 
    99    or users groups on printers or printers groups. 
    1010  </para> 
    11    
     11 
    1212  <para> 
    1313    By default, before being allowed to print through <application>PyKota</application>, 
     
    1515    he should be allowed to use. As seen in the previous chapter, the simplest way to add an user named <literal>jerome</literal> to the database is 
    1616    to type : 
    17 <screen>     
     17<screen> 
    1818$ pkusers --add jerome 
    1919</screen> 
     
    2121    But this is not sufficient to allow user <literal>jerome</literal> to print. You have to create a print quota entry for <literal>jerome</literal> on all printers 
    2222    he is allowed to print to. The easiest way to do so is to type : 
    23 <screen>     
     23<screen> 
    2424$ edpykota --add jerome 
    2525</screen> 
    2626  </para> 
    27    
     27 
    2828  <para> 
    2929    The commands above have created user <literal>jerome</literal> in the database, and have automatically 
     
    3232    will still be done for this user : you'll know whenever he prints and how much. 
    3333  </para> 
    34    
     34 
    3535  <para> 
    3636    Here's an incomplete list of features : 
    37      
     37 
    3838    <itemizedlist> 
    3939      <listitem> 
     
    5959    </itemizedlist> 
    6060  </para> 
    61    
     61 
    6262  <para> 
    6363    For more details on the use of <command>edpykota</command>, please see this command's manual 
    6464    page or help. 
    6565  </para> 
    66    
     66 
    6767</chapter> 
    6868 
  • pykota/trunk/docs/filterpykota.sgml

    r2835 r3413  
    33<chapter> 
    44  <title id="filter">PyKota's internals</title> 
    5    
     5 
    66  <para>Last modified on $Date: 2005-03-06 17:52:43 +0100 (dim, 06 mar 2005) $</para> 
    7    
     7 
    88  <para> 
    9     To account for pages or eventually ink usage  
     9    To account for pages or eventually ink usage 
    1010    <footnote> 
    1111      <para> 
    1212        PyKota doesn't currently account for ink usage, it only accounts 
    1313        pages. To account for ink usage, you should use PrintBill instead for now. 
    14       </para>   
    15     </footnote>   
     14      </para> 
     15    </footnote> 
    1616    , you must plug your accounting 
    1717    system somewhere into the printing system you use. One way to do this without having 
    1818    to modify the printing system itself, is by using a <firstterm>filter</firstterm>. 
    1919  </para> 
    20    
     20 
    2121  <para> 
    2222    A filter is a computer program which takes data in one format as its input, and outputs the 
    2323    same data but transformed into another format. <application>CUPS</application> already 
    24     contains many filters. For example there's one filter named <command>pstops</command> which accepts  
     24    contains many filters. For example there's one filter named <command>pstops</command> which accepts 
    2525    PostScript data as its input, and, as its name implies, outputs PostScript data too, but after having 
    2626    eventually rearranged the pages to fit several pages on a single sheet of paper, or other manipulations 
    2727    like that. 
    2828  </para> 
    29    
     29 
    3030  <para> 
    3131    The <command>pstops</command> filter described above is also in charge of doing basic page 
     
    3333    prove to be unreliable depending on the drivers used or if a paper jam occurs for example. 
    3434  </para> 
    35    
     35 
    3636  <para> 
    3737    So to do its own accounting, <application>PyKota</application> has its own filters, for <application>CUPS</application> 
    3838    it's named <command>cupspykota</command>, which is in fact a <application>CUPS</application> backends wrapper. 
    39     The procedure to plug the correct filter into your printing system is described in the  
     39    The procedure to plug the correct filter into your printing system is described in the 
    4040    <xref linkend="installation" endterm="installation"> chapter. 
    4141  </para> 
    42    
     42 
    4343  <para> 
    4444    Currently with <application>CUPS</application>' internal accounting mechanism, the <command>pstops</command> 
     
    4848    print job will be correctly accounted for. 
    4949  </para> 
    50    
     50 
    5151  <para> 
    5252    When using the <literal>hardware</literal> accounting method, 
    5353    <application>PyKota</application> launches the script you specified to 
    5454    ask the printer for its internal page counter at the start and at the end of the print job, and 
    55     computes the values' difference to know the job's size.  
     55    computes the values' difference to know the job's size. 
    5656  </para> 
    57    
     57 
    5858  <para> 
    5959    When using the <literal>software</literal> accounting method, 
    60     the command you specified is launched with the job's data on its  
     60    the command you specified is launched with the job's data on its 
    6161    standard input. Your command must print the job's size in number of 
    6262    pages on a single line on its standard output. This number is then 
    6363    read by <application>PyKota</application> and used to update the current user's quota information. 
    6464  </para> 
    65    
     65 
    6666  <para> 
    6767    If a problem occurs, it is logged either to the filter's standard error or to the system logger, depending on 
     
    7171    messages if you want. 
    7272  </para> 
    73    
     73 
    7474</chapter> 
    7575 
  • pykota/trunk/docs/installation.sgml

    r3283 r3413  
    33<chapter> 
    44  <title id="installation">Installation</title> 
    5    
     5 
    66  <para>Last modified on $Date$</para> 
    7    
     7 
    88  <para> 
    99    Before being able to use <application>PyKota</application>, you have of course to 
    1010    install it first. But before installing, you must carefully plan your installation. 
    1111  </para> 
    12    
     12 
    1313  <para> 
    1414    First you have to determine which machine will be the <application>PyKota</application> 
     
    1616    for keeping a centralized database of print usage for all your printers, users and groups. 
    1717  </para> 
    18    
     18 
    1919  <para> 
    2020    Then you have to list all the <firstterm>Print Servers</firstterm> for which 
    2121    you plan to use print quota facilities. 
    2222  </para> 
    23    
     23 
    2424  <para> 
    2525    With most database backends, several print servers can share a single database, however 
     
    2727    as your print quota database backend. 
    2828  </para> 
    29    
     29 
    3030  <para> 
    3131    Finally you have to download <application>PyKota</application>'s latest version 
    32     or buy an official package, from  
     32    or buy an official package, from 
    3333    <ulink url="http://www.pykota.com/software/pykota">http://www.pykota.com/software/pykota</ulink>. 
    3434    If you've just bought an official package, then as soon as you've receive it you 
    3535    have to decompress and visit its archive, to do so just type the following commands : 
    3636    <screen> 
    37 jerome@nordine:~$ tar -zxf pykota-1.26_official.tar.gz     
     37jerome@nordine:~$ tar -zxf pykota-1.26_official.tar.gz 
    3838jerome@nordine:~$ cd pykota-1.26_official 
    3939jerome@nordine:~/pykota-1.26_official$ 
    4040    </screen> 
    4141  </para> 
    42    
     42 
    4343  <para> 
    4444    You can see many files in this directory, the first ones to read are <filename>README</filename>, 
    4545    then <filename>COPYING</filename> and <filename>LICENSE</filename>. They will give you 
    46     basic installation instructions and explain the licensing terms under which  
     46    basic installation instructions and explain the licensing terms under which 
    4747    <application>PyKota</application> is distributed. Of course they are also mostly 
    4848    boring to read ! Detailed installation and operating instructions are defined 
     
    5454    know this because that's what you are currently reading ! 
    5555  </para> 
    56    
     56 
    5757  <sect1> 
    5858    <title>Interactive step-by-step installation of PyKota with pksetup</title> 
    59      
     59 
    6060    <para> 
    6161      <command>pksetup</command> is a command line tool with which you'll be able 
     
    6666      several servers to install identically. 
    6767    </para> 
    68      
     68 
    6969    <para> 
    7070      Currently, <command>pksetup</command> is experimental, and only works 
    71       with <ulink url="http://www.debian.org">Debian</ulink> and  
     71      with <ulink url="http://www.debian.org">Debian</ulink> and 
    7272      <ulink url="http://www.ubuntu.com">Ubuntu</ulink> distributions. 
    7373      In addition, the database backend which will be installed with 
     
    7777      the installation manually, then read and follow the instructions in the next section. 
    7878    </para> 
    79      
     79 
    8080    <para> 
    8181      To launch the installation procedure, just type <literal>pksetup</literal> 
    8282      followed with the name of your distribution, like : 
    83     <screen>     
     83    <screen> 
    8484jerome@nordine:~/pykota-1.26_official$ ./bin/pksetup debian 
    85     </screen>   
     85    </screen> 
    8686      and then follow the instructions and answer to the several questions you'll 
    8787      be asked. 
    8888    </para> 
    8989  </sect1> 
    90    
     90 
    9191  <sect1> 
    9292    <title>Manual installation</title> 
     
    100100          This is especially the case if you've got only one server. 
    101101        </para> 
    102       </note>   
     102      </note> 
    103103    </para> 
    104      
     104 
    105105    <sect2> 
    106106      <title>Database server installation</title> 
    107        
     107 
    108108      <para> 
    109109        Depending on <application>PyKota</application>'s version number, different 
     
    111111        them how to configure it. 
    112112      </para> 
    113        
     113 
    114114      <sect3> 
    115115        <title>PostgreSQL</title> 
    116          
     116 
    117117        <para> 
    118118          <application>PostgreSQL</application> is an <firstterm>Object Relationnal DataBase 
    119119          Management System</firstterm> distributed under a <firstterm>Free Software</firstterm> 
    120           license from the  
     120          license from the 
    121121          <ulink url="http://www.postgresql.org">http://www.postgresql.org</ulink> 
    122122          web site. It certainely is the free <acronym>RDBMS</acronym> which has the most advanced 
    123123          features, and is widely used all over the world. 
    124124        </para> 
    125          
     125 
    126126        <para> 
    127127          To configure your database, you must have PostgreSQL already working. 
    128128          The complete installation of <application>PostgreSQL</application> is not covered by 
    129           the present manual, please refer to your system's documentation or to  
     129          the present manual, please refer to your system's documentation or to 
    130130          <ulink url="http://www.postgresql.org">http://www.postgresql.org</ulink> for 
    131131          details. 
    132132        </para> 
    133          
     133 
    134134        <para> 
    135135          One thing you have to check, though, is that every Print Server on which you 
     
    146146          is not necessary though if your print quota database server and your Print Server are 
    147147          the very same host. 
    148         </para>   
    149          
     148        </para> 
     149 
    150150        <para> 
    151151          Here's an excerpt from a <filename>pg_hba.conf</filename> file. This one rejects all 
    152152          connections to PyKota's database excepted when made from the same host by <application>PostgreSQL</application> users 
    153153          <literal>pykotauser</literal> or <literal>pykotaadmin</literal> with the correct password. 
    154     <screen>         
     154    <screen> 
    155155          local all    postgres                              ident sameuser 
    156156          local all    all                                   reject 
     
    160160    </screen> 
    161161       </para> 
    162         
     162 
    163163       <para> 
    164164          Of course if your print server and your database servers have different <acronym>IP</acronym> 
     
    173173              any of its configuration files, in order for the changes to take effect. 
    174174            </para> 
    175           </tip>   
    176         </para> 
    177          
     175          </tip> 
     176        </para> 
     177 
    178178        <para> 
    179179          Be careful, you may be unable to connect from a Print Server to the <application>PostgreSQL</application> 
     
    186186            <title>Note</title> 
    187187            <para> 
    188               The TCP/IP network port used by PostgreSQL may be different. When in doubt, ask your  
    189               <firstterm>System Administrator</firstterm> for the correct value.  
    190             </para> 
    191           </note>   
    192         </para> 
    193          
     188              The TCP/IP network port used by PostgreSQL may be different. When in doubt, ask your 
     189              <firstterm>System Administrator</firstterm> for the correct value. 
     190            </para> 
     191          </note> 
     192        </para> 
     193 
    194194        <para> 
    195195          Now that your <application>PostgreSQL</application> server is up and running, and 
     
    203203          itself, he is only defined in <application>PostgreSQL</application> and don't 
    204204          have to exist on any system, nor in the print quota database. His default name 
    205           is <literal>pykotaadmin</literal>.  
     205          is <literal>pykotaadmin</literal>. 
    206206          A print quota database read-only user is also created under the name of <literal>pykotauser</literal>. 
    207           This read-only user is used by <application>PyKota</application> to connect to the  
    208           print quota database when an user who is not a <application>PyKota</application> administrator  
     207          This read-only user is used by <application>PyKota</application> to connect to the 
     208          print quota database when an user who is not a <application>PyKota</application> administrator 
    209209          <footnote><para>a <application>PyKota</application> administrator is an user who can read the <filename>~pykota/pykotadmin.conf</filename> file.</para></footnote> 
    210210          launches a pykota command. This prevents normal 
     
    217217            <title>Note</title> 
    218218            <para> 
    219               You can choose other names and passwords if you want by modifying the  
     219              You can choose other names and passwords if you want by modifying the 
    220220              <filename>initscripts/postgresql/pykota-postgresql.sql</filename> file 
    221221              accordingly, and report your changes into <application>PyKota</application>'s 
    222222              configuration files. 
    223223            </para> 
    224           </note>   
    225         </para> 
    226          
     224          </note> 
     225        </para> 
     226 
    227227        <para> 
    228228          To run this script, you can use the <command>psql</command> frontend to 
     
    236236    jerome@nordine:~/pykota-1.26_official/initscripts$ psql -h localhost -U postgres template1 
    237237    Welcome to psql, the PostgreSQL interactive terminal. 
    238      
     238 
    239239    Type:  \copyright for distribution terms 
    240240         \h for help with SQL commands 
     
    242242         \g or terminate with semicolon to execute query 
    243243         \q to quit 
    244      
    245     template1=# \i pykota-postgresql.sql  
     244 
     245    template1=# \i pykota-postgresql.sql 
    246246              ... a lot of output lines 
    247     pykota=#        
     247    pykota=# 
    248248          </screen> 
    249249          <note> 
     
    252252              If you use RPM or DEB packages, usually the 
    253253              <filename>pykota-postgresql.sql</filename> file gets installed into the 
    254               <filename>/usr/share/pykota/postgresql</filename> directory, along  
     254              <filename>/usr/share/pykota/postgresql</filename> directory, along 
    255255              with a README file. 
    256256            </para> 
    257           </note>   
    258         </para> 
    259          
     257          </note> 
     258        </para> 
     259 
    260260        <para> 
    261261          If you want to you can change passwords later in 
    262           <application>PostgreSQL</application> for the  
     262          <application>PostgreSQL</application> for the 
    263263          <literal>pykotaadmin</literal> and <literal>pykotauser</literal> users. 
    264264          To do so, just type the following lines while still being at the <command>psql</command> 
     
    272272          </screen> 
    273273        </para> 
    274          
     274 
    275275        <para> 
    276276          The <literal>\q</literal> command above will quit the <command>psql</command> 
    277277          program and return you to the shell's command line prompt. 
    278278        </para> 
    279          
     279 
    280280        <para> 
    281281          To improve security further, you could encrypt your database connections, or 
    282282          take any other step as needed. Please refer to <application>PostgreSQL</application>'s 
    283           documentation for details.  
     283          documentation for details. 
    284284          <warning> 
    285285            <title>Warning</title> 
     
    293293              though, it is just a general rule to keep in mind. 
    294294            </para> 
    295           </warning>   
    296         </para> 
    297          
     295          </warning> 
     296        </para> 
     297 
    298298        <para> 
    299299          For more details, please see <filename>initscripts/mysql/README.postgresql</filename>. 
    300300        </para> 
    301          
     301 
    302302        <para> 
    303303          If no error occured, then your print quota database is ready to be used. 
     
    312312              can try to fix the problem. Thanks in advance. 
    313313            </para> 
    314           </tip>   
    315         </para> 
    316          
    317       </sect3>   
    318        
     314          </tip> 
     315        </para> 
     316 
     317      </sect3> 
     318 
    319319      <sect3> 
    320320        <title>LDAP</title> 
    321          
    322         <para> 
    323           Any <acronym>LDAP</acronym> server, and particularly <application>OpenLDAP</application>, can be used  
     321 
     322        <para> 
     323          Any <acronym>LDAP</acronym> server, and particularly <application>OpenLDAP</application>, can be used 
    324324          as a print quota database backend. 
    325325          Some other LDAP servers can be used, but this is currently untested in production. 
    326326        </para> 
    327          
     327 
    328328        <para> 
    329329          <application>OpenLDAP</application> is a Lightweight Directory Access Protocol server 
     
    331331          You can download it from <ulink url="http://www.openldap.org">http://www.openldap.org</ulink>. 
    332332        </para> 
    333          
     333 
    334334        <para> 
    335335          To use <application>OpenLDAP</application> as your print quota database backend, you have to copy the 
    336           <filename>pykota/initscripts/ldap/pykota.schema</filename> into <application>OpenLDAP</application>'s  
     336          <filename>pykota/initscripts/ldap/pykota.schema</filename> into <application>OpenLDAP</application>'s 
    337337          schemas directory. 
    338338          Under Debian GNU/Linux, this is something like : 
    339           <screen>         
     339          <screen> 
    340340    $ cp pykota.schema /etc/ldap/schema 
    341341          </screen> 
     
    343343            <title>Note</title> 
    344344            <para> 
    345               If you are using a Red Hat-based system, substitute  
    346               <filename>/etc/openldap</filename> for  
     345              If you are using a Red Hat-based system, substitute 
     346              <filename>/etc/openldap</filename> for 
    347347              <filename>/etc/ldap</filename>. 
    348348            </para> 
     
    357357              your <acronym>LDAP</acronym> server's schemas directory. 
    358358            </para> 
    359           </note>   
     359          </note> 
    360360       </para> 
    361        <para>    
    362          Then edit <filename>/etc/ldap/slapd.conf</filename> and add a line to     
     361       <para> 
     362         Then edit <filename>/etc/ldap/slapd.conf</filename> and add a line to 
    363363         include the PyKota schema. You should have something 
    364364         like : 
    365          <screen>     
     365         <screen> 
    366366    # Schema and objectClass definitions 
    367367    include         /etc/ldap/schema/core.schema 
     
    370370    include         /etc/ldap/schema/inetorgperson.schema 
    371371    include         /etc/ldap/schema/pykota.schema 
    372           </screen>         
    373         </para> 
    374          
     372          </screen> 
     373        </para> 
     374 
    375375        <para> 
    376376          While this is not mandatory, it is recommended that you setup 
     
    387387          </screen> 
    388388        </para> 
    389          
    390         <para> 
    391           Now you must ensure that the DNs you'll use to bind to     
     389 
     390        <para> 
     391          Now you must ensure that the DNs you'll use to bind to 
    392392          your OpenLDAP server don't have search queries size limits, 
    393393          which gives for example (OpenLDAP 2.1.x or above) : 
    394            
    395     <screen>         
     394 
     395    <screen> 
    396396    # No Limits for PyKota's administrator and read-only user 
    397397    limits dn="cn=pykotaadmin,dc=example,dc=com" size.soft=-1 size.hard=soft 
    398398    limits dn="cn=pykotauser,dc=example,dc=com" size.soft=-1 size.hard=soft 
    399     </screen>         
    400      
     399    </screen> 
     400 
    401401          Where pykotaadmin and pykotauser are the usernames used to bind to your 
    402           OpenLDAP server within PyKota, respectively in ReadWrite mode  
     402          OpenLDAP server within PyKota, respectively in ReadWrite mode 
    403403          (as set in pykotadmin.conf) and in ReadOnly mode (as set in pykota.conf). 
    404404        </para> 
    405          
     405 
    406406        <para> 
    407407          Finally, stop the <application>OpenLDAP</application> server, generate 
    408408          the index files, and restart <application>OpenLDAP</application> 
    409           <screen>     
     409          <screen> 
    410410    $ /etc/init.d/slapd stop 
    411411    $ slapindex 
     
    416416          <title>Note</title> 
    417417          <para> 
    418           On Red Hat-based distros, use '/sbin/service ldap stop' and  
     418          On Red Hat-based distros, use '/sbin/service ldap stop' and 
    419419        '/sbin/service ldap start' instead. 
    420420          </para> 
     
    430430          entries, this may ease the maintainance. 
    431431        </para> 
    432          
     432 
    433433        <para> 
    434434          PyKota needs at least an <literal>ou</literal> for printers, for users quotas, for 
     
    437437          will probably be attached to each printer. 
    438438        </para> 
    439          
     439 
    440440        <para> 
    441441          Actually PyKota doesn't create these <literal>ou</literal>s for you, because it's 
     
    450450              If you use RPM or DEB packages, usually the 
    451451              <filename>pykota-sample.ldif</filename> file is installed into the 
    452               <filename>/usr/share/pykota/ldap</filename> directory, along  
     452              <filename>/usr/share/pykota/ldap</filename> directory, along 
    453453              with a README file. 
    454454            </para> 
    455           </note>   
    456         </para> 
    457          
     455          </note> 
     456        </para> 
     457 
    458458        <para> 
    459459          If no error occured, then your print quota database is ready to be used. 
     
    468468              can try to fix the problem. Thanks in advance. 
    469469            </para> 
    470           </tip>   
    471         </para> 
    472       </sect3>   
    473        
     470          </tip> 
     471        </para> 
     472      </sect3> 
     473 
    474474      <sect3> 
    475475        <title>MySQL</title> 
    476          
     476 
    477477        <para> 
    478478          <application>MySQL</application> is a simple Relationnal DataBase 
    479479          Management System distributed under a <firstterm>Free Software</firstterm> 
    480           license from the  
     480          license from the 
    481481          <ulink url="http://www.mysql.org">http://www.mysql.org</ulink> 
    482           web site.  
    483         </para> 
    484          
     482          web site. 
     483        </para> 
     484 
    485485        <para> 
    486486          To configure your database, you must have MySQL version 4.1 or higher already working. 
    487487          We recommend that you use MySQL 5.0 or higher though. 
    488488          The complete installation of <application>MySQL</application> is not covered by 
    489           the present manual, please refer to your system's documentation or to  
     489          the present manual, please refer to your system's documentation or to 
    490490          <ulink url="http://www.mysql.org">http://www.mysql.org</ulink> for 
    491491          details. 
    492492        </para> 
    493          
     493 
    494494        <para> 
    495495          One thing you have to check, though, is that every Print Server on which you 
     
    506506              any of its configuration files, in order for the changes to take effect. 
    507507            </para> 
    508           </tip>   
    509         </para> 
    510          
     508          </tip> 
     509        </para> 
     510 
    511511        <para> 
    512512          Be careful, you may be unable to connect from a Print Server to the <application>MySQL</application> 
     
    519519            <title>Note</title> 
    520520            <para> 
    521               The TCP/IP network port used by MySQL may be different. When in doubt, ask your  
    522               <firstterm>System Administrator</firstterm> for the correct value.  
    523             </para> 
    524           </note>   
    525         </para> 
    526          
     521              The TCP/IP network port used by MySQL may be different. When in doubt, ask your 
     522              <firstterm>System Administrator</firstterm> for the correct value. 
     523            </para> 
     524          </note> 
     525        </para> 
     526 
    527527        <para> 
    528528          Now that your <application>MySQL</application> server is up and running, and 
     
    531531          <filename>pykota-1.26_official/initscripts/mysql/pykota-mysql.sql</filename> file. 
    532532          This file will create an empty 
    533           print quota database and set some permissions on it.  
     533          print quota database and set some permissions on it. 
    534534          The database which will be created will be named <literal>pykota</literal> by default. 
    535535          Two database users will be defined to have access in readonly and read+write modes under 
     
    541541            <title>Note</title> 
    542542            <para> 
    543               You can choose other names and passwords if you want by modifying the  
     543              You can choose other names and passwords if you want by modifying the 
    544544              <filename>initscripts/mysql/pykota-mysql.sql</filename> file 
    545545              accordingly, and report your changes into <application>PyKota</application>'s 
    546546              configuration files. 
    547547            </para> 
    548           </note>   
    549         </para> 
    550          
     548          </note> 
     549        </para> 
     550 
    551551        <para> 
    552552          To run this script, you can use the <command>mysql</command> frontend to 
     
    564564              If you use RPM or DEB packages, usually the 
    565565              <filename>pykota-mysql.sql</filename> file gets installed into the 
    566               <filename>/usr/share/pykota/mysql</filename> directory, along  
     566              <filename>/usr/share/pykota/mysql</filename> directory, along 
    567567              with a README file. 
    568568            </para> 
    569           </note>   
    570         </para> 
    571          
     569          </note> 
     570        </para> 
     571 
    572572        <para> 
    573573          To improve security further, you could encrypt your database connections, or 
    574574          take any other step as needed. Please refer to <application>MySQL</application>'s 
    575           documentation for details.  
    576         </para> 
    577          
     575          documentation for details. 
     576        </para> 
     577 
    578578        <para> 
    579579          For more details, please see <filename>initscripts/mysql/README.mysql</filename>. 
    580580        </para> 
    581          
     581 
    582582        <para> 
    583583          If no error occured, then your print quota database is ready to be used. 
     
    592592              can try to fix the problem. Thanks in advance. 
    593593            </para> 
    594           </tip>   
    595         </para> 
    596          
    597       </sect3>   
    598        
     594          </tip> 
     595        </para> 
     596 
     597      </sect3> 
     598 
    599599      <sect3> 
    600600        <title>SQLite</title> 
    601          
     601 
    602602        <para> 
    603603          <application>SQLite</application> is an embeddable Relationnal DataBase 
    604604          distributed under a Free Software 
    605           license from the  
     605          license from the 
    606606          <ulink url="http://www.sqlite.org">http://www.sqlite.org</ulink> 
    607           web site.  
     607          web site. 
    608608          If is very easy to configure and use, offers a very small memory footprint, 
    609609          is very fast, but can only be used on the print server because it doesn't include 
    610610          a server daemon : the database is directly embedded in the application. 
    611611        </para> 
    612          
     612 
    613613        <para> 
    614614          To configure your database, you must have SQLite already working. 
    615615          The complete installation of <application>SQLite</application> is not covered by 
    616           the present manual, please refer to your system's documentation or to  
     616          the present manual, please refer to your system's documentation or to 
    617617          <ulink url="http://www.sqlite.org">http://www.sqlite.org</ulink> for 
    618618          details. 
    619619        </para> 
    620          
     620 
    621621        <para> 
    622622          Once <application>SQLite</application> is installed, you have to decide where 
    623623          you'll put your database. A good idea is to store it into the <literal>pykota</literal> 
    624624          user's home directory. Then to create the database, just type : 
    625     <screen>         
     625    <screen> 
    626626    # sqlite3 ~pykota/pykota.db &lt;pykota/initscripts/sqlite/pykota.sqlite 
    627627    # chown pykota.pykota ~pykota/pykota.db 
     
    634634          follow the instructions a bit below which explain how to install PyKota on the print server. 
    635635        </para> 
    636          
     636 
    637637        <para> 
    638638          Once this is done, you'll want to set in <filename>~pykota/pykota.conf</filename> the 
    639639          following lines in the <literal>[global]</literal> section : 
    640     <screen>         
     640    <screen> 
    641641    storagebackend : sqlitestorage 
    642642    storagename : /etc/pykota/pykota.db 
     
    657657              can try to fix the problem. Thanks in advance. 
    658658            </para> 
    659           </tip>   
    660         </para> 
    661       </sect3>   
    662        
     659          </tip> 
     660        </para> 
     661      </sect3> 
     662 
    663663      <sect3> 
    664664        <title>Berkeley DB</title> 
    665          
     665 
    666666        <para> 
    667667          A <application>Berkeley DB</application> backend is planned, but it actually 
     
    670670          each print server. This may still prove to be useful for small configurations. 
    671671        </para> 
    672       </sect3>   
    673     </sect2>   
    674      
     672      </sect3> 
     673    </sect2> 
     674 
    675675    <sect2> 
    676676      <title>Print Server Installation</title> 
    677        
     677 
    678678      <para> 
    679679        For each Print Server on which you plan to implement the print quota 
    680         mechanism, you have, of course, to have an already working printing environment.  
    681         Currently <application>PyKota</application> works with  
     680        mechanism, you have, of course, to have an already working printing environment. 
     681        Currently <application>PyKota</application> works with 
    682682        <ulink url="http://www.cups.org"><application>CUPS</application></ulink> 
    683683        but older releases also supported <ulink url="http://lprng.sourceforge.net"><application>LPRng</application></ulink>. 
    684684        <application>LPRng</application> support might be re-added in the future. 
    685685      </para> 
    686        
     686 
    687687      <para> 
    688688        Here's the list of software you have to install on each Print Server, version numbers 
    689         are given as an indication of which was successfully tested, but older versions may  
     689        are given as an indication of which was successfully tested, but older versions may 
    690690        work too. 
    691691        <itemizedlist> 
    692692          <listitem> 
    693693            <para> 
    694               <application>CUPS</application> version 1.3.4 or higher. NB :  
     694              <application>CUPS</application> version 1.3.4 or higher. NB : 
    695695              <application>PyKota</application> releases up to and including 1.26 support 
    696               <application>CUPS</application> version 1.1.14 or higher.  
     696              <application>CUPS</application> version 1.1.14 or higher. 
    697697              You can download it from <ulink url="http://www.cups.org">http://www.cups.org</ulink> 
    698698            </para> 
    699           </listitem>   
     699          </listitem> 
    700700          <listitem> 
    701701            <para> 
     
    707707              of this language. 
    708708            </para> 
    709           </listitem>   
     709          </listitem> 
    710710          <listitem> 
    711711            <para> 
     
    721721                          version used on your print quota database server. 
    722722                        </para> 
    723                       </listitem>   
     723                      </listitem> 
    724724                      <listitem> 
    725725                        <para> 
    726                           The <application>PygreSQL</application> python module.  
     726                          The <application>PygreSQL</application> python module. 
    727727                          <application>PygreSQL</application> is normally included in 
    728728                          <application>PostgreSQL</application>, but you may want to 
    729729                          download it from <ulink url="http://www.pygresql.org">http://www.pygresql.org</ulink> 
    730730                        </para> 
    731                       </listitem>   
    732                     </itemizedlist>   
     731                      </listitem> 
     732                    </itemizedlist> 
    733733                  </para> 
    734                 </listitem>   
     734                </listitem> 
    735735                <listitem> 
    736736                  <para> 
    737                     OpenLDAP backend :  
     737                    OpenLDAP backend : 
    738738                    <itemizedlist> 
    739739                      <listitem> 
     
    742742                          the <application>OpenLDAP</application> version used on your print quota database server. 
    743743                        </para> 
    744                       </listitem>   
     744                      </listitem> 
    745745                      <listitem> 
    746746                        <para> 
     
    748748                          You may download this module from <ulink url="http://python-ldap.sourceforge.net">http://python-ldap.sourceforge.net</ulink> 
    749749                        </para> 
    750                       </listitem>   
     750                      </listitem> 
    751751                    </itemizedlist> 
    752752                  </para> 
     
    761761                          version used on your database server. 
    762762                        </para> 
    763                       </listitem>   
     763                      </listitem> 
    764764                      <listitem> 
    765765                        <para> 
    766                           The <application>Python-MySQL</application> python module, version 1.2.x or higher.  
     766                          The <application>Python-MySQL</application> python module, version 1.2.x or higher. 
    767767                          You can download it from <ulink url="http://sourceforge.net/projects/mysql-python">http://sourceforge.net/projects/mysql-python</ulink> 
    768768                        </para> 
    769                       </listitem>   
    770                     </itemizedlist>   
     769                      </listitem> 
     770                    </itemizedlist> 
    771771                  </para> 
    772772                </listitem> 
     
    774774                  <para> 
    775775                    SQLite backend : SQLite is not a database server, but an embeddable database, so 
    776                     if you want to use it you MUST install SQLite on your print server. With  
     776                    if you want to use it you MUST install SQLite on your print server. With 
    777777                    <application>PostgreSQL</application>, <application>MySQL</application> or 
    778778                    <application>OpenLDAP</application> you can store your datas on a different 
     
    782782                        <para> 
    783783                          <application>SQLite</application> version 3.2.1 or higher and its library. 
    784                           You can download it from  
     784                          You can download it from 
    785785                          <ulink url="http://www.sqlite.org">http://www.sqlite.org</ulink> 
    786786                        </para> 
    787                       </listitem>   
     787                      </listitem> 
    788788                      <listitem> 
    789789                        <para> 
    790790                          The <application>Python-SQLite</application> python module version 2.0.5 or higher. 
    791                           You can download it from  
     791                          You can download it from 
    792792                          <ulink url="http://www.pysqlite.org">http://www.pysqlite.org</ulink> 
    793793                        </para> 
    794                       </listitem>   
     794                      </listitem> 
    795795                    </itemizedlist> 
    796796                  </para> 
     
    801801                  </para> 
    802802                </listitem> 
    803               </itemizedlist>   
    804             </para> 
    805           </listitem>   
     803              </itemizedlist> 
     804            </para> 
     805          </listitem> 
    806806          <listitem> 
    807807            <para> 
     
    812812              printers. 
    813813            </para> 
    814           </listitem>   
     814          </listitem> 
    815815          <listitem> 
    816816            <para> 
     
    820820              You only need this if you plan to query your printers for their internal page counter via AppleTalk. 
    821821            </para> 
    822           </listitem>   
     822          </listitem> 
    823823          <listitem> 
    824824            <para> 
     
    826826              You can download it from <ulink url="http://www.egenix.com">http://www.egenix.com</ulink>. 
    827827            </para> 
    828           </listitem>   
     828          </listitem> 
    829829          <listitem> 
    830830            <para> 
    831831              The Python acccelerator <application>Psyco</application>. It must match your default Python version. 
    832832              You can download it from <ulink url="http://psyco.sourceforge.net">http://psyco.sourceforge.net</ulink>. 
    833               You only need this if you run on the <literal>x86</literal> architecture because  
     833              You only need this if you run on the <literal>x86</literal> architecture because 
    834834              <application>Psyco</application> doesn't yet exist on other architectures. 
    835835            </para> 
    836           </listitem>   
     836          </listitem> 
    837837          <listitem> 
    838838            <para> 
     
    840840              You can download it from <ulink url="http://pysnmp.sourceforge.net">http://pysnmp.sourceforge.net</ulink>. 
    841841            </para> 
    842           </listitem>   
    843           <listitem> 
    844             <para> 
    845               The <application>JAXML</application> Python module.  
     842          </listitem> 
     843          <listitem> 
     844            <para> 
     845              The <application>JAXML</application> Python module. 
    846846              You can download it from <ulink url="http://www.librelogiciel.com/software/">http://www.librelogiciel.com/software/</ulink>. 
    847847            </para> 
    848           </listitem>   
    849           <listitem> 
    850             <para> 
    851               The <application>ReportLab</application> Toolkit Python module.  
     848          </listitem> 
     849          <listitem> 
     850            <para> 
     851              The <application>ReportLab</application> Toolkit Python module. 
    852852              You can download it from <ulink url="http://www.reportlab.org">http://www.reportlab.org</ulink>. 
    853853            </para> 
    854           </listitem>   
    855           <listitem> 
    856             <para> 
    857               The <application>Python Imaging Library - PIL</application> module.  
     854          </listitem> 
     855          <listitem> 
     856            <para> 
     857              The <application>Python Imaging Library - PIL</application> module. 
    858858              You can download it from <ulink url="http://www.pythonware.com">http://www.pythonware.com</ulink>. 
    859859            </para> 
    860           </listitem>   
    861           <listitem> 
    862             <para> 
    863               The <application>PyOSD</application> Python module.  
     860          </listitem> 
     861          <listitem> 
     862            <para> 
     863              The <application>PyOSD</application> Python module. 
    864864              You can download it from <ulink url="http://repose.cx/pyosd/">http://repose.cx/pyosd/</ulink>. 
    865865            </para> 
    866           </listitem>   
    867           <listitem> 
    868             <para> 
    869               The <application>pkpgcounter</application> Generic Page Description Language parser.  
     866          </listitem> 
     867          <listitem> 
     868            <para> 
     869              The <application>pkpgcounter</application> Generic Page Description Language parser. 
    870870              You can download it from <ulink url="http://www.pykota.com.com/software/pkpgcounter">http://www.pykota.com/software/pkpgcounter</ulink>. 
    871871            </para> 
    872           </listitem>   
     872          </listitem> 
    873873          <listitem> 
    874874            <para> 
     
    878878              If needed, you can download it from <ulink url="http://www.pangalactic.org/PyPAM/">http://www.pangalactic.org/PyPAM/</ulink>. 
    879879            </para> 
    880           </listitem>   
     880          </listitem> 
    881881          <listitem> 
    882882            <para> 
     
    884884              You can download it from <ulink url="http://www.pykota.com/software/pkipplib">http://www.pykota.com/software/pkipplib</ulink>. 
    885885            </para> 
    886           </listitem>   
    887         </itemizedlist>   
    888       </para> 
    889        
     886          </listitem> 
     887        </itemizedlist> 
     888      </para> 
     889 
    890890      <para> 
    891891        Instead of downloading all these programs' sources and compiling them, which really 
     
    897897        distributions. 
    898898      </para> 
    899        
     899 
    900900      <para> 
    901901         You can check that all needed software is installed by launching the <command>checkdeps.py</command> 
    902902         command : 
    903         <screen>       
    904     $ python checkdeps.py       
     903        <screen> 
     904    $ python checkdeps.py 
    905905        </screen> 
    906906      </para> 
    907        
     907 
    908908      <para> 
    909909        Once all these software are installed, installing PyKota itself is a breeze. 
    910         PyKota being written entirely in the Python language, which is interpreted,  
     910        PyKota being written entirely in the Python language, which is interpreted, 
    911911        there's no need to compile anything. You just have to execute the installation 
    912912        script : 
    913         <screen>       
    914     $ python setup.py install       
     913        <screen> 
     914    $ python setup.py install 
    915915        </screen> 
    916916      </para> 
    917        
    918       <para> 
    919         The setup script will automatically create the  
    920         <filename>/usr/share/pykota/conf</filename> directory and put the sample  
     917 
     918      <para> 
     919        The setup script will automatically create the 
     920        <filename>/usr/share/pykota/conf</filename> directory and put the sample 
    921921        configuration files <filename>conf/pykota.conf.sample</filename> and 
    922922        <filename>conf/pykotadmin.conf.sample</filename> there, along with 
    923923        a <filename>README</filename> file explaining their purpose. 
    924924      </para> 
    925        
     925 
    926926      <para> 
    927927        Now you have to create a <literal>pykota</literal> system user and group. The <application>PyKota</application> 
     
    929929        home directory. For example we could create the user and group, and set <filename>/etc/pykota</filename> 
    930930        as the home directory, but any other home directory will do : 
    931     <screen>       
     931    <screen> 
    932932      adduser --system --group --home /etc/pykota --gecos PyKota pykota 
    933933    </screen> 
    934934      </para> 
    935        
     935 
    936936      <para> 
    937937        You now have to copy the sample configuration files into the <filename>~pykota</filename> 
    938         directory, under the respective names <filename>pykota.conf</filename> and  
     938        directory, under the respective names <filename>pykota.conf</filename> and 
    939939        <filename>pykotadmin.conf</filename>. Once copied there, you just 
    940940        have to modify these files to adapt them to your own setup. 
     
    949949        to any external command of your choice. 
    950950      </para> 
    951        
     951 
    952952      <para> 
    953953        Please create a backup copy of the <filename>~pykota</filename> 
    954954        directory before modifying a working installation. 
    955955      </para> 
    956        
     956 
    957957      <para> 
    958958        PyKota features some interesting possibilities which allow you to 
     
    960960        or on a per printer basis. Please see the sample configuration files 
    961961        to see what I mean. In the simplest form, only a <literal>[global]</literal> section is 
    962         needed. In more complex configurations, you will have to create  
     962        needed. In more complex configurations, you will have to create 
    963963        one section per printer. Each section in the configuration files 
    964964        begins with a name between square brackets <literal>[]</literal>. 
     
    966966        of the print queue you want to manage with PyKota. 
    967967      </para> 
    968        
     968 
    969969      <para> 
    970970        After you have modified <application>PyKota</application>'s configuration files, you have to 
     
    980980        file contains the read-write user's identity and password. You must then 
    981981        ensure that no normal user can read this file. It should only be readable 
    982         by the <literal>root</literal> user, which is always the case, and by  
     982        by the <literal>root</literal> user, which is always the case, and by 
    983983        <application>PyKota</application> administrators. In addition, 
    984         users for which <application>CUPS</application> doesn't run as user <literal>root</literal> will  
     984        users for which <application>CUPS</application> doesn't run as user <literal>root</literal> will 
    985985        have to ensure that the user their printing system is run as 
    986986        can read both of these files. An easy way to do so is to put the <literal>lp</literal> user 
     
    988988        to give the correct permissions to <application>PyKota</application>'s configuration files : 
    989989        <screen> 
    990     $ chown -R pykota.pykota ~pykota/       
     990    $ chown -R pykota.pykota ~pykota/ 
    991991    $ chmod 750 ~pykota/ 
    992     $ chmod 644 ~pykota/pykota.conf       
    993     $ chmod 640 ~pykota/pykotadmin.conf       
     992    $ chmod 644 ~pykota/pykota.conf 
     993    $ chmod 640 ~pykota/pykotadmin.conf 
    994994        </screen> 
    995          
     995 
    996996        <warning> 
    997997          <title>Warning</title> 
    998998          <para> 
    999             All the users allowed to read the <filename>~pykota/pykotadmin.conf</filename>  
     999            All the users allowed to read the <filename>~pykota/pykotadmin.conf</filename> 
    10001000            are considered to be <application>PyKota</application> administrators. So be 
    10011001            careful with these files permissions. 
     
    10031003        </warning> 
    10041004      </para> 
    1005        
     1005 
    10061006      <para> 
    10071007        On some systems, you may be able to strenghten permissions like this : 
    10081008        <screen> 
    1009     $ chown -R pykota.pykota ~pykota/       
     1009    $ chown -R pykota.pykota ~pykota/ 
    10101010    $ chmod 750 ~pykota/ 
    1011     $ chmod 640 ~pykota/pykota.conf       
    1012     $ chmod 600 ~pykota/pykotadmin.conf       
     1011    $ chmod 640 ~pykota/pykota.conf 
     1012    $ chmod 600 ~pykota/pykotadmin.conf 
    10131013        </screen> 
    10141014      </para> 
    1015        
     1015 
    10161016      <para> 
    10171017        And on other ones, you may need to relax them, and change the files' owner : 
    10181018        <screen> 
    1019     $ chown pykota.pykota ~pykota/       
     1019    $ chown pykota.pykota ~pykota/ 
    10201020    $ chmod 755 ~pykota/ 
    1021     $ chown lp.pykota ~pykota/pykota.conf       
    1022     $ chmod 640 ~pykota/pykota.conf       
    1023     $ chown lp.pykota ~pykota/pykotadmin.conf       
    1024     $ chmod 640 ~pykota/pykotadmin.conf       
     1021    $ chown lp.pykota ~pykota/pykota.conf 
     1022    $ chmod 640 ~pykota/pykota.conf 
     1023    $ chown lp.pykota ~pykota/pykotadmin.conf 
     1024    $ chmod 640 ~pykota/pykotadmin.conf 
    10251025        </screen> 
    10261026      </para> 
    1027        
     1027 
    10281028      <para> 
    10291029        This all depends on the printing system you are using, and the user the 
    10301030        printing system is usually running as. You need to remember three things : 
    1031          
     1031 
    10321032        <itemizedlist> 
    10331033          <listitem> 
     
    10351035              The user your printing system runs as MUST be allowed to read 
    10361036              both <application>PyKota</application>'s configuration files. 
    1037             </para>   
    1038           </listitem>   
    1039           <listitem>         
     1037            </para> 
     1038          </listitem> 
     1039          <listitem> 
    10401040            <para> 
    10411041              Any user who can read <filename>pykotadmin.conf</filename> 
     
    10441044            </para> 
    10451045          </listitem> 
    1046           <listitem>         
     1046          <listitem> 
    10471047            <para> 
    10481048              If <filename>cupsd.conf</filename> contains <literal>RunAsUser</literal>, then 
     
    10521052            </para> 
    10531053          </listitem> 
    1054         </itemizedlist>   
    1055       </para> 
    1056        
     1054        </itemizedlist> 
     1055      </para> 
     1056 
    10571057      <para> 
    10581058        Don't forget to restart your print server sofware if you changed group membership for the user it runs 
    10591059        as, otherwise your change wouldn't be taken into account. 
    10601060      </para> 
    1061        
     1061 
    10621062      <para> 
    10631063        Now depending on your printing system, the configuration to do is particular. 
     
    10651065        is not supported anymore. 
    10661066      </para> 
    1067        
     1067 
    10681068      <sect3> 
    10691069        <title>With CUPS</title> 
    1070          
     1070 
    10711071        <para> 
    10721072          From version 1.16alpha7 on, configuring <application>PyKota</application> to integrate 
    10731073          within <application>CUPS</application> is more than easy. 
    10741074        </para> 
    1075          
     1075 
    10761076        <para> 
    10771077          You just have to create a symbolic link to the <command>cupspykota</command> 
    10781078          command in <application>CUPS</application>' backend directory : 
    1079           <screen>         
    1080     $ cd /usr/lib/cups/backend         
     1079          <screen> 
     1080    $ cd /usr/lib/cups/backend 
    10811081    $ ln -s /usr/share/pykota/cupspykota cupspykota 
    10821082          </screen> 
    10831083        </para> 
    1084          
     1084 
    10851085        <para> 
    10861086          If you use CUPS v1.2 or higher, you must 
     
    10881088          backend to correctly support other backends which must be run 
    10891089          as the root user (e.g. the <command>lpd</command> backend) : 
    1090           <screen>         
     1090          <screen> 
    10911091    $ chmod 700 /usr/share/pykota/cupspykota 
    10921092          </screen> 
    10931093        </para> 
    1094          
     1094 
    10951095        <para> 
    10961096          You have to restart <application>CUPS</application> for this modification to 
    1097           take effect :  
     1097          take effect : 
    10981098          <screen> 
    1099     $ /etc/init.d/cupsys restart         
     1099    $ /etc/init.d/cupsys restart 
    11001100          </screen> 
    11011101        </para> 
    1102          
    1103         <para> 
    1104           Now point your web browser to CUPS configuration page, usually at  
     1102 
     1103        <para> 
     1104          Now point your web browser to CUPS configuration page, usually at 
    11051105          <ulink url="http://localhost:631">http://localhost:631</ulink> on 
    11061106          your print server. 
    11071107        </para> 
    1108          
     1108 
    11091109        <para> 
    11101110          Then when creating new printers or reconfiguring existing ones, just 
     
    11141114              Debian 3.0 Woody is known to have problems : CUPS 1.1.14 doesn't automatically 
    11151115              detect <literal>PyKota managed</literal> devices. So you have to manually 
    1116               modify CUPS' <filename>printers.conf</filename> file as explained in  
     1116              modify CUPS' <filename>printers.conf</filename> file as explained in 
    11171117              PyKota's toplevel <filename>README</filename> file. 
    11181118            </para> 
     
    11231123          one. 
    11241124        </para> 
    1125          
     1125 
    11261126        <para> 
    11271127          Repeat the above procedure for each print queue on which you want to use 
    11281128          PyKota. That's all ! 
    11291129        </para> 
    1130          
     1130 
    11311131        <sect4> 
    11321132          <title>Troubleshooting</title> 
     
    11361136            well as the hardware and software you use. 
    11371137          </para> 
    1138            
     1138 
    11391139          <para> 
    1140             A searchable FAQ is now available at  
     1140            A searchable FAQ is now available at 
    11411141            <ulink url="http://otrs.librelogiciel.com/otrs/public.pl">http://otrs.librelogiciel.com/public.pl</ulink>. 
    11421142            A FAQ entry explaining in great details how to diagnose a problem correctly is 
    1143             available at  
     1143            available at 
    11441144            <ulink url="http://otrs.librelogiciel.com/otrs/public.pl?ID=2">http://otrs.librelogiciel.com/public.pl?ID=2</ulink>. 
    11451145          </para> 
    1146            
     1146 
    11471147          <para> 
    11481148            You can also ask questions on IRC : 
    11491149            <screen> 
    1150     /server irc.freenode.net           
     1150    /server irc.freenode.net 
    11511151    /join #pykota 
    11521152            </screen> 
    1153           </para>   
    1154         </sect4>   
    1155          
     1153          </para> 
     1154        </sect4> 
     1155 
    11561156      </sect3> 
    1157        
    1158     </sect2>   
     1157 
     1158    </sect2> 
    11591159  </sect1> 
    11601160</chapter> 
  • pykota/trunk/docs/introduction.sgml

    r3345 r3413  
    33<chapter> 
    44  <title id="introduction">Introduction to PyKota</title> 
    5    
     5 
    66  <para>Last modified on $Date$</para> 
    7    
     7 
    88  <para> 
    99    This chapter will briefly introduce you to PyKota, and will familiarize 
    1010    you with this software and its components. 
    1111  </para> 
    12    
    13    
     12 
     13 
    1414  <sect1> 
    1515    <title>What is <application>PyKota</application> ?</title> 
    16      
     16 
    1717    <para> 
    1818      <application>PyKota</application> is a print quota and print accounting software solution 
    1919      for GNU/Linux and compatible print servers. 
    2020    </para> 
    21      
     21 
    2222    <para> 
    2323      PyKota currently supports the 
    2424      <ulink url="http://www.cups.org"><application>CUPS</application></ulink> 
    2525      <footnote><para>Common UNIX Printing System</para></footnote> 
    26       printing subsystem, although older releases also supported  
     26      printing subsystem, although older releases also supported 
    2727      <ulink url="http://lprng.sourceforge.net"><application>LPRng</application></ulink>. 
    2828    </para> 
    29      
     29 
    3030    <para> 
    3131      PyKota is distributed under the terms of the GNU General Public License of the 
     
    3434      the terms of this license. 
    3535    </para> 
    36      
     36 
    3737    <para> 
    3838      We believe that despite being a bit rough around the edges sometimes, <application>PyKota</application> 
     
    4141      for the next release. 
    4242    </para> 
    43      
     43 
    4444    <para> 
    4545      <application>PyKota</application> is however a somewhat complex piece of software, and installing 
     
    4747      next chapter. 
    4848    </para> 
    49      
     49 
    5050    <para> 
    5151      <application>PyKota</application> is made of the following components : 
     
    7373                  so please give particular attention to this file's permissions. 
    7474                </para> 
    75               </listitem>   
    76               <listitem> 
    77                 <para> 
    78                   <filename>pykota.conf</filename> : this is the main configuration file for  
     75              </listitem> 
     76              <listitem> 
     77                <para> 
     78                  <filename>pykota.conf</filename> : this is the main configuration file for 
    7979                  <application>PyKota</application>. It contains database settings which 
    8080                  allow the <application>PyKota</application> software to access to the print 
    8181                  quota database in readonly mode, as well as global and print queue specific 
    82                   configuration directives. With a properly configured <application>PyKota</application>,  
     82                  configuration directives. With a properly configured <application>PyKota</application>, 
    8383                  letting normal users read this file is safe 
    8484                  excepted where you want to forbid users to read other users' print quota 
     
    8787                  use any of the <application>PyKota</application> command line tools. 
    8888                </para> 
    89               </listitem>   
     89              </listitem> 
    9090            </itemizedlist> 
    9191          </para> 
    92         </listitem>   
     92        </listitem> 
    9393        <listitem> 
    9494          <para> 
     
    100100            for other database backends might be added in a future release. 
    101101          </para> 
    102         </listitem>   
     102        </listitem> 
    103103        <listitem> 
    104104          <para> 
     
    108108            of circumstances like the user being over quota, and interact with the end user through the use of external 
    109109            commands or shell scripts. This software is written in such a manner than system 
    110             administrators can plug their own scripts at the most strategic points of the  
     110            administrators can plug their own scripts at the most strategic points of the 
    111111            printing process, through specific directives that you put in <application>PyKota</application>'s 
    112112            configuration files. 
    113113          </para> 
    114         </listitem>   
     114        </listitem> 
    115115        <listitem> 
    116116          <para> 
     
    126126                  interactive way, but currently only under Debian and Ubuntu. 
    127127                </para> 
    128               </listitem>   
     128              </listitem> 
    129129              <listitem> 
    130130                <para> 
     
    133133                  into a turn-key solution, hence the name. 
    134134                </para> 
    135               </listitem>   
     135              </listitem> 
    136136              <listitem> 
    137137                <para> 
    138138                  <command>pkprinters</command> : to manage printers and printers groups. 
    139139                </para> 
    140               </listitem>   
     140              </listitem> 
    141141              <listitem> 
    142142                <para> 
    143143                  <command>pkusers</command> : to manage users and users groups. 
    144144                </para> 
    145               </listitem>   
     145              </listitem> 
    146146              <listitem> 
    147147                <para> 
    148148                  <command>edpykota</command> : to manage users' and users groups' print quota entries. 
    149149                </para> 
    150               </listitem>   
     150              </listitem> 
    151151              <listitem> 
    152152                <para> 
    153153                  <command>pkbcodes</command> : to manage billing codes. 
    154154                </para> 
    155               </listitem>   
     155              </listitem> 
    156156              <listitem> 
    157157                <para> 
    158158                  <command>repykota</command> : to do some basic print quota reporting. 
    159159                </para> 
    160               </listitem>   
     160              </listitem> 
    161161              <listitem> 
    162162                <para> 
     
    166166                   numerous output formats are supported, like <acronym>csv</acronym> and <acronym>XML</acronym> 
    167167                </para> 
    168               </listitem>   
     168              </listitem> 
    169169              <listitem> 
    170170                <para> 
     
    173173                   instead from <filename>pykota.conf</filename>'s <literal>policy</literal> directive. 
    174174                </para> 
    175               </listitem>   
     175              </listitem> 
    176176              <listitem> 
    177177                <para> 
     
    180180                  application which works under the X Window system. 
    181181                </para> 
    182               </listitem>   
     182              </listitem> 
    183183              <listitem> 
    184184                <para> 
     
    187187                  a less costly printer. 
    188188                </para> 
    189               </listitem>   
     189              </listitem> 
    190190              <listitem> 
    191191                <para> 
     
    193193                   This command is 
    194194                   not meant to be used from the command line, but 
    195                    instead from <filename>pykota.conf</filename>'s <literal>startingbanner</literal>  
     195                   instead from <filename>pykota.conf</filename>'s <literal>startingbanner</literal> 
    196196                   and <literal>endingbanner</literal> directives. If you prefer you can use 
    197197                   your own generator of dynamic banner pages or even static banner pages. 
    198198                </para> 
    199               </listitem>   
     199              </listitem> 
    200200              <listitem> 
    201201                <para> 
     
    204204                  this command is meant to be used as a periodic reminder. 
    205205                </para> 
    206               </listitem>   
     206              </listitem> 
    207207              <listitem> 
    208208                <para> 
     
    210210                  tools allow you to interact with end users at printing time. 
    211211                </para> 
    212               </listitem>   
     212              </listitem> 
    213213              <listitem> 
    214214                <para> 
     
    216216                  for your users from their printing history. 
    217217                </para> 
    218               </listitem>   
    219               <listitem> 
    220                 <para> 
    221                   <command>pkrefund</command> : a tool with which you can refund print jobs  
     218              </listitem> 
     219              <listitem> 
     220                <para> 
     221                  <command>pkrefund</command> : a tool with which you can refund print jobs 
    222222                  when there was an accounting problem. It can generate printable receipts 
    223223                  in the PDF format. 
    224224                </para> 
    225               </listitem>   
     225              </listitem> 
    226226            </itemizedlist> 
    227227          </para> 
    228         </listitem>   
     228        </listitem> 
    229229        <listitem> 
    230230          <para> 
     
    236236              <listitem> 
    237237                <para> 
    238                   <command>printquota.cgi</command> : to do basic print quota reports like repykota,  
     238                  <command>printquota.cgi</command> : to do basic print quota reports like repykota, 
    239239                  and also to examine the printing history, which is not possible with repykota for now. 
    240240                </para> 
    241               </listitem>   
     241              </listitem> 
    242242              <listitem> 
    243243                <para> 
     
    245245                  command line tool, but works from within a web browser. 
    246246                </para> 
    247               </listitem>   
     247              </listitem> 
    248248              <listitem> 
    249249                <para> 
     
    251251                  command line tool, but works from within a web browser. 
    252252                </para> 
    253               </listitem>   
     253              </listitem> 
    254254            </itemizedlist> 
    255255          </para> 
    256         </listitem>   
     256        </listitem> 
    257257        <listitem> 
    258258          <para> 
     
    261261            you may find interesting things... 
    262262          </para> 
    263         </listitem>   
     263        </listitem> 
    264264      </itemizedlist> 
    265265    </para> 
    266      
    267   </sect1>   
    268    
     266 
     267  </sect1> 
     268 
    269269</chapter> 
    270270 
  • pykota/trunk/docs/pkbanner.sgml

    r2561 r3413  
    44  <title>Generate banners with pkbanner</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    <application>CUPS</application> integrated bannering facility sucks because banners can only 
     
    1010    to have several banners and jobs mixed in an unexpected way because of the way <application>CUPS</application> 
    1111    works. 
    12   </para>   
    13    
     12  </para> 
     13 
    1414  <para> 
    1515    To fix this problem for good, <application>PyKota</application> can use its own banners, which can be : 
     
    2222      <listitem> 
    2323        <para> 
    24           The output of any executable command of your choice, launched at printing time,  
     24          The output of any executable command of your choice, launched at printing time, 
    2525          and to which are made available a bunch of environment variables which can help 
    26           your command create a purely dynamic banner on the fly. In particular your  
     26          your command create a purely dynamic banner on the fly. In particular your 
    2727          command knows all about the status of the current user's print quota information. 
    2828        </para> 
     
    3030    </itemizedlist> 
    3131  </para> 
    32    
     32 
    3333  <para> 
    3434    Although you can use any command to generate banners for you, you can also use 
     
    3636    It was designed for ease of use, without any compromise on its flexibility. 
    3737  </para> 
    38    
     38 
    3939  <para> 
    4040    For example <command>pkbanner</command> allows you to specify a particular logo and url to be 
    41     printed on the banner pages, as well as define a transparency factor to save toner while  
     41    printed on the banner pages, as well as define a transparency factor to save toner while 
    4242    printing banners. You can also choose a particular page size to use, as well as include 
    4343    additionnal textual information on the banner page. 
    4444  </para> 
    45    
     45 
    4646  <para> 
    4747    <command>pkbanner</command> generates PostScript code, but <application>PyKota</application> 
     
    4949    another file format for your printer. 
    5050  </para> 
    51    
     51 
    5252  <para> 
    53     <command>pkbanner</command> is not meant to be launched from the command line though,  
     53    <command>pkbanner</command> is not meant to be launched from the command line though, 
    5454    but only through the <literal>startingbanner</literal> and <literal>endingbanner</literal> 
    5555    directives in <filename>pykota.conf</filename>. 
    5656  </para> 
    57    
     57 
    5858  <sect1> 
    5959    <title>Reference</title> 
     
    6666          <arg>-l <replaceable>image</replaceable></arg> 
    6767          <arg>--logo <replaceable>image</replaceable></arg> 
    68         </group>   
     68        </group> 
    6969        <group choice="opt"> 
    7070          <arg>-p <replaceable>size</replaceable></arg> 
    7171          <arg>--pagesize <replaceable>size</replaceable></arg> 
    72         </group>   
     72        </group> 
    7373        <group choice="opt"> 
    7474          <arg>-s <replaceable>luminosity</replaceable></arg> 
    7575          <arg>--savetoner <replaceable>luminosity</replaceable></arg> 
    76         </group>   
     76        </group> 
    7777        <group choice="opt"> 
    7878          <arg>-u <replaceable>link</replaceable></arg> 
    7979          <arg>--url <replaceable>link</replaceable></arg> 
    80         </group>   
     80        </group> 
    8181        <group choice="opt"> 
    8282          <arg><replaceable>additionnal info</replaceable></arg> 
  • pykota/trunk/docs/pkbcodes.sgml

    r2555 r3413  
    44  <title>Manage billing codes with pkbcodes</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    Some people like lawyers for example need to be able to invoice their own clients 
     
    1010    the possibility to attach a particular billing code to each print job, and of course, 
    1111    <application>PyKota</application> can make use of it. 
    12   </para>   
    13    
     12  </para> 
     13 
    1414  <para> 
    15     To use a billing code when printing, you have to pass an additionnal argument to the  
     15    To use a billing code when printing, you have to pass an additionnal argument to the 
    1616    <command>lp</command> command, for example for a client named <literal>smith</literal> 
    1717    this could be something like : 
     
    2020    </screen> 
    2121  </para> 
    22    
     22 
    2323  <para> 
    2424    For <application>PyKota</application> to be able to maintain statistics 
     
    2626    database. This is the main goal of the <command>pkbcodes</command> command line tool. 
    2727  </para> 
    28    
     28 
    2929  <para> 
    3030    But <command>pkbcodes</command> also allows you to add a textual description to each billing 
     
    3232    existing billing codes. 
    3333  </para> 
    34    
     34 
    3535  <para> 
    3636    With the help of the <literal>unknown_billingcode</literal> directive in 
     
    4141    administrator. 
    4242  </para> 
    43    
     43 
    4444  <para> 
    4545    Finally, the <literal>overwrite_jobticket</literal> directive in 
     
    4848    doesn't allow end users to give a value to the billing code when submitting the print job. 
    4949  </para> 
    50    
     50 
    5151  <sect1> 
    5252    <title>Reference</title> 
  • pykota/trunk/docs/pkinvoice.sgml

    r3115 r3413  
    44  <title>Invoice your users with pkinvoice</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    <command>pkinvoice</command> is a command line tool with which you'll be able to extract jobs from the printing history, 
    99    and generate nice looking and configurable <acronym>PDF</acronym> invoices. 
    10   </para>   
    11    
     10  </para> 
     11 
    1212  <para> 
    1313    You'll be allowed to optionally filter the data extraction based on starting and ending dates, which 
    1414    defaults to the complete history, user, printer, client hostname, etc... 
    1515  </para> 
    16    
     16 
    1717  <para> 
    1818    The generated documents will contain one page per user, and the amount on the invoice will represent 
    1919    how many credits each user spent during the specified time period. 
    2020  </para> 
    21    
     21 
    2222  <para> 
    2323    For more details, please refer to <command>pkinvoice</command>'s manual page. 
  • pykota/trunk/docs/pknotify.sgml

    r2836 r3413  
    44  <title>Interact with end users with pknotify and pykoticon</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    Printing under GNU/Linux and UNIX-Like systems usually lack features to dialog with end users. 
     
    1010    silently. 
    1111  </para> 
    12    
     12 
    1313  <para> 
    1414    Some add-ons to printing systems, like print accounting software, could however benefit 
     
    1717    do so in a completely generic way. 
    1818  </para> 
    19    
     19 
    2020  <para> 
    2121    <application>PyKotIcon</application> is a cross-platform, generic, networked, dialog box manager 
     
    4949    </itemizedlist> 
    5050  </para> 
    51    
     51 
    5252  <para> 
    5353    It is important to know that <application>PyKotIcon</application> is completely independant from <application>PyKota</application> 
     
    5555    knows NOTHING about print accounting, and doesn't need to. That's why it's distributed separately. 
    5656  </para> 
    57    
     57 
    5858  <para> 
    5959    <application>pknotify</application> is a client program for <application>PyKotIcon</application>, which is usually 
     
    6161    from the command line as well, if needed. 
    6262  </para> 
    63    
     63 
    6464  <para> 
    6565    <application>pknotify</application>, through command line options, can use any of the functions published 
     
    7272    allowed to continue until the next phase of print accounting and optional quota enforcement. 
    7373  </para> 
    74    
     74 
    7575  <para> 
    7676    For more details, see <command>pknotify</command>'s manual page. 
    7777  </para> 
    78    
     78 
    7979  <warning><title>Warning</title> 
    8080    <para> 
  • pykota/trunk/docs/pkprinters.sgml

    r2551 r3413  
    44  <title>Manage printers with pkprinters</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    8     <command>pkprinters</command> is the preferred tool to manage printers in <application>PyKota</application>.   
     8    <command>pkprinters</command> is the preferred tool to manage printers in <application>PyKota</application>. 
    99    It only manages printers, and do it well. With it you can add or delete printers or printer groups, or modify 
    1010    existing printers or printers groups. This is also the tool to use to put printers into one or more printers groups. 
    11   </para>   
    12    
     11  </para> 
     12 
    1313  <para> 
    14     The very first thing you have to do once <application>PyKota</application> is installed but before it can work,  
     14    The very first thing you have to do once <application>PyKota</application> is installed but before it can work, 
    1515    is to add into <application>PyKota</application>'s database an entry for each of the print queues on 
    1616    which you want to have print quota or accounting. 
     
    1919    like full management of printers. 
    2020  </para> 
    21    
     21 
    2222  <para> 
    2323    Let's say your printing system has several print queues defined : <literal>HP2100</literal>, <literal>TekTro</literal>, 
    2424    and <literal>StylusColor1</literal> and <literal>StylusColor2</literal>. You want to charge 5 cents per page on each of this print queues. 
    2525    You just have to type : 
    26 <screen>     
     26<screen> 
    2727$ pkprinters --add --charge 0.05 HP2100 TekTro StylusColor1 StylusColor2 
    2828</screen> 
     
    3333    </warning> 
    3434  </para> 
    35    
     35 
    3636  <para> 
    37     After some minutes, you think that you should charge more on the <literal>StylusColor1</literal>  
    38     and <literal>StylusColor2</literal> because they can do color.  
     37    After some minutes, you think that you should charge more on the <literal>StylusColor1</literal> 
     38    and <literal>StylusColor2</literal> because they can do color. 
    3939    You also want to enter a description for these printers, because you have several 
    4040    of them : 
    41 <screen>     
     41<screen> 
    4242$ pkprinters --charge 0.25 "StylusColor*" 
    4343$ pkprinters --description "Stylus Color 900 First floor" StylusColor1 
     
    4545</screen> 
    4646  </para> 
    47    
     47 
    4848  <para> 
    4949    You can now verify what you did : 
    50 <screen>     
     50<screen> 
    5151$ pkprinters --list 
    5252HP2100 [] (0.0 + #*0.05) 
     
    5656</screen> 
    5757  </para> 
    58    
     58 
    5959  <para> 
    6060    The command above has listed all print queues present in <application>PyKota</application>'s database, 
    61     along with their optional description and their base cost formula.  
     61    along with their optional description and their base cost formula. 
    6262    The cost formula includes the price per job, <literal>0.0</literal> in our examples, 
    6363    and the price per page (<literal>#</literal> representing the number of pages). 
    6464  </para> 
    65    
     65 
    6666  <para> 
    6767    If you defined printers groups, then the total cost is computed as the recursive 
     
    7171    cost of printing on a particular printer for a particular user. 
    7272  </para> 
    73    
     73 
    7474  <sect1> 
    7575    <title>Reference</title> 
     
    8989          <arg>-c <replaceable>p</replaceable>,<replaceable>j</replaceable></arg> 
    9090          <arg>--charge <replaceable>p</replaceable>,<replaceable>j</replaceable></arg> 
    91         </group>   
     91        </group> 
    9292        <group choice="opt"> 
    9393          <arg>-g <replaceable>pgroup1</replaceable>,<replaceable>pgroup2</replaceable>,<replaceable>...</replaceable></arg> 
    9494          <arg>--groups <replaceable>pgroup1</replaceable>,<replaceable>pgroup2</replaceable>,<replaceable>...</replaceable></arg> 
    95         </group>   
     95        </group> 
    9696        <group choice="opt"><arg>-l</arg><arg>--list</arg></group> 
    9797        <group choice="opt"><arg>-r</arg><arg>--remove</arg></group> 
     
    100100          <arg>-m <replaceable>s</replaceable></arg> 
    101101          <arg>--maxjobsize <replaceable>s</replaceable></arg> 
    102         </group>   
     102        </group> 
    103103        <group choice="opt"><arg>-p</arg><arg>--passthrough</arg></group> 
    104104        <group choice="opt"><arg>-n</arg><arg>--nopassthrough</arg></group> 
  • pykota/trunk/docs/pkrefund.sgml

    r3115 r3413  
    44  <title>Refund your users with pkrefund</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    <command>pkrefund</command> is a command line tool with which you'll be able to extract jobs from the printing history, 
    99    and refund them with the possibility to generate nice looking and configurable <acronym>PDF</acronym> receipts. 
    10   </para>   
    11    
     10  </para> 
     11 
    1212  <para> 
    1313    You'll be allowed to optionally filter the data extraction based on starting and ending dates, which 
    1414    defaults to the complete history, user, printer, client hostname, etc... 
    1515  </para> 
    16    
     16 
    1717  <para> 
    1818    The generated documents will contain one page per user, with the number of pages and credits 
    1919    which were refunded. 
    2020  </para> 
    21    
     21 
    2222  <para> 
    2323    For more details, please refer to <command>pkrefund</command>'s manual page. 
  • pykota/trunk/docs/pkturnkey.sgml

    r2560 r3413  
    44  <title>Initialize your database with pkturnkey</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    The ultimate goal of the <command>pkturnkey</command> command line tool is 
    99    to transform <application>PyKota</application> into a turn-key solution. 
    10   </para>   
    11    
     10  </para> 
     11 
    1212  <para> 
    1313    For now its functionnalities are fairly limited, but it can : 
     
    1717          Import existing print queues into <application>PyKota</application>'s database. 
    1818        </para> 
    19       </listitem>   
     19      </listitem> 
    2020      <listitem> 
    2121        <para> 
    2222          Import existing users into <application>PyKota</application>'s database. 
    2323        </para> 
    24       </listitem>   
     24      </listitem> 
    2525      <listitem> 
    2626        <para> 
    2727          Import existing users groups into <application>PyKota</application>'s database. 
    2828        </para> 
    29       </listitem>   
     29      </listitem> 
    3030      <listitem> 
    3131        <para> 
    3232          Tell you which accounting method is the best for your printers. 
    3333        </para> 
    34       </listitem>   
     34      </listitem> 
    3535    </itemizedlist> 
    3636  </para> 
    37    
     37 
    3838  <para> 
    3939    In the future, it is possible that this command will entirely generate configuration 
    40     files for you, and do a bunch of other things to ease the installation and  
     40    files for you, and do a bunch of other things to ease the installation and 
    4141    configuration of <application>PyKota</application> 
    4242  </para> 
    43    
     43 
    4444  <para> 
    4545    One very important thing to remember is that, by default, <command>pkturnkey</command> 
     
    5050    it would launch. 
    5151  </para> 
    52    
     52 
    5353  <para> 
    5454    You can restrict the datas you want to import into the database by using the 
     
    5656    arguments at the end of the command line. 
    5757  </para> 
    58    
     58 
    5959  <para> 
    6060    The following example will import all existing print queues, as well as all 
     
    6262    gid is comprised between 5000 and 6000 : 
    6363    <screen> 
    64 $ pkturnkey --force --uidmin 1000 --dousers --uidmax 50000 --dogroups --gidmin 5000 --gidmax 6000     
     64$ pkturnkey --force --uidmin 1000 --dousers --uidmax 50000 --dogroups --gidmin 5000 --gidmax 6000 
    6565    </screen> 
    6666  </para> 
    67    
     67 
    6868  <sect1> 
    6969    <title>Reference</title> 
     
    7979          <arg>-u <replaceable>uid</replaceable></arg> 
    8080          <arg>--uidmin <replaceable>uid</replaceable></arg> 
    81         </group>   
     81        </group> 
    8282        <group choice="opt"> 
    8383          <arg>-U <replaceable>uid</replaceable></arg> 
    8484          <arg>--uidmax <replaceable>uid</replaceable></arg> 
    85         </group>   
     85        </group> 
    8686        <group choice="opt"> 
    8787          <arg>-g <replaceable>gid</replaceable></arg> 
    8888          <arg>--gidmin <replaceable>gid</replaceable></arg> 
    89         </group>   
     89        </group> 
    9090        <group choice="opt"> 
    9191          <arg>-G <replaceable>gid</replaceable></arg> 
    9292          <arg>--gidmax <replaceable>gid</replaceable></arg> 
    93         </group>   
     93        </group> 
    9494      </cmdsynopsis> 
    9595    </para> 
  • pykota/trunk/docs/pkusers.sgml

    r2833 r3413  
    44  <title id="pkusers">Manage Users and Groups with pkusers</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    You'll use this tool to create, manage or delete users or users groups from the database. 
     
    1010    MUST add this user or group to the database using <command>pkusers</command>. 
    1111  </para> 
    12    
     12 
    1313  <para> 
    1414    The simplest way to add an user named <literal>jerome</literal> to the database is 
    1515    to type : 
    16 <screen>     
     16<screen> 
    1717$ pkusers --add jerome 
    1818</screen> 
    1919  </para> 
    20    
     20 
    2121  <para> 
    2222    The commands above have created user <literal>jerome</literal> in the database. By default this 
     
    2424    user on any printer. This has to be done through the <command>edpykota</command> command line tool. 
    2525  </para> 
    26    
     26 
    2727  <para> 
    2828    You can apply different sorts of limitations to an user or users group, by specifying a 
     
    3131      <listitem> 
    3232        <para> 
    33           <literal>--limitby quota</literal> : Page quotas are defined for each user on each printer.  
     33          <literal>--limitby quota</literal> : Page quotas are defined for each user on each printer. 
    3434          This means that an user can be 
    3535          limited to print more than 20 pages on printer <literal>HP2100</literal> while still 
     
    3737          This is the default. 
    3838        </para> 
    39       </listitem>   
     39      </listitem> 
    4040      <listitem> 
    4141        <para> 
     
    4848          user, account balance quotas are shared between all printers for a particular user. 
    4949        </para> 
    50       </listitem>   
     50      </listitem> 
    5151      <listitem> 
    5252        <para> 
     
    5454          accounting continues to be done. 
    5555        </para> 
    56       </listitem>   
     56      </listitem> 
    5757      <listitem> 
    5858        <para> 
     
    6161          This value is not supported for users groups. 
    6262        </para> 
    63       </listitem>   
     63      </listitem> 
    6464      <listitem> 
    6565        <para> 
     
    6767          This value is not supported for users groups. 
    6868        </para> 
    69       </listitem>   
    70     </itemizedlist>   
     69      </listitem> 
     70    </itemizedlist> 
    7171  </para> 
    72    
     72 
    7373  <para> 
    7474    Here's an incomplete list of features : 
    75      
     75 
    7676    <itemizedlist> 
    7777      <listitem> 
     
    117117    </itemizedlist> 
    118118  </para> 
    119    
     119 
    120120  <para> 
    121121    For more details on the use of <command>pkusers</command>, please see this command's manual 
    122122    page or help. 
    123123  </para> 
    124    
     124 
    125125</chapter> 
    126126 
  • pykota/trunk/docs/pykosd.sgml

    r2551 r3413  
    44  <title>Uses On Screen Display to show personal print quota information with pykosd</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    8     <command>pykosd</command> is a graphical <application>X Window</application> application which when launched  
     8    <command>pykosd</command> is a graphical <application>X Window</application> application which when launched 
    99    will display print quota information for the current user. 
    10   </para>   
    11    
     10  </para> 
     11 
    1212  <para> 
    1313    Whenever you launch <command>pykosd</command>, it will display the current user's print quota 
    1414    information in the top-left corner of the screen, above all existing windows, and with 
    15     a transparent background.  
     15    a transparent background. 
    1616  </para> 
    17    
     17 
    1818  <para> 
    1919    By default, the information will remain displayed during <literal>3</literal> seconds, and 
    20     will be refreshed every <literal>180</literal> seconds. The program will loop forever  
     20    will be refreshed every <literal>180</literal> seconds. The program will loop forever 
    2121    until <keysym>Ctrl+C</keysym> is pressed, unless a specific number of iterations was 
    2222    asked for. 
    23      
     23 
    2424    <tip> 
    2525      <title>Tip</title> 
     
    2929    </tip> 
    3030  </para> 
    31    
     31 
    3232  <sect1> 
    3333    <title>Reference</title> 
  • pykota/trunk/docs/pykota.sgml

    r3407 r3413  
    7171 
    7272      <para> 
    73         This documentation is licensed under the terms of the GNU  
     73        This documentation is licensed under the terms of the GNU 
    7474        General Public License as described below. 
    7575      </para> 
    76        
     76 
    7777      <para> 
    7878        This program is free software: you can redistribute it and/or modify 
     
    8181        (at your option) any later version. 
    8282      </para> 
    83          
     83 
    8484      <para> 
    8585        This program is distributed in the hope that it will be useful, 
     
    8888        GNU General Public License for more details. 
    8989      </para> 
    90          
     90 
    9191      <para> 
    9292        You should have received a copy of the GNU General Public License 
    9393        along with this program.  If not, see <http://www.gnu.org/licenses/>. 
    9494      </para> 
    95        
     95 
    9696      <para> 
    9797        A copy of the entire license is included in the section entitled "GNU 
     
    117117 
    118118  &INTRODUCTION; 
    119    
     119 
    120120  &INSTALLATION; 
    121    
     121 
    122122  &FILTERPYKOTA; 
    123    
     123 
    124124  &PKTURNKEY; 
    125    
     125 
    126126  &PKPRINTERS; 
    127    
     127 
    128128  &PKUSERS; 
    129129 
    130130  &EDPYKOTA; 
    131    
     131 
    132132  &REPYKOTA; 
    133      
    134   &PYKOTME;   
    135    
     133 
     134  &PYKOTME; 
     135 
    136136  &WARNPYKOTA; 
    137    
     137 
    138138  &DUMPYKOTA; 
    139    
     139 
    140140  &PKBCODES; 
    141    
     141 
    142142  &PYKOSD; 
    143    
     143 
    144144  &AUTOPYKOTA; 
    145    
     145 
    146146  &PKINVOICE; 
    147    
     147 
    148148  &PKREFUND; 
    149    
     149 
    150150  &PKBANNER; 
    151    
     151 
    152152  &PKNOTIFY; 
    153    
     153 
    154154  &SCRIPTS; 
    155      
     155 
    156156  &GNUGPL; 
    157157 
  • pykota/trunk/docs/pykotme.sgml

    r2909 r3413  
    44  <title id="pykotme">Get print quotes before printing for real with <command>pykotme</command></title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    PyKota features a print quote generator, named <command>pykotme</command>. 
     
    1212    knowingly. 
    1313  </para> 
    14    
     14 
    1515  <para> 
    1616    To get a print quote, you have to launch <command>pykotme</command> 
    1717    from the command line, passing your print job's content in any format 
    18     recognized by PyKota  
     18    recognized by PyKota 
    1919    <footnote><para>PyKota now uses <ulink url="http://www.pykota.com/software/pkpgcounter">pkpgcounter</ulink> 
    2020    which recognizes PostScript (both binary and DSC compliant), 
     
    2323    or on its standard input (i.e. in a shell pipe or redirection). 
    2424  </para> 
    25    
     25 
    2626  <para> 
    2727    Without any command line argument, <command>pykotme</command> 
    2828    automatically reads your job's data from its standard input. 
    2929  </para> 
    30    
     30 
    3131  <para> 
    3232    By default, <command>pykotme</command> 
     
    3838    them with commas. 
    3939  </para> 
    40    
     40 
    4141  <para> 
    4242    <command>pykotme</command>'s functionnality is also available through the 
     
    4444    However without authentication <command>pykotme.cgi</command> will only 
    4545    return the print job's size and not its cost, because the cost depends on 
    46     the value of the user's overcharging factor and the printer being used.  
    47     That's why if you want to  
    48     obtain the same functionnality with the <acronym>CGI</acronym> script than  
     46    the value of the user's overcharging factor and the printer being used. 
     47    That's why if you want to 
     48    obtain the same functionnality with the <acronym>CGI</acronym> script than 
    4949    with the command line tool, you must configure your web server to force 
    5050    users to authenticate whevenver they access to <command>pykotme.cgi</command>. 
    51     Then they will be able to choose one or more printers (all by default),  
     51    Then they will be able to choose one or more printers (all by default), 
    5252    and also to enter their username, 
    5353    and the exact cost of the print job will be computed. 
    5454  </para> 
    55    
     55 
    5656  <sect1> 
    5757    <title>Examples</title> 
     
    5959      Here are some examples of <command>pykotme</command> usage. 
    6060    </para> 
    61      
     61 
    6262    <para> 
    6363      The simplest form : 
    64 <screen>     
     64<screen> 
    6565port50-2:~$ pykotme pykota.ps 
    6666Your account balance : 16.25 
    6767Job size : 22 pages 
    6868Cost on printer apple : 1.35 
    69 port50-2:~$  
    70 </screen>     
     69port50-2:~$ 
     70</screen> 
    7171    </para> 
    72      
     72 
    7373    <para> 
    7474      More complex, with printer name wildcard and within a pipe : 
    75 <screen>       
     75<screen> 
    7676port50-2:~$ a2ps -o - pykota/README | pykotme --printer "a*" 
    7777[pykota/README (plain): 6 pages on 3 sheets] 
     
    8080Job size : 3 pages 
    8181Cost on printer apple : 0.40 
    82 port50-2:~$  
     82port50-2:~$ 
    8383</screen> 
    8484    </para> 
    8585  </sect1> 
    86    
     86 
    8787  <sect1> 
    8888    <title>Reference</title> 
     
    9595          <arg>-P <replaceable>printername</replaceable></arg> 
    9696          <arg>--printer <replaceable>printername</replaceable></arg> 
    97         </group>   
     97        </group> 
    9898        <group choice="opt"> 
    9999          <arg><replaceable>filename1</replaceable></arg> 
     
    101101          <arg><replaceable>...</replaceable></arg> 
    102102          <arg><replaceable>filenameN</replaceable></arg> 
    103         </group>   
     103        </group> 
    104104      </cmdsynopsis> 
    105105    </para> 
  • pykota/trunk/docs/README

    r3275 r3413  
    2121This directory contains PyKota documentation in DocBook format. 
    2222 
    23 Unless you've purchased an official PyKota package, you're on your  
    24 own to compile the DocBook source files to output formats like HTML  
    25 or PDF.  
     23Unless you've purchased an official PyKota package, you're on your 
     24own to compile the DocBook source files to output formats like HTML 
     25or PDF. 
    2626 
    2727There are also some documents in OpenOffice.org format. 
  • pykota/trunk/docs/repykota.sgml

    r2844 r3413  
    44  <title id="repykota">Create print quota usage reports with repykota</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    To account for print usage is good, however there must be a way to easily 
     
    1010    reports describing current usage for every user on every printer. 
    1111  </para> 
    12    
     12 
    1313  <sect1> 
    1414    <title>Command line based Print Quota reports</title> 
    15      
     15 
    1616    <para> 
    1717      PyKota features a quota report generator, named <command>repykota</command>, 
    1818      with which you can print the current state of the quota database. 
    1919    </para> 
    20      
     20 
    2121    <para> 
    2222      <command>repykota</command> behaves differently when it is launched by a 
    2323      <application>PyKota</application> administrator, compared to when it is launched by a normal user. 
    24     </para>   
    25      
     24    </para> 
     25 
    2626    <para> 
    27       In the first case, the print quota report will contain current account balance,  
     27      In the first case, the print quota report will contain current account balance, 
    2828      soft and hard limits, number of pages printed since last reset, total number 
    2929      of pages printed, total paid, for possibly all users or all groups, depending 
    3030      on command line options. 
    3131    </para> 
    32      
     32 
    3333    <para> 
    3434      In the second case, i.e. when <command>repykota</command> is launched by 
    35       a normal user, the user will only be allowed to see informations about himself or  
     35      a normal user, the user will only be allowed to see informations about himself or 
    3636      the groups he his a member of. 
    3737    </para> 
    38    
     38 
    3939    <para> 
    4040      Any user can limit the report to only one or more printers, by specifying the 
    41       <literal>-P</literal> or <literal>--printer</literal> command line option,  
     41      <literal>-P</literal> or <literal>--printer</literal> command line option, 
    4242      followed by one or more printer name or wildcard. If more than one printer name 
    4343      or wildcard is used, they must be separated by commas. 
    4444    </para> 
    45      
     45 
    4646    <para> 
    4747      Launching <command>repykota</command> with no arguments will generate 
    4848      a complete print quota report, depending on what you are allowed to see. 
    4949    </para> 
    50      
     50 
    5151    <para> 
    5252      Use the <literal>--help</literal> command line argument to learn what are 
    5353      the different command line options available. 
    5454    </para> 
    55      
     55 
    5656    <sect2> 
    5757      <title>Reference</title> 
     
    6666            <arg>-P <replaceable>printername</replaceable></arg> 
    6767            <arg>--printer <replaceable>printername</replaceable></arg> 
    68           </group>   
     68          </group> 
    6969          <group choice="opt"> 
    7070            <arg><replaceable>name1</replaceable></arg> 
     
    7272            <arg><replaceable>...</replaceable></arg> 
    7373            <arg><replaceable>nameN</replaceable></arg> 
    74           </group>   
     74          </group> 
    7575        </cmdsynopsis> 
    7676      </para> 
    7777    </sect2> 
    7878  </sect1> 
    79    
     79 
    8080  <sect1> 
    8181    <title>Web based Print Quota reports</title> 
    82      
     82 
    8383    <para> 
    8484      <application>PyKota</application> also features a CGI script to remotely access 
     
    8888      correctly. 
    8989    </para> 
    90      
     90 
    9191    <para> 
    9292      You may also want to copy the <acronym>CSS</acronym> stylesheets which are present in the 
     
    9595      a nicer web interface. 
    9696    </para> 
    97      
     97 
    9898    <para> 
    9999      You can find <command>printquota.cgi</command> in the <filename>pykota/cgi-bin</filename> 
    100100      directory. Here's how to install it, provided that your web server's <filename>cgi-bin</filename> 
    101101      directory is <filename>/usr/lib/cgi-bin</filename> : 
    102 <screen>       
     102<screen> 
    103103port50-2:/home/jerome/pykota$ cp cgi-bin/printquota.cgi /usr/lib/cgi-bin 
    104104port50-2:/home/jerome/pykota$ chmod 755 /usr/lib/cgi-bin/printquota.cgi 
     
    112112          must ensure that this user <emphasis>is not</emphasis> allowed to read <filename>~pykota/pykotadmin.conf</filename> 
    113113        </para> 
    114       </note>   
     114      </note> 
    115115    </para> 
    116      
     116 
    117117    <para> 
    118118      If you install the CGI script as described above, any user will be allowed to view the complete print 
     
    125125      then there's no restriction on what may appear on the print quota report. 
    126126    </para> 
    127      
     127 
    128128    <para> 
    129129      To automatically ask for an authentication dialog whenever the CGI script is accessed, you have to configure 
    130       your web server to do so. If your webserver is <ulink url="http://httpd.apache.org"><application>Apache</application></ulink>, then it's relatively easy. First you have to put  
     130      your web server to do so. If your webserver is <ulink url="http://httpd.apache.org"><application>Apache</application></ulink>, then it's relatively easy. First you have to put 
    131131      <command>printquota.cgi</command> in its own subdirectory below your web server's <filename>cgi-bin</filename> 
    132132      directory, for example in <filename>cgi-bin/PyKota/</filename>. Then use the <command>htpasswd</command> 
     
    140140      authentication mechanism. 
    141141    </para> 
    142      
     142 
    143143    <para> 
    144144      The detailed procedure to do all this is out of the scope of the present document, please refer to 
    145       <application>Apache</application>'s <ulink url="http://httpd.apache.org/docs-project/">documentation</ulink>  
     145      <application>Apache</application>'s <ulink url="http://httpd.apache.org/docs-project/">documentation</ulink> 
    146146      for all the gory details. 
    147147    </para> 
  • pykota/trunk/docs/scripts.sgml

    r2551 r3413  
    44  <title>Useful Shell Scripts</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    <application>PyKota</application> comes with a number of shell scripts which 
     
    1010    them to your own configuration. All are installed in the <filename>/usr/share/pykota</filename> 
    1111    directory. 
    12   </para>   
    13    
     12  </para> 
     13 
    1414  <sect1> 
    1515    <title>waitprinter.sh</title> 
    1616    <para> 
    17       This script which accepts a printer's hostname or <acronym>IP</acronym> address as its first parameter  
     17      This script which accepts a printer's hostname or <acronym>IP</acronym> address as its first parameter 
    1818      is used to wait for a printer which supports the <acronym>SNMP</acronym> protocol to be in <literal>idle</literal> state. 
    1919      It exits as soon as the printer is <literal>idle</literal>, else loops forever. 
    2020    </para> 
    21      
     21 
    2222    <para> 
    2323      When defining an hardware <literal>accounter</literal> for a printer, it is important to wait for the printer being 
     
    2626      value will be lower than expected with regard to the real job's size. 
    2727    </para> 
    28      
     28 
    2929    <para> 
    3030      <command>waitprinter.sh</command> can be used to be sure that <application>PyKota</application> 
    31       waits until no job is being printed, and no paper sheet is travelling inside the printer.  
     31      waits until no job is being printed, and no paper sheet is travelling inside the printer. 
    3232    </para> 
    33      
     33 
    3434    <tip> 
    3535      <title>Tip</title> 
     
    3737        See the sample configuration file <filename>conf/pykota.conf.sample</filename> for examples. 
    3838      </para> 
    39     </tip>   
     39    </tip> 
    4040  </sect1> 
    41    
     41 
    4242  <sect1> 
    4343    <title>papwaitprinter.sh</title> 
    4444    <para> 
    45       This script which accepts a printer's AppleTalk name as its first parameter  
     45      This script which accepts a printer's AppleTalk name as its first parameter 
    4646      is used to wait for a printer which supports the <acronym>AppleTalk</acronym> protocol to be in <literal>idle</literal> state. 
    4747      It exits as soon as the printer is <literal>idle</literal>, else loops forever. 
    4848    </para> 
    49      
     49 
    5050    <para> 
    5151      When defining an hardware <literal>accounter</literal> for a printer, it is important to wait for the printer being 
     
    5454      value will be lower than expected with regard to the real job's size. 
    5555    </para> 
    56      
     56 
    5757    <para> 
    5858      <command>papwaitprinter.sh</command> can be used to be sure that <application>PyKota</application> 
    59       waits until no job is being printed, and no paper sheet is travelling inside the printer.  
    60     </para>   
    61      
     59      waits until no job is being printed, and no paper sheet is travelling inside the printer. 
     60    </para> 
     61 
    6262    <tip> 
    6363      <title>Tip</title> 
     
    6565        See the sample configuration file <filename>conf/pykota.conf.sample</filename> for examples. 
    6666      </para> 
    67     </tip>   
     67    </tip> 
    6868  </sect1> 
    69    
     69 
    7070  <sect1> 
    7171    <title>mailandpopup.sh</title> 
     
    7575      whenever print quota is low or reached. 
    7676    </para> 
    77      
     77 
    7878    <para> 
    79       For this script to work successfully, you may need to have a <application>Samba</application>  
     79      For this script to work successfully, you may need to have a <application>Samba</application> 
    8080      Primary Domain Controller. Some modifications may be needed in other configurations. 
    8181    </para> 
    82      
     82 
    8383    <tip> 
    8484      <title>Tip</title> 
     
    8686        See the sample configuration file <filename>conf/pykota.conf.sample</filename> for examples. 
    8787      </para> 
    88     </tip>   
     88    </tip> 
    8989  </sect1> 
    90    
     90 
    9191  <sect1> 
    9292    <title>pagecount.pl</title> 
     
    9797      It accepts the printer's hostname or <acronym>IP</acronym> address as its first parameter, 
    9898      and the optional <acronym>TCP</acronym> port as its second parameter (it defaults to 9100). 
    99     </para>   
    100      
     99    </para> 
     100 
    101101    <para> 
    102102      Most of the time you'll use this script in combination with a script which waits for the printer 
    103103      to be in <literal>idle</literal> state, in something like : 
    104 <screen>       
     104<screen> 
    105105accounter: hardware(somewaitscript.sh && pagecount.pl %(printer)s) 
    106106</screen> 
    107107    </para> 
    108      
     108 
    109109    <tip> 
    110110      <title>Tip</title> 
     
    112112        See the sample configuration file <filename>conf/pykota.conf.sample</filename> for examples. 
    113113      </para> 
    114     </tip>   
     114    </tip> 
    115115  </sect1> 
    116116</chapter> 
  • pykota/trunk/docs/warnpykota.sgml

    r2844 r3413  
    44  <title>Warn users above print quota with warnpykota</title> 
    55  <para>Last modified on $Date$</para> 
    6    
     6 
    77  <para> 
    88    Whenever a user tries to print a document, if he is over his print quota, 
     
    1313    to print again. 
    1414  </para> 
    15    
     15 
    1616  <para> 
    1717    However this may not be sufficient, and you may want to warn users who 
     
    1919    regular intervals, like every day, for example from a <application>cron</application> job. 
    2020  </para> 
    21    
     21 
    2222  <para> 
    2323    This may be useful if the user has reached his print quota, and have received an email message telling him so, 
     
    2525    paper for example. 
    2626  </para> 
    27    
     27 
    2828  <para> 
    29     The <command>warnpykota</command> command was written with this in mind.  
     29    The <command>warnpykota</command> command was written with this in mind. 
    3030    If you put this command in your <filename>crontab</filename>, launching it for example 
    3131    every day, then you'll be sure that all your users who are above their print quota 
     
    3333    but at least they won't be able to say that they didn't receive them ;-) 
    3434  </para> 
    35    
     35 
    3636  <para> 
    3737    When an user who is not a <application>PyKota</application> administrator launches this command, only him can receive a warning 
     
    4343    command. 
    4444  </para> 
    45    
     45 
    4646  <para> 
    47     <application>PyKota</application> administrators can pass additionnal user or group names  
     47    <application>PyKota</application> administrators can pass additionnal user or group names 
    4848    (or wildcard filters) to only check the users or groups whose name matches. 
    49   </para>   
    50    
     49  </para> 
     50 
    5151  <sect1> 
    5252    <title>Reference</title> 
     
    6161          <arg>-P <replaceable>printername</replaceable></arg> 
    6262          <arg>--printer <replaceable>printername</replaceable></arg> 
    63         </group>   
     63        </group> 
    6464        <group choice="opt"> 
    6565          <arg><replaceable>name1</replaceable></arg> 
     
    6767          <arg><replaceable>...</replaceable></arg> 
    6868          <arg><replaceable>nameN</replaceable></arg> 
    69         </group>   
     69        </group> 
    7070      </cmdsynopsis> 
    7171    </para>