forked from phin1x/go-ipp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
constants.go
440 lines (425 loc) · 19.5 KB
/
constants.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
package ipp
// ipp status codes
const (
StatusCupsInvalid int16 = -1
StatusOk int16 = 0x0000
StatusOkIgnoredOrSubstituted int16 = 0x0001
StatusOkConflicting int16 = 0x0002
StatusOkIgnoredSubscriptions int16 = 0x0003
StatusOkIgnoredNotifications int16 = 0x0004
StatusOkTooManyEvents int16 = 0x0005
StatusOkButCancelSubscription int16 = 0x0006
StatusOkEventsComplete int16 = 0x0007
StatusRedirectionOtherSite int16 = 0x0200
StatusCupsSeeOther int16 = 0x0280
StatusErrorBadRequest int16 = 0x0400
StatusErrorForbidden int16 = 0x0401
StatusErrorNotAuthenticated int16 = 0x0402
StatusErrorNotAuthorized int16 = 0x0403
StatusErrorNotPossible int16 = 0x0404
StatusErrorTimeout int16 = 0x0405
StatusErrorNotFound int16 = 0x0406
StatusErrorGone int16 = 0x0407
StatusErrorRequestEntity int16 = 0x0408
StatusErrorRequestValue int16 = 0x0409
StatusErrorDocumentFormatNotSupported int16 = 0x040a
StatusErrorAttributesOrValues int16 = 0x040b
StatusErrorUriScheme int16 = 0x040c
StatusErrorCharset int16 = 0x040d
StatusErrorConflicting int16 = 0x040e
StatusErrorCompressionError int16 = 0x040f
StatusErrorDocumentFormatError int16 = 0x0410
StatusErrorDocumentAccess int16 = 0x0411
StatusErrorAttributesNotSettable int16 = 0x0412
StatusErrorIgnoredAllSubscriptions int16 = 0x0413
StatusErrorTooManySubscriptions int16 = 0x0414
StatusErrorIgnoredAllNotifications int16 = 0x0415
StatusErrorPrintSupportFileNotFound int16 = 0x0416
StatusErrorDocumentPassword int16 = 0x0417
StatusErrorDocumentPermission int16 = 0x0418
StatusErrorDocumentSecurity int16 = 0x0419
StatusErrorDocumentUnprintable int16 = 0x041a
StatusErrorAccountInfoNeeded int16 = 0x041b
StatusErrorAccountClosed int16 = 0x041c
StatusErrorAccountLimitReached int16 = 0x041d
StatusErrorAccountAuthorizationFailed int16 = 0x041e
StatusErrorNotFetchable int16 = 0x041f
StatusErrorCupsAccountInfoNeeded int16 = 0x049C
StatusErrorCupsAccountClosed int16 = 0x049d
StatusErrorCupsAccountLimitReached int16 = 0x049e
StatusErrorCupsAccountAuthorizationFailed int16 = 0x049f
StatusErrorInternal int16 = 0x0500
StatusErrorOperationNotSupported int16 = 0x0501
StatusErrorServiceUnavailable int16 = 0x0502
StatusErrorVersionNotSupported int16 = 0x0503
StatusErrorDevice int16 = 0x0504
StatusErrorTemporary int16 = 0x0505
StatusErrorNotAcceptingJobs int16 = 0x0506
StatusErrorBusy int16 = 0x0507
StatusErrorJobCanceled int16 = 0x0508
StatusErrorMultipleJobsNotSupported int16 = 0x0509
StatusErrorPrinterIsDeactivated int16 = 0x050a
StatusErrorTooManyJobs int16 = 0x050b
StatusErrorTooManyDocuments int16 = 0x050c
StatusErrorCupsAuthenticationCanceled int16 = 0x1000
StatusErrorCupsPki int16 = 0x1001
StatusErrorCupsUpgradeRequired int16 = 0x1002
)
// ipp operations
const (
OperationCupsInvalid int16 = -0x0001
OperationCupsNone int16 = 0x0000
OperationPrintJob int16 = 0x0002
OperationPrintUri int16 = 0x0003
OperationValidateJob int16 = 0x0004
OperationCreateJob int16 = 0x0005
OperationSendDocument int16 = 0x0006
OperationSendUri int16 = 0x0007
OperationCancelJob int16 = 0x0008
OperationGetJobAttributes int16 = 0x0009
OperationGetJobs int16 = 0x000a
OperationGetPrinterAttributes int16 = 0x000b
OperationHoldJob int16 = 0x000c
OperationReleaseJob int16 = 0x000d
OperationRestartJob int16 = 0x000e
OperationPausePrinter int16 = 0x0010
OperationResumePrinter int16 = 0x0011
OperationPurgeJobs int16 = 0x0012
OperationSetPrinterAttributes int16 = 0x0013
OperationSetJobAttributes int16 = 0x0014
OperationGetPrinterSupportedValues int16 = 0x0015
OperationCreatePrinterSubscriptions int16 = 0x0016
OperationCreateJobSubscriptions int16 = 0x0017
OperationGetSubscriptionAttributes int16 = 0x0018
OperationGetSubscriptions int16 = 0x0019
OperationRenewSubscription int16 = 0x001a
OperationCancelSubscription int16 = 0x001b
OperationGetNotifications int16 = 0x001c
OperationSendNotifications int16 = 0x001d
OperationGetResourceAttributes int16 = 0x001e
OperationGetResourceData int16 = 0x001f
OperationGetResources int16 = 0x0020
OperationGetPrintSupportFiles int16 = 0x0021
OperationEnablePrinter int16 = 0x0022
OperationDisablePrinter int16 = 0x0023
OperationPausePrinterAfterCurrentJob int16 = 0x0024
OperationHoldNewJobs int16 = 0x0025
OperationReleaseHeldNewJobs int16 = 0x0026
OperationDeactivatePrinter int16 = 0x0027
OperationActivatePrinter int16 = 0x0028
OperationRestartPrinter int16 = 0x0029
OperationShutdownPrinter int16 = 0x002a
OperationStartupPrinter int16 = 0x002b
OperationReprocessJob int16 = 0x002c
OperationCancelCurrentJob int16 = 0x002d
OperationSuspendCurrentJob int16 = 0x002e
OperationResumeJob int16 = 0x002f
OperationOperationPromoteJob int16 = 0x0030
OperationScheduleJobAfter int16 = 0x0031
OperationCancelDocument int16 = 0x0033
OperationGetDocumentAttributes int16 = 0x0034
OperationGetDocuments int16 = 0x0035
OperationDeleteDocument int16 = 0x0036
OperationSetDocumentAttributes int16 = 0x0037
OperationCancelJobs int16 = 0x0038
OperationCancelMyJobs int16 = 0x0039
OperationResubmitJob int16 = 0x003a
OperationCloseJob int16 = 0x003b
OperationIdentifyPrinter int16 = 0x003c
OperationValidateDocument int16 = 0x003d
OperationAddDocumentImages int16 = 0x003e
OperationAcknowledgeDocument int16 = 0x003f
OperationAcknowledgeIdentifyPrinter int16 = 0x0040
OperationAcknowledgeJob int16 = 0x0041
OperationFetchDocument int16 = 0x0042
OperationFetchJob int16 = 0x0043
OperationGetOutputDeviceAttributes int16 = 0x0044
OperationUpdateActiveJobs int16 = 0x0045
OperationDeregisterOutputDevice int16 = 0x0046
OperationUpdateDocumentStatus int16 = 0x0047
OperationUpdateJobStatus int16 = 0x0048
OperationUpdateOutputDeviceAttributes int16 = 0x0049
OperationGetNextDocumentData int16 = 0x004a
OperationAllocatePrinterResources int16 = 0x004b
OperationCreatePrinter int16 = 0x004c
OperationDeallocatePrinterResources int16 = 0x004d
OperationDeletePrinter int16 = 0x004e
OperationGetPrinters int16 = 0x004f
OperationShutdownOnePrinter int16 = 0x0050
OperationStartupOnePrinter int16 = 0x0051
OperationCancelResource int16 = 0x0052
OperationCreateResource int16 = 0x0053
OperationInstallResource int16 = 0x0054
OperationSendResourceData int16 = 0x0055
OperationSetResourceAttributes int16 = 0x0056
OperationCreateResourceSubscriptions int16 = 0x0057
OperationCreateSystemSubscriptions int16 = 0x0058
OperationDisableAllPrinters int16 = 0x0059
OperationEnableAllPrinters int16 = 0x005a
OperationGetSystemAttributes int16 = 0x005b
OperationGetSystemSupportedValues int16 = 0x005c
OperationPauseAllPrinters int16 = 0x005d
OperationPauseAllPrintersAfterCurrentJob int16 = 0x005e
OperationRegisterOutputDevice int16 = 0x005f
OperationRestartSystem int16 = 0x0060
OperationResumeAllPrinters int16 = 0x0061
OperationSetSystemAttributes int16 = 0x0062
OperationShutdownAllPrinter int16 = 0x0063
OperationStartupAllPrinters int16 = 0x0064
OperationPrivate int16 = 0x4000
OperationCupsGetDefault int16 = 0x4001
OperationCupsGetPrinters int16 = 0x4002
OperationCupsAddModifyPrinter int16 = 0x4003
OperationCupsDeletePrinter int16 = 0x4004
OperationCupsGetClasses int16 = 0x4005
OperationCupsAddModifyClass int16 = 0x4006
OperationCupsDeleteClass int16 = 0x4007
OperationCupsAcceptJobs int16 = 0x4008
OperationCupsRejectJobs int16 = 0x4009
OperationCupsSetDefault int16 = 0x400a
OperationCupsGetDevices int16 = 0x400b
OperationCupsGetPPDs int16 = 0x400c
OperationCupsMoveJob int16 = 0x400d
OperationCupsAuthenticateJob int16 = 0x400e
OperationCupsGetPpd int16 = 0x400f
OperationCupsGetDocument int16 = 0x4027
OperationCupsCreateLocalPrinter int16 = 0x4028
)
// ipp tags
const (
TagCupsInvalid int8 = -1
TagZero int8 = 0x00
TagOperation int8 = 0x01
TagJob int8 = 0x02
TagEnd int8 = 0x03
TagPrinter int8 = 0x04
TagUnsupportedGroup int8 = 0x05
TagSubscription int8 = 0x06
TagEventNotification int8 = 0x07
TagResource int8 = 0x08
TagDocument int8 = 0x09
TagSystem int8 = 0x0a
TagUnsupportedValue int8 = 0x10
TagDefault int8 = 0x11
TagUnknown int8 = 0x12
TagNoValue int8 = 0x13
TagNotSettable int8 = 0x15
TagDeleteAttr int8 = 0x16
TagAdminDefine int8 = 0x17
TagInteger int8 = 0x21
TagBoolean int8 = 0x22
TagEnum int8 = 0x23
TagString int8 = 0x30
TagDate int8 = 0x31
TagResolution int8 = 0x32
TagRange int8 = 0x33
TagBeginCollection int8 = 0x34
TagTextLang int8 = 0x35
TagNameLang int8 = 0x36
TagEndCollection int8 = 0x37
TagText int8 = 0x41
TagName int8 = 0x42
TagReservedString int8 = 0x43
TagKeyword int8 = 0x44
TagUri int8 = 0x45
TagUriScheme int8 = 0x46
TagCharset int8 = 0x47
TagLanguage int8 = 0x48
TagMimeType int8 = 0x49
TagMemberName int8 = 0x4a
TagExtension int8 = 0x7f
)
// job states
const (
JobStatePending int8 = 0x03
JobStateHeld int8 = 0x04
JobStateProcessing int8 = 0x05
JobStateStopped int8 = 0x06
JobStateCanceled int8 = 0x07
JobStateAborted int8 = 0x08
JobStateCompleted int8 = 0x09
)
// document states
const (
DocumentStatePending int8 = 0x03
DocumentStateProcessing int8 = 0x05
DocumentStateCanceled int8 = 0x07
DocumentStateAborted int8 = 0x08
DocumentStateCompleted int8 = 0x08
)
// printer states
const (
PrinterStateIdle int8 = 0x0003
PrinterStateProcessing int8 = 0x0004
PrinterStateStopped int8 = 0x0005
)
// job state filter
const (
JobStateFilterNotCompleted = "not-completed"
JobStateFilterCompleted = "completed"
JobStateFilterAll = "all"
)
// error policies
const (
ErrorPolicyRetryJob = "retry-job"
ErrorPolicyAbortJob = "abort-job"
ErrorPolicyRetryCurrentJob = "retry-current-job"
ErrorPolicyStopPrinter = "stop-printer"
)
// ipp defaults
const (
CharsetLanguage = "en-US"
Charset = "utf-8"
ProtocolVersionMajor = int8(2)
ProtocolVersionMinor = int8(0)
DefaultJobPriority = 50
)
// useful mime types for ipp
const (
MimeTypePostscript = "application/postscript"
MimeTypeOctetStream = "application/octet-stream"
)
// ipp content types
const (
ContentTypeIPP = "application/ipp"
)
// known ipp attributes
const (
AttributeCopies = "copies"
AttributeDocumentFormat = "document-format"
AttributeDocumentName = "document-name"
AttributeJobID = "job-id"
AttributeJobName = "job-name"
AttributeJobPriority = "job-priority"
AttributeJobURI = "job-uri"
AttributeLastDocument = "last-document"
AttributeMyJobs = "my-jobs"
AttributePPDName = "ppd-name"
AttributePPDMakeAndModel = "ppd-make-and-model"
AttributePrinterIsShared = "printer-is-shared"
AttributePrinterIsTemporary = "printer-is-temporary"
AttributePrinterURI = "printer-uri"
AttributePurgeJobs = "purge-jobs"
AttributeRequestedAttributes = "requested-attributes"
AttributeRequestingUserName = "requesting-user-name"
AttributeWhichJobs = "which-jobs"
AttributeFirstJobID = "first-job-id"
AttributeLimit = "limit"
AttributeStatusMessage = "status-message"
AttributeCharset = "attributes-charset"
AttributeNaturalLanguage = "attributes-natural-language"
AttributeDeviceURI = "device-uri"
AttributeHoldJobUntil = "job-hold-until"
AttributePrinterErrorPolicy = "printer-error-policy"
AttributePrinterInfo = "printer-info"
AttributePrinterLocation = "printer-location"
AttributePrinterName = "printer-name"
AttributePrinterStateReasons = "printer-state-reasons"
AttributeJobPrinterURI = "job-printer-uri"
AttributeMemberURIs = "member-uris"
AttributeDocumentNumber = "document-number"
AttributeDocumentState = "document-state"
AttributeFinishings = "finishings"
AttributeJobHoldUntil = "hold-job-until"
AttributeJobSheets = "job-sheets"
AttributeJobState = "job-state"
AttributeJobStateReason = "job-state-reason"
AttributeMedia = "media"
AttributeSides = "sides"
AttributeNumberUp = "number-up"
AttributeOrientationRequested = "orientation-requested"
AttributePrintQuality = "print-quality"
AttributePrinterIsAcceptingJobs = "printer-is-accepting-jobs"
AttributePrinterResolution = "printer-resolution"
AttributePrinterState = "printer-state"
AttributeMemberNames = "member-names"
AttributePrinterType = "printer-type"
AttributePrinterMakeAndModel = "printer-make-and-model"
AttributePrinterStateMessage = "printer-state-message"
AttributePrinterUriSupported = "printer-uri-supported"
AttributeJobMediaProgress = "job-media-progress"
AttributeJobKilobyteOctets = "job-k-octets"
AttributeNumberOfDocuments = "number-of-documents"
AttributeJobOriginatingUserName = "job-originating-user-name"
AttributeOutputOrder = "outputorder"
AttributeJobStateReasons = "job-state-reasons"
AttributeJobStateMessage = "job-state-message"
AttributeJobPrinterStateReasons = "job-printer-state-reasons"
AttributeJobPrinterStateMessage = "job-printer-state-message"
AttributeJobImpressionsCompleted = "job-impressions-completed"
AttributePrintScaling = "print-scaling"
)
// Default attributes
var (
DefaultClassAttributes = []string{AttributePrinterName, AttributeMemberNames}
DefaultPrinterAttributes = []string{
AttributePrinterName, AttributePrinterType, AttributePrinterLocation, AttributePrinterInfo,
AttributePrinterMakeAndModel, AttributePrinterState, AttributePrinterStateMessage, AttributePrinterStateReasons,
AttributePrinterUriSupported, AttributeDeviceURI, AttributePrinterIsShared,
}
DefaultJobAttributes = []string{
AttributeJobID, AttributeJobName, AttributePrinterURI, AttributeJobState, AttributeJobStateReason,
AttributeJobHoldUntil, AttributeJobMediaProgress, AttributeJobKilobyteOctets, AttributeNumberOfDocuments, AttributeCopies,
AttributeJobOriginatingUserName,
}
)
// Attribute to tag mapping
var (
AttributeTagMapping = map[string]int8{
AttributeCharset: TagCharset,
AttributeNaturalLanguage: TagLanguage,
AttributeCopies: TagInteger,
AttributeDeviceURI: TagUri,
AttributeDocumentFormat: TagMimeType,
AttributeDocumentName: TagName,
AttributeDocumentNumber: TagInteger,
AttributeDocumentState: TagEnum,
AttributeFinishings: TagEnum,
AttributeJobHoldUntil: TagKeyword,
AttributeHoldJobUntil: TagKeyword,
AttributeJobID: TagInteger,
AttributeJobName: TagName,
AttributeJobPrinterURI: TagUri,
AttributeJobPriority: TagInteger,
AttributeJobSheets: TagName,
AttributeJobState: TagEnum,
AttributeJobStateReason: TagKeyword,
AttributeJobURI: TagUri,
AttributeLastDocument: TagBoolean,
AttributeMedia: TagKeyword,
AttributeSides: TagKeyword,
AttributeMemberURIs: TagUri,
AttributeMyJobs: TagBoolean,
AttributeNumberUp: TagInteger,
AttributeOrientationRequested: TagEnum,
AttributePPDName: TagName,
AttributePPDMakeAndModel: TagText,
AttributeNumberOfDocuments: TagInteger,
AttributePrintQuality: TagEnum,
AttributePrinterErrorPolicy: TagName,
AttributePrinterInfo: TagText,
AttributePrinterIsAcceptingJobs: TagBoolean,
AttributePrinterIsShared: TagBoolean,
AttributePrinterIsTemporary: TagBoolean,
AttributePrinterName: TagName,
AttributePrinterLocation: TagText,
AttributePrinterResolution: TagResolution,
AttributePrinterState: TagEnum,
AttributePrinterStateReasons: TagKeyword,
AttributePrinterURI: TagUri,
AttributePurgeJobs: TagBoolean,
AttributeRequestedAttributes: TagKeyword,
AttributeRequestingUserName: TagName,
AttributeWhichJobs: TagKeyword,
AttributeFirstJobID: TagInteger,
AttributeStatusMessage: TagText,
AttributeLimit: TagInteger,
AttributeOutputOrder: TagName,
AttributeJobStateReasons: TagString,
AttributeJobStateMessage: TagString,
AttributeJobPrinterStateReasons: TagString,
AttributeJobPrinterStateMessage: TagString,
AttributeJobImpressionsCompleted: TagInteger,
AttributePrintScaling: TagKeyword,
}
)