1 | <!-- $Id$ --> |
---|
2 | |
---|
3 | <chapter> |
---|
4 | <title id="introduction">Introduction to PyKota</title> |
---|
5 | |
---|
6 | <para>Last modified on $Date$</para> |
---|
7 | |
---|
8 | <para> |
---|
9 | This chapter will briefly introduce you to PyKota, and will familiarize |
---|
10 | you with this software and its components. |
---|
11 | </para> |
---|
12 | |
---|
13 | |
---|
14 | <sect1> |
---|
15 | <title>What is <application>PyKota</application> ?</title> |
---|
16 | |
---|
17 | <para> |
---|
18 | <application>PyKota</application> is a print quota and print accounting software solution |
---|
19 | for GNU/Linux and compatible print servers. |
---|
20 | </para> |
---|
21 | |
---|
22 | <para> |
---|
23 | PyKota currently supports the |
---|
24 | <ulink url="http://www.cups.org"><application>CUPS</application></ulink> |
---|
25 | <footnote><para>Common UNIX Printing System</para></footnote> |
---|
26 | printing subsystem, although older releases also supported |
---|
27 | <ulink url="http://lprng.sourceforge.net"><application>LPRng</application></ulink>. |
---|
28 | </para> |
---|
29 | |
---|
30 | <para> |
---|
31 | PyKota is distributed under the terms of the GNU General Public License of the |
---|
32 | <ulink url="http://www.fsf.org">Free Software Foundation</ulink>. This means that |
---|
33 | you are allowed to use, modify or redistribute its code provided that you respect |
---|
34 | the terms of this license. |
---|
35 | </para> |
---|
36 | |
---|
37 | <para> |
---|
38 | We believe that despite being a bit rough around the edges sometimes, <application>PyKota</application> |
---|
39 | offers an unmatched flexibility and probably all you want to do with a print quota software is |
---|
40 | either already included, easily scriptable with a few lines of shell scripting, or planned |
---|
41 | for the next release. |
---|
42 | </para> |
---|
43 | |
---|
44 | <para> |
---|
45 | <application>PyKota</application> is however a somewhat complex piece of software, and installing |
---|
46 | it will mandate that you also install several dependencies beforehand, as you'll see in the |
---|
47 | next chapter. |
---|
48 | </para> |
---|
49 | |
---|
50 | <para> |
---|
51 | <application>PyKota</application> is made of the following components : |
---|
52 | <itemizedlist> |
---|
53 | <listitem> |
---|
54 | <para> |
---|
55 | Configuration files, which must be placed into the system user |
---|
56 | <literal>pykota</literal>'s home directory as defined in <filename>/etc/passwd</filename> |
---|
57 | <footnote> |
---|
58 | <para>If your <filename>/etc/passwd</filename> contains something like |
---|
59 | <literal>pykota:x:1001:1001:PyKota Admin,,,:/etc/pykota:/bin/sh</literal> |
---|
60 | then the home directory is <filename>/etc/pykota</filename> |
---|
61 | </para> |
---|
62 | </footnote> : |
---|
63 | <itemizedlist> |
---|
64 | <listitem> |
---|
65 | <para> |
---|
66 | <filename>pykotadmin.conf</filename> : this file contains sensitive database settings |
---|
67 | allowing the <application>PyKota</application> software to modify the |
---|
68 | print quota database. This file should be protected and should only be |
---|
69 | made readable by the administrators of <application>PyKota</application> |
---|
70 | and the system user the printing subsystem is running as. |
---|
71 | The possibility for a particular user to read this file determines if |
---|
72 | this user is a <application>PyKota</application> Administrator or not, |
---|
73 | so please give particular attention to this file's permissions. |
---|
74 | </para> |
---|
75 | </listitem> |
---|
76 | <listitem> |
---|
77 | <para> |
---|
78 | <filename>pykota.conf</filename> : this is the main configuration file for |
---|
79 | <application>PyKota</application>. It contains database settings which |
---|
80 | allow the <application>PyKota</application> software to access to the print |
---|
81 | quota database in readonly mode, as well as global and print queue specific |
---|
82 | configuration directives. With a properly configured <application>PyKota</application>, |
---|
83 | letting normal users read this file is safe |
---|
84 | excepted where you want to forbid users to read other users' print quota |
---|
85 | information. However if you're not confident about your database settings, |
---|
86 | it's better to not let normal users read this file. This way they can't even |
---|
87 | use any of the <application>PyKota</application> command line tools. |
---|
88 | </para> |
---|
89 | </listitem> |
---|
90 | </itemizedlist> |
---|
91 | </para> |
---|
92 | </listitem> |
---|
93 | <listitem> |
---|
94 | <para> |
---|
95 | Either a <application>PostgreSQL</application>, <application>MySQL</application> or <application>SQLite</application> database, or an <acronym>LDAP</acronym> |
---|
96 | <footnote><para>Lightweight Directory Access Protocol</para></footnote> |
---|
97 | <acronym>DIT</acronym> |
---|
98 | <footnote><para>Directory Information Tree</para></footnote> : |
---|
99 | <application>PyKota</application> can store its datas into any of these. Support |
---|
100 | for other database backends might be added in a future release. |
---|
101 | </para> |
---|
102 | </listitem> |
---|
103 | <listitem> |
---|
104 | <para> |
---|
105 | A generic <acronym>CUPS</acronym> backend wrapper, named <command>cupspykota</command> : |
---|
106 | this software captures all print jobs passing through the print queues it manages, |
---|
107 | and does the accounting and quota checking. It can reject print jobs in a number |
---|
108 | of circumstances like the user being over quota, and interact with the end user through the use of external |
---|
109 | 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 |
---|
111 | printing process, through specific directives that you put in <application>PyKota</application>'s |
---|
112 | configuration files. |
---|
113 | </para> |
---|
114 | </listitem> |
---|
115 | <listitem> |
---|
116 | <para> |
---|
117 | Several command line tools to manage print quotas and accounting. All of these |
---|
118 | commands accept the <literal>--version</literal> and <literal>--help</literal> |
---|
119 | command line switches, and all have a manual page. Many manual pages are available |
---|
120 | in several native languages and contain usage examples. Some commands have many |
---|
121 | options and switches, so please read their help carefully. |
---|
122 | <itemizedlist> |
---|
123 | <listitem> |
---|
124 | <para> |
---|
125 | <command>pksetup</command> : to install PyKota in a completely |
---|
126 | interactive way, but currently only under Debian and Ubuntu. |
---|
127 | </para> |
---|
128 | </listitem> |
---|
129 | <listitem> |
---|
130 | <para> |
---|
131 | <command>pkturnkey</command> : to help you do the initial |
---|
132 | configuration and database initialization. This command almost transforms <application>PyKota</application> |
---|
133 | into a turn-key solution, hence the name. |
---|
134 | </para> |
---|
135 | </listitem> |
---|
136 | <listitem> |
---|
137 | <para> |
---|
138 | <command>pkprinters</command> : to manage printers and printers groups. |
---|
139 | </para> |
---|
140 | </listitem> |
---|
141 | <listitem> |
---|
142 | <para> |
---|
143 | <command>pkusers</command> : to manage users and users groups. |
---|
144 | </para> |
---|
145 | </listitem> |
---|
146 | <listitem> |
---|
147 | <para> |
---|
148 | <command>edpykota</command> : to manage users' and users groups' print quota entries. |
---|
149 | </para> |
---|
150 | </listitem> |
---|
151 | <listitem> |
---|
152 | <para> |
---|
153 | <command>pkbcodes</command> : to manage billing codes. |
---|
154 | </para> |
---|
155 | </listitem> |
---|
156 | <listitem> |
---|
157 | <para> |
---|
158 | <command>repykota</command> : to do some basic print quota reporting. |
---|
159 | </para> |
---|
160 | </listitem> |
---|
161 | <listitem> |
---|
162 | <para> |
---|
163 | <command>dumpykota</command> : to dump the database's contents in a portable |
---|
164 | way. This command can be used to export <application>PyKota</application>'s |
---|
165 | datas to third party software, like print log analyzers or spreadsheets, and |
---|
166 | numerous output formats are supported, like <acronym>csv</acronym> and <acronym>XML</acronym> |
---|
167 | </para> |
---|
168 | </listitem> |
---|
169 | <listitem> |
---|
170 | <para> |
---|
171 | <command>autopykota</command> : to automate the creation of user print accounts on |
---|
172 | first print. This command is not meant to be used from the command line, but |
---|
173 | instead from <filename>pykota.conf</filename>'s <literal>policy</literal> directive. |
---|
174 | </para> |
---|
175 | </listitem> |
---|
176 | <listitem> |
---|
177 | <para> |
---|
178 | <command>pykosd</command> : to display their remaining credits or |
---|
179 | pages to end users. This is an <acronym>OSD</acronym> <footnote><para>On Screen Display</para></footnote> |
---|
180 | application which works under the X Window system. |
---|
181 | </para> |
---|
182 | </listitem> |
---|
183 | <listitem> |
---|
184 | <para> |
---|
185 | <command>pykotme</command> : to give detailed quotes to end users before they print, this way |
---|
186 | they know in advance how much a print job will cost to them and can decide to route it to |
---|
187 | a less costly printer. |
---|
188 | </para> |
---|
189 | </listitem> |
---|
190 | <listitem> |
---|
191 | <para> |
---|
192 | <command>pkbanner</command> : to generate dynamic banner pages when printing. |
---|
193 | This command is |
---|
194 | not meant to be used from the command line, but |
---|
195 | instead from <filename>pykota.conf</filename>'s <literal>startingbanner</literal> |
---|
196 | and <literal>endingbanner</literal> directives. If you prefer you can use |
---|
197 | your own generator of dynamic banner pages or even static banner pages. |
---|
198 | </para> |
---|
199 | </listitem> |
---|
200 | <listitem> |
---|
201 | <para> |
---|
202 | <command>warnpykota</command> : to warn users over quota from time to time, for example |
---|
203 | from <filename>crontab</filename>. Users are warned while printing in any case, so |
---|
204 | this command is meant to be used as a periodic reminder. |
---|
205 | </para> |
---|
206 | </listitem> |
---|
207 | <listitem> |
---|
208 | <para> |
---|
209 | <command>pkmail</command> : to let users obtain their print quota situation by email. |
---|
210 | In the future other functionnalities will be added. |
---|
211 | This command is not meant to be used from the command line, but |
---|
212 | instead as a pipe from your mail server's <filename>/etc/aliases</filename> file. |
---|
213 | </para> |
---|
214 | </listitem> |
---|
215 | <listitem> |
---|
216 | <para> |
---|
217 | <command>pknotify</command> : a client for the <application>PyKotIcon</application> cross-platform generic network dialog box manager. This |
---|
218 | tools allow you to interact with end users at printing time. |
---|
219 | </para> |
---|
220 | </listitem> |
---|
221 | <listitem> |
---|
222 | <para> |
---|
223 | <command>pkinvoice</command> : an invoice generator which can create personalized PDF invoices |
---|
224 | for your users from their printing history. |
---|
225 | </para> |
---|
226 | </listitem> |
---|
227 | <listitem> |
---|
228 | <para> |
---|
229 | <command>pkrefund</command> : a tool with which you can refund print jobs |
---|
230 | when there was an accounting problem. It can generate printable receipts |
---|
231 | in the PDF format. |
---|
232 | </para> |
---|
233 | </listitem> |
---|
234 | </itemizedlist> |
---|
235 | </para> |
---|
236 | </listitem> |
---|
237 | <listitem> |
---|
238 | <para> |
---|
239 | Several <acronym>CGI</acronym> scripts which constitute <application>PyKota</application>'s web interface. |
---|
240 | All these scripts behave differently when they are protected with an username and password |
---|
241 | compared to when they are not. See <filename>pykota/cgi-bin/README</filename> for |
---|
242 | details. |
---|
243 | <itemizedlist> |
---|
244 | <listitem> |
---|
245 | <para> |
---|
246 | <command>printquota.cgi</command> : to do basic print quota reports like repykota, |
---|
247 | and also to examine the printing history, which is not possible with repykota for now. |
---|
248 | </para> |
---|
249 | </listitem> |
---|
250 | <listitem> |
---|
251 | <para> |
---|
252 | <command>dumpykota.cgi</command> : identical to the <command>dumpykota</command> |
---|
253 | command line tool, but works from within a web browser. |
---|
254 | </para> |
---|
255 | </listitem> |
---|
256 | <listitem> |
---|
257 | <para> |
---|
258 | <command>pykotme.cgi</command> : identical to the <command>pykotme</command> |
---|
259 | command line tool, but works from within a web browser. |
---|
260 | </para> |
---|
261 | </listitem> |
---|
262 | </itemizedlist> |
---|
263 | </para> |
---|
264 | </listitem> |
---|
265 | <listitem> |
---|
266 | <para> |
---|
267 | Several helper scripts and contributed stuff to handle very specific configurations. |
---|
268 | Please visit the subdirectories of the <filename>pykota/</filename> source directory, and |
---|
269 | you may find interesting things... |
---|
270 | </para> |
---|
271 | </listitem> |
---|
272 | </itemizedlist> |
---|
273 | </para> |
---|
274 | |
---|
275 | </sect1> |
---|
276 | |
---|
277 | </chapter> |
---|
278 | |
---|