cups

package
v0.0.0-...-7d1519f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 2, 2026 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HandleRequest

func HandleRequest(conn net.Conn, req models.Request, manager *Manager)

Types

type CUPSClientInterface

type CUPSClientInterface interface {
	GetPrinters(attributes []string) (map[string]ipp.Attributes, error)
	GetJobs(printer, class string, whichJobs string, myJobs bool, firstJobId, limit int, attributes []string) (map[int]ipp.Attributes, error)
	CancelJob(jobID int, purge bool) error
	PausePrinter(printer string) error
	ResumePrinter(printer string) error
	CancelAllJob(printer string, purge bool) error
	SendRequest(url string, req *ipp.Request, additionalResponseData io.Writer) (*ipp.Response, error)

	GetDevices() (map[string]ipp.Attributes, error)
	GetPPDs() (map[string]ipp.Attributes, error)
	GetClasses(attributes []string) (map[string]ipp.Attributes, error)
	CreatePrinter(name, deviceURI, ppd string, shared bool, errorPolicy, information, location string) error
	DeletePrinter(printer string) error
	AcceptJobs(printer string) error
	RejectJobs(printer string) error
	SetPrinterIsShared(printer string, shared bool) error
	SetPrinterLocation(printer, location string) error
	SetPrinterInformation(printer, information string) error
	MoveJob(jobID int, destPrinter string) error
	PrintTestPage(printer string, testPageData io.Reader, size int) (int, error)
	AddPrinterToClass(class, printer string) error
	DeletePrinterFromClass(class, printer string) error
	DeleteClass(class string) error
	RestartJob(jobID int) error
	HoldJobUntil(jobID int, holdUntil string) error
}

type CUPSEvent

type CUPSEvent struct {
	Type string    `json:"type"`
	Data CUPSState `json:"data"`
}

type CUPSState

type CUPSState struct {
	Printers map[string]*Printer `json:"printers"`
}

type DBusPkHelper

type DBusPkHelper struct {
	// contains filtered or unexported fields
}

func NewPkHelper

func NewPkHelper() (*DBusPkHelper, error)

func (*DBusPkHelper) ClassAddPrinter

func (p *DBusPkHelper) ClassAddPrinter(className, printerName string) error

func (*DBusPkHelper) ClassDelete

func (p *DBusPkHelper) ClassDelete(className string) error

func (*DBusPkHelper) ClassDeletePrinter

func (p *DBusPkHelper) ClassDeletePrinter(className, printerName string) error

func (*DBusPkHelper) DevicesGet

func (p *DBusPkHelper) DevicesGet(timeout, limit int, includeSchemes, excludeSchemes []string) ([]Device, error)

func (*DBusPkHelper) JobCancelPurge

func (p *DBusPkHelper) JobCancelPurge(jobID int, purge bool) error

func (*DBusPkHelper) JobRestart

func (p *DBusPkHelper) JobRestart(jobID int) error

func (*DBusPkHelper) JobSetHoldUntil

func (p *DBusPkHelper) JobSetHoldUntil(jobID int, holdUntil string) error

func (*DBusPkHelper) PrinterAdd

func (p *DBusPkHelper) PrinterAdd(name, uri, ppd, info, location string) error

func (*DBusPkHelper) PrinterDelete

func (p *DBusPkHelper) PrinterDelete(name string) error

func (*DBusPkHelper) PrinterSetAcceptJobs

func (p *DBusPkHelper) PrinterSetAcceptJobs(name string, enabled bool, reason string) error

func (*DBusPkHelper) PrinterSetEnabled

func (p *DBusPkHelper) PrinterSetEnabled(name string, enabled bool) error

func (*DBusPkHelper) PrinterSetInfo

func (p *DBusPkHelper) PrinterSetInfo(name, info string) error

func (*DBusPkHelper) PrinterSetLocation

func (p *DBusPkHelper) PrinterSetLocation(name, location string) error

func (*DBusPkHelper) PrinterSetShared

func (p *DBusPkHelper) PrinterSetShared(name string, shared bool) error

type DBusSubscriptionManager

type DBusSubscriptionManager struct {
	// contains filtered or unexported fields
}

func NewDBusSubscriptionManager

func NewDBusSubscriptionManager(client CUPSClientInterface, baseURL string) *DBusSubscriptionManager

func (*DBusSubscriptionManager) Events

func (sm *DBusSubscriptionManager) Events() <-chan SubscriptionEvent

func (*DBusSubscriptionManager) Start

func (sm *DBusSubscriptionManager) Start() error

func (*DBusSubscriptionManager) Stop

func (sm *DBusSubscriptionManager) Stop()

type Device

type Device struct {
	URI       string `json:"uri"`
	Class     string `json:"class"`
	Info      string `json:"info"`
	MakeModel string `json:"makeModel"`
	ID        string `json:"id"`
	Location  string `json:"location"`
	IP        string `json:"ip,omitempty"`
}

type Job

type Job struct {
	ID          int       `json:"id"`
	Name        string    `json:"name"`
	State       string    `json:"state"`
	Printer     string    `json:"printer"`
	User        string    `json:"user"`
	Size        int       `json:"size"`
	TimeCreated time.Time `json:"timeCreated"`
}

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

func NewManager

func NewManager() (*Manager, error)

func NewTestManager

func NewTestManager(client CUPSClientInterface, pkHelper PkHelper) *Manager

func (*Manager) AcceptJobs

func (m *Manager) AcceptJobs(printerName string) error

func (*Manager) AddPrinterToClass

func (m *Manager) AddPrinterToClass(className, printerName string) error

func (*Manager) CancelJob

func (m *Manager) CancelJob(jobID int) error

func (*Manager) Close

func (m *Manager) Close()

func (*Manager) CreatePrinter

func (m *Manager) CreatePrinter(name, deviceURI, ppd string, shared bool, errorPolicy, information, location string) error

func (*Manager) DeleteClass

func (m *Manager) DeleteClass(className string) error

func (*Manager) DeletePrinter

func (m *Manager) DeletePrinter(printerName string) error

func (*Manager) GetClasses

func (m *Manager) GetClasses() ([]PrinterClass, error)

func (*Manager) GetDevices

func (m *Manager) GetDevices() ([]Device, error)

func (*Manager) GetJobs

func (m *Manager) GetJobs(printerName string, whichJobs string) ([]Job, error)

func (*Manager) GetPPDs

func (m *Manager) GetPPDs() ([]PPD, error)

func (*Manager) GetPrinters

func (m *Manager) GetPrinters() ([]Printer, error)

func (*Manager) GetState

func (m *Manager) GetState() CUPSState

func (*Manager) HoldJob

func (m *Manager) HoldJob(jobID int, holdUntil string) error

func (*Manager) MoveJob

func (m *Manager) MoveJob(jobID int, destPrinter string) error

func (*Manager) PausePrinter

func (m *Manager) PausePrinter(printerName string) error

func (*Manager) PrintTestPage

func (m *Manager) PrintTestPage(printerName string) (int, error)

func (*Manager) PurgeJobs

func (m *Manager) PurgeJobs(printerName string) error

func (*Manager) RefreshState

func (m *Manager) RefreshState()

func (*Manager) RejectJobs

func (m *Manager) RejectJobs(printerName string) error

func (*Manager) RemovePrinterFromClass

func (m *Manager) RemovePrinterFromClass(className, printerName string) error

func (*Manager) RestartJob

func (m *Manager) RestartJob(jobID int) error

func (*Manager) ResumePrinter

func (m *Manager) ResumePrinter(printerName string) error

func (*Manager) SetPrinterInfo

func (m *Manager) SetPrinterInfo(printerName, info string) error

func (*Manager) SetPrinterLocation

func (m *Manager) SetPrinterLocation(printerName, location string) error

func (*Manager) SetPrinterShared

func (m *Manager) SetPrinterShared(printerName string, shared bool) error

func (*Manager) Subscribe

func (m *Manager) Subscribe(id string) chan CUPSState

func (*Manager) TestRemotePrinter

func (m *Manager) TestRemotePrinter(host string, port int, protocol string) (*RemotePrinterInfo, error)

TestRemotePrinter validates inputs and probes a remote printer via IPP. For lpd/socket protocols, only TCP reachability is tested.

func (*Manager) Unsubscribe

func (m *Manager) Unsubscribe(id string)

type PPD

type PPD struct {
	Name            string `json:"name"`
	NaturalLanguage string `json:"naturalLanguage"`
	MakeModel       string `json:"makeModel"`
	DeviceID        string `json:"deviceId"`
	Product         string `json:"product"`
	PSVersion       string `json:"psVersion"`
	Type            string `json:"type"`
}

type PkHelper

type PkHelper interface {
	DevicesGet(timeout, limit int, includeSchemes, excludeSchemes []string) ([]Device, error)
	PrinterAdd(name, uri, ppd, info, location string) error
	PrinterDelete(name string) error
	PrinterSetEnabled(name string, enabled bool) error
	PrinterSetAcceptJobs(name string, enabled bool, reason string) error
	PrinterSetInfo(name, info string) error
	PrinterSetLocation(name, location string) error
	PrinterSetShared(name string, shared bool) error
	ClassAddPrinter(className, printerName string) error
	ClassDeletePrinter(className, printerName string) error
	ClassDelete(className string) error
	JobCancelPurge(jobID int, purge bool) error
	JobRestart(jobID int) error
	JobSetHoldUntil(jobID int, holdUntil string) error
}

type Printer

type Printer struct {
	Name        string `json:"name"`
	URI         string `json:"uri"`
	State       string `json:"state"`
	StateReason string `json:"stateReason"`
	Location    string `json:"location"`
	Info        string `json:"info"`
	MakeModel   string `json:"makeModel"`
	Accepting   bool   `json:"accepting"`
	Jobs        []Job  `json:"jobs"`
}

type PrinterClass

type PrinterClass struct {
	Name     string   `json:"name"`
	URI      string   `json:"uri"`
	State    string   `json:"state"`
	Members  []string `json:"members"`
	Location string   `json:"location"`
	Info     string   `json:"info"`
}

type RemotePrinterInfo

type RemotePrinterInfo struct {
	Reachable bool   `json:"reachable"`
	MakeModel string `json:"makeModel"`
	Name      string `json:"name"`
	Info      string `json:"info"`
	State     string `json:"state"`
	URI       string `json:"uri"`
	Error     string `json:"error,omitempty"`
}

type SubscriptionEvent

type SubscriptionEvent struct {
	EventName    string
	PrinterName  string
	JobID        int
	SubscribedAt time.Time
}

type SubscriptionManager

type SubscriptionManager struct {
	// contains filtered or unexported fields
}

func NewSubscriptionManager

func NewSubscriptionManager(client CUPSClientInterface, baseURL string) *SubscriptionManager

func (*SubscriptionManager) Events

func (sm *SubscriptionManager) Events() <-chan SubscriptionEvent

func (*SubscriptionManager) Start

func (sm *SubscriptionManager) Start() error

func (*SubscriptionManager) Stop

func (sm *SubscriptionManager) Stop()

type SubscriptionManagerInterface

type SubscriptionManagerInterface interface {
	Start() error
	Stop()
	Events() <-chan SubscriptionEvent
}

type TestPageResult

type TestPageResult struct {
	Success bool   `json:"success"`
	JobID   int    `json:"jobId"`
	Message string `json:"message"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL