go-ipp/constants.go

438 lines
19 KiB
Go

/*
Copyright 2022 Dolysis Consulting Limited
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
For changes see the git log
*/
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"
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"
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"
AttributeMediaCol = "media-col"
)
// 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,
AttributeMemberURIs: TagUri,
AttributeMyJobs: TagBoolean,
AttributeNumberUp: TagInteger,
AttributeOrientationRequested: TagEnum,
AttributePPDName: TagName,
AttributePPDMakeAndModel: TagText,
AttributeNumberOfDocuments: TagInteger,
AttributePrintQuality: TagEnum,
AttributePrinterErrorPolicy: TagName,
AttributePrinterInfo: TagText,
AttributePrinterIsAcceptingJobs: TagBoolean,
AttributePrinterIsShared: 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,
AttributeMediaCol: TagBeginCollection,
}
)