root / pykota / trunk / initscripts / ldap / pykota.schema @ 3549

Revision 3549, 12.9 kB (checked in by jerome, 14 years ago)

Removed support for the MaxJobSize? attribute for users group print quota
entries : I couldn't see a real use for this at the moment, and it would
complexify the code. This support might reappear later however. Added full
support for the MaxJobSize? attribute for user print quota entries,
editable with edpykota's new --maxjobsize command line switch. Changed
the internal handling of the MaxJobSize? attribute for printers :
internally 0 used to mean unlimited, it now allows one to forbid
printing onto a particular printer. The database upgrade script (only
for PostgreSQL) takes care of this.
IMPORTANT : the database schema changes. A database upgrade script is
provided for PostgreSQL only. The LDAP schema doesn't change to not
break any existing LDAP directory, so the pykotaMaxJobSize attribute is
still allowed on group print quota entries, but never used.
Seems to work as expected, for a change :-)
Fixes #15.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1# $Id$
2#
3# pykota.schema
4#
5# LDAP Schema for Pykota Quota System
6#
7# (c) 2003-2010 Jerome Alet <alet@librelogiciel.com>
8# This program is free software: you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation, either version 3 of the License, or
11# (at your option) any later version.
12#
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the GNU General Public License
19# along with this program.  If not, see <http://www.gnu.org/licenses/>.
20#
21# Include it in OpenLDAP's configuration file (/etc/ldap/slapd.conf)
22# and restart slapd.
23#
24# Written 2003-05-28 by Wayne Godoy and John Flynn <wgodoy =AT= ub -DOT- edu -DOT- bz>
25#
26# Modified by Jerome Alet 2003-06-01
27#
28# 16868.x       => Conseil Internet & Logiciels Libres
29# 16868.1.x     => Pykota
30# 16868.1.1.x   => attributes
31# 16868.1.2.x   => classes
32#
33# Contributors : Leif Johansson - Stockholm University
34#
35
36#
37# PyKota Attributes Types
38#
39
40# pykotaLimitBy
41attributetype ( 1.3.6.1.4.1.16868.1.1.1 NAME 'pykotaLimitBy'
42        DESC 'How to limit the user/group : quota or balance'
43        EQUALITY caseIgnoreIA5Match
44        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
45
46# pykotaBalance
47attributetype ( 1.3.6.1.4.1.16868.1.1.2 NAME 'pykotaBalance'
48        DESC 'Current account balance for the user, float'
49        EQUALITY caseIgnoreIA5Match
50        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
51
52# pykotaLifeTimePaid
53attributetype ( 1.3.6.1.4.1.16868.1.1.3 NAME 'pykotaLifeTimePaid'
54        DESC 'Total money paid by the user to fill his account balance, float'
55        EQUALITY caseIgnoreIA5Match
56        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
57
58# pykotaPricePerPage
59attributetype ( 1.3.6.1.4.1.16868.1.1.4 NAME 'pykotaPricePerPage'
60        DESC 'Price per page for a printer, float'
61        EQUALITY caseIgnoreIA5Match
62        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
63
64# pykotaPricePerJob
65attributetype ( 1.3.6.1.4.1.16868.1.1.5 NAME 'pykotaPricePerJob'
66        DESC 'Price per job for a printer, float'
67        EQUALITY caseIgnoreIA5Match
68        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
69
70# pykotaSoftLimit
71attributetype ( 1.3.6.1.4.1.16868.1.1.6 NAME 'pykotaSoftLimit'
72        DESC 'Soft limit in maximal number of pages'
73        EQUALITY caseIgnoreIA5Match
74        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
75
76# pykotaHardLimit
77attributetype ( 1.3.6.1.4.1.16868.1.1.7 NAME 'pykotaHardLimit'
78        DESC 'Hard limit in maximal number of pages'
79        EQUALITY caseIgnoreIA5Match
80        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
81
82# pykotaDateLimit
83attributetype ( 1.3.6.1.4.1.16868.1.1.8 NAME 'pykotaDateLimit'
84        DESC 'Date at which the soft limit becomes a hard one'
85        EQUALITY caseIgnoreIA5Match
86        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
87
88# pykotaPageCounter
89attributetype ( 1.3.6.1.4.1.16868.1.1.9 NAME 'pykotaPageCounter'
90        DESC 'Current page counter for the user on a particular printer'
91        EQUALITY integerMatch
92        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
93
94# pykotaLifePageCounter
95attributetype ( 1.3.6.1.4.1.16868.1.1.10 NAME 'pykotaLifePageCounter'
96        DESC 'Total page counter for the user on a particular printer'
97        EQUALITY integerMatch
98        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
99
100# pykotaJobId
101attributetype ( 1.3.6.1.4.1.16868.1.1.11 NAME 'pykotaJobId'
102        DESC 'Id of a job in a printer history of jobs'
103        EQUALITY caseExactIA5Match
104        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
105
106# pykotaPrinterPageCounter
107attributetype ( 1.3.6.1.4.1.16868.1.1.12 NAME 'pykotaPrinterPageCounter'
108        DESC 'Life time page counter of a printer when the job began'
109        EQUALITY integerMatch
110        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
111
112# pykotaJobSize
113attributetype ( 1.3.6.1.4.1.16868.1.1.13 NAME 'pykotaJobSize'
114        DESC 'Current job size in number of pages in the history'
115        EQUALITY integerMatch
116        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
117
118# pykotaAction
119attributetype ( 1.3.6.1.4.1.16868.1.1.14 NAME 'pykotaAction'
120        DESC 'Was the job allowed, denied, warned, cancelled or failed : ( "ALLOW" |  "DENY" | "WARN" | "CANCEL" | "PROBLEM" )'
121        EQUALITY caseExactIA5Match
122        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
123
124# pykotaPrinterName
125attributetype ( 1.3.6.1.4.1.16868.1.1.15 NAME 'pykotaPrinterName'
126        DESC 'PyKota printer name as received from the printing subsystem'
127        EQUALITY caseExactIA5Match
128        SUBSTR caseExactIA5SubstringsMatch
129        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
130
131# pykotaUserName
132attributetype ( 1.3.6.1.4.1.16868.1.1.16 NAME 'pykotaUserName'
133        DESC 'PyKota user name'
134        EQUALITY caseExactIA5Match
135        SUBSTR caseExactIA5SubstringsMatch
136        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
137
138# pykotaGroupName
139attributetype ( 1.3.6.1.4.1.16868.1.1.17 NAME 'pykotaGroupName'
140        DESC 'PyKota group name'
141        EQUALITY caseExactIA5Match
142        SUBSTR caseExactIA5SubstringsMatch
143        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
144
145# pykotaLastJobIdent
146attributetype ( 1.3.6.1.4.1.16868.1.1.18 NAME 'pykotaLastJobIdent'
147        DESC 'Identifies the last job in the history'
148        EQUALITY caseExactIA5Match
149        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
150
151# pykotaFileName
152attributetype ( 1.3.6.1.4.1.16868.1.1.19 NAME 'pykotaFileName'
153        DESC 'Print job filename'
154        EQUALITY caseExactMatch
155        SUBSTR caseExactSubstringsMatch
156        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
157
158# pykotaTitle
159attributetype ( 1.3.6.1.4.1.16868.1.1.20 NAME 'pykotaTitle'
160        DESC 'Print job title'
161        EQUALITY caseIgnoreMatch
162        SUBSTR caseIgnoreSubstringsMatch
163        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
164
165# pykotaCopies
166attributetype ( 1.3.6.1.4.1.16868.1.1.21 NAME 'pykotaCopies'
167        DESC 'Number of copies of the current print job'
168        EQUALITY integerMatch
169        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
170
171# pykotaOptions
172attributetype ( 1.3.6.1.4.1.16868.1.1.22 NAME 'pykotaOptions'
173        DESC 'Print job options'
174        EQUALITY caseIgnoreMatch
175        SUBSTR caseIgnoreSubstringsMatch
176        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
177
178# pykotaJobPrice
179attributetype ( 1.3.6.1.4.1.16868.1.1.23 NAME 'pykotaJobPrice'
180        DESC 'Price of a particular job in the history, float'
181        EQUALITY caseIgnoreIA5Match
182        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
183
184# pykotaHostName
185attributetype ( 1.3.6.1.4.1.16868.1.1.24 NAME 'pykotaHostName'
186        DESC 'The host the job is coming from'
187        EQUALITY caseIgnoreMatch
188        SUBSTR caseIgnoreSubstringsMatch
189        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
190
191# pykotaJobSizeBytes
192attributetype ( 1.3.6.1.4.1.16868.1.1.25 NAME 'pykotaJobSizeBytes'
193        DESC 'Current job size in number of bytes in the history'
194        EQUALITY integerMatch
195        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
196
197# pykotaPayments
198attributetype ( 1.3.6.1.4.1.16868.1.1.26 NAME 'pykotaPayments'
199        DESC 'Stores all payments made by an user, encoded to store both date and amount, separated by a # between two spaces'
200        EQUALITY caseExactIA5Match
201        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
202
203# pykotaOverCharge
204attributetype ( 1.3.6.1.4.1.16868.1.1.27 NAME 'pykotaOverCharge'
205        DESC 'OverCharging factor for a particular user, float'
206        EQUALITY caseIgnoreIA5Match
207        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
208
209# pykotaWarnCount
210attributetype ( 1.3.6.1.4.1.16868.1.1.28 NAME 'pykotaWarnCount'
211        DESC 'Number of times the user was warned because a banner was denied'
212        EQUALITY integerMatch
213        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
214
215# pykotaMD5Sum
216attributetype ( 1.3.6.1.4.1.16868.1.1.29 NAME 'pykotaMD5Sum'
217        DESC 'MD5 Sum of the job datas'
218        EQUALITY caseExactIA5Match
219        SUBSTR caseExactIA5SubstringsMatch
220        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
221
222# pykotaPages
223attributetype ( 1.3.6.1.4.1.16868.1.1.30 NAME 'pykotaPages'
224        DESC 'Descriptor for each page settings in the history'
225        EQUALITY caseExactIA5Match
226        SUBSTR caseExactIA5SubstringsMatch
227        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
228
229# pykotaPrinterCoefficient
230attributetype ( 1.3.6.1.4.1.16868.1.1.31 NAME 'pykotaPrinterCoefficient'
231        DESC 'Coefficient for a particular page format. Contains label # coeff, e.g. A3 # 2.0'
232        EQUALITY caseIgnoreIA5Match
233        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
234
235# pykotaBillingCode
236attributetype ( 1.3.6.1.4.1.16868.1.1.32 NAME 'pykotaBillingCode'
237        DESC 'Optional billing code for the print job'
238        EQUALITY caseIgnoreMatch
239        SUBSTR caseIgnoreSubstringsMatch
240        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
241
242# pykotaPrecomputedJobSize
243attributetype ( 1.3.6.1.4.1.16868.1.1.33 NAME 'pykotaPrecomputedJobSize'
244        DESC 'Precomputed job size in number of pages in the history'
245        EQUALITY integerMatch
246        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
247
248# pykotaPrecomputedJobPrice
249attributetype ( 1.3.6.1.4.1.16868.1.1.34 NAME 'pykotaPrecomputedJobPrice'
250        DESC 'Precomputed Price of a particular job in the history, float'
251        EQUALITY caseIgnoreIA5Match
252        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
253
254# pykotaMaxJobSize
255attributetype ( 1.3.6.1.4.1.16868.1.1.35 NAME 'pykotaMaxJobSize'
256        DESC 'Maximum size allowed for a job'
257        EQUALITY integerMatch
258        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
259
260# pykotaPassThrough
261attributetype ( 1.3.6.1.4.1.16868.1.1.36 NAME 'pykotaPassThrough'
262        DESC 'Indicates if the printer is in pass through mode'
263        EQUALITY caseIgnoreIA5Match
264        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
265
266#
267# PyKota Object Classes
268#
269
270# pykotaAccount
271objectclass ( 1.3.6.1.4.1.16868.1.2.1 NAME 'pykotaAccount' SUP top AUXILIARY
272        DESC 'PyKota Auxiliary User Account'
273        MUST ( uid )
274        MAY  ( pykotaUserName $ pykotaLimitBy $ mail $ description ) )
275
276# pykotaGroup
277objectclass ( 1.3.6.1.4.1.16868.1.2.2 NAME 'pykotaGroup' SUP top AUXILIARY
278        DESC 'PyKota Auxiliary Group'
279        MUST ( cn )
280        MAY  ( pykotaGroupName $ pykotaLimitBy $ memberUid $ uniqueMember $ member $ description ) )
281
282# pykotaPrinter
283objectclass ( 1.3.6.1.4.1.16868.1.2.3 NAME 'pykotaPrinter' SUP top AUXILIARY
284        DESC 'PyKota Printer'
285        MUST ( cn )
286        MAY  ( pykotaMaxJobSize $ pykotaPassThrough $ description $ pykotaPrinterName $ pykotaPricePerPage $ pykotaPricePerJob $ pykotaPrinterCoefficient $ uniqueMember ) )
287
288# pykotaUserPQuota
289objectclass ( 1.3.6.1.4.1.16868.1.2.4 NAME 'pykotaUserPQuota' SUP top AUXILIARY
290        DESC 'PyKota User Quota on a Printer'
291        MUST ( cn $ pykotaUserName $ pykotaPrinterName )
292        MAY  ( pykotaMaxJobSize $ pykotaPageCounter $ pykotaLifePageCounter $ pykotaSoftLimit $ pykotaHardLimit $ pykotaDateLimit $ pykotaWarnCount ) )
293
294# pykotaGroupPQuota
295# NB : we still allow pykotaMaxJobSize here but
296# only to not break existing LDAP directories.
297# This attribute is not supported for users groups.
298objectclass ( 1.3.6.1.4.1.16868.1.2.5 NAME 'pykotaGroupPQuota' SUP top AUXILIARY
299        DESC 'PyKota Group Quota on a Printer'
300        MUST ( cn $ pykotaGroupName $ pykotaPrinterName )
301        MAY  ( pykotaMaxJobSize $ pykotaSoftLimit $ pykotaHardLimit $ pykotaDateLimit ) )
302
303# pykotaJob
304objectclass ( 1.3.6.1.4.1.16868.1.2.6 NAME 'pykotaJob' SUP top AUXILIARY
305        DESC 'An entry in the job history for a printer'
306        MUST ( cn $ pykotaUserName $ pykotaPrinterName $ pykotaJobId )
307        MAY  ( pykotaPrecomputedJobPrice $ pykotaPrecomputedJobSize $ pykotaBillingCode $ pykotaPrinterPageCounter $ pykotaJobSize $ pykotaAction $ pykotaJobPrice $ pykotaFileName $ pykotaTitle $ pykotaCopies $ pykotaOptions $ pykotaHostName $ pykotaJobSizeBytes $ pykotaMD5Sum $ pykotaPages ) )
308
309# pykotaAccountBalance
310objectclass ( 1.3.6.1.4.1.16868.1.2.7 NAME 'pykotaAccountBalance' SUP top AUXILIARY
311        DESC 'PyKota User account balance'
312        MAY  ( pykotaUserName $ pykotaBalance $ pykotaLifeTimePaid $ pykotaOverCharge $ pykotaPayments ) )
313
314# pykotaLastJob
315objectclass ( 1.3.6.1.4.1.16868.1.2.8 NAME 'pykotaLastJob' SUP top AUXILIARY
316        DESC 'Last job information for a printer'
317        MUST ( pykotaLastJobIdent )
318        MAY ( pykotaPrinterName ) )
319
320# pykotaBilling
321objectclass ( 1.3.6.1.4.1.16868.1.2.10 NAME 'pykotaBilling' SUP top AUXILIARY
322        DESC 'Allowed billing codes'
323        MUST ( cn $ pykotaBillingCode )
324        MAY ( pykotaPageCounter $ pykotaBalance $ description ) )
325
326# pykotaObject - Use it if you have to
327objectclass ( 1.3.6.1.4.1.16868.1.2.9 NAME 'pykotaObject' SUP top STRUCTURAL
328        DESC 'PyKota Object'
329        MUST ( cn ) )
330
Note: See TracBrowser for help on using the browser.