Common Unix Printing System
Il Common Unix Printing System (CUPS) è un spooler di stampa modulare per sistemi operativi di tipo Unix che permette ad un computer di funzionare come un efficace print server. Un computer con CUPS in esecuzione è in grado di accettare stampe da altri computer client, elaborarle ed inviarle alla stampante richiesta. Il sistema è costituito da uno spooler/scheduler, un filtro che converte i dati di stampa ricevuti in un formato accettato dalla stampante ed un modulo che invia i dati elaborati al dispositivo di stampa. Si basa sull'Internet Printing Protocol (IPP) per gestire l'invio dei dati e le code di stampa. Dispone di interfaccia a riga di comando simile a quella del System V e del Berkeley printing system, oltre ad un limitato supporto per il protocollo Server message block (SMB). L'interfacciamento con i driver si basa sul formato PostScript Printer Description (PPD). La gestione e configurazione di CUPS può essere effettuata con una delle molteplici interfacce grafiche disponibili per le diverse piattaforme software oppure attraverso l'interfaccia web integrata. StoriaMichael Sweet fondatore della Easy Software Products iniziò a sviluppare CUPS nel 1997. La prima versione pubblica venne distribuita nel 1999.[1] Il progetto iniziale di CUPS prevedeva l'utilizzo del protocollo LPD, ma le limitazioni di LPD e le sue incompatibilità spinsero Sweet a utilizzare il protocollo Internet Printing Protocol (IPP). CUPs venne rapidamente utilizzato come sistema di stampa di default da molte distribuzioni Linux come Red Hat. Nel marzo 2002 Apple Computer decise di utilizzare CUPS come sistema di stampa per il macOS a partire dalla versione 10.2[2] Nel febbraio 2007 Apple. Inc decise di acquistare il codice sorgente del progetto e di assumere Sweet come capo progetto.[3] Dettaglio del funzionamentoI dati sono inviati ad uno scheduler, che li manda a sua volta al filtro, il quale li converte in un formato adatto alla stampante. Il sistema di filtraggio passa i dati così preparati ad un'interfaccia (back end) che invia i dati direttamente alla stampante locale oppure su una connessione di rete. Il principale vantaggio di CUPS è di essere un sistema modulare e standard, in grado quindi di operare con numerosi formati di dati e interfacciarsi con i numerosi modelli di stampanti presenti sul mercato, ciascuna in grado di accettare un formato o un linguaggio specifico. Per confronto i sistemi di stampa del System V o il Berkeley printing systems sono incompatibili tra loro e richiedono una elaborata configurazione per gestire diversi formati di dati e stampanti. In genere non sono in grado di riconoscere accuratamente il formato dei dati ricevuti eseguendo la conversione in modo errato. Un altro limite è che la conversione può avvenire solo sul computer client e non sul server. Con CUPS è molto più facile sviluppare driver in grado di funzionare nativamente sul print server Unix. Una volta effettuata la conversione la stampa può essere facilmente inviata attraverso gli altri sistemi di stampa Unix. Inoltre grazie al protocollo Samba il servizio di stampa è accessibile anche da sistemi Windows. Lo schedulerLo scheduler ha il compito di gestire i lavori in stampa, la priorità nella coda (l'ordine con cui sono inviati alla periferica), la loro eventuale cancellazione ecc. Lo scheduler include un modulo di autorizzazione che controlla l'accesso dei messaggi IPP e HTTP, che una volta autorizzati sono inviati al modulo client, che soddisfa le richieste. Questo modulo esegue anche i processi CGI esterni necessari per le funzioni dell'interfaccia web. I messaggi di risposta sono reinviati al modulo di IPP che li sottopone alla validazione dell'URL, per prevenire tentativi di aggiramento dell'autenticazione. L'autorizzazione degli utenti è organizzata per stampante e per classe. Una classe è un raggruppamento di diverse stampanti su cui lo scheduler invia la stampa autorizzata in arrivo alla prima periferica libera. Un modulo di lavoro (job module) gestisce la coda di ogni stampante ed invia i dati ai filtri e ai backend, gestendo inoltre i messaggi restituiti da questi. Nello scheduler è compreso un modulo di configurazione che attinge al file di configurazione di CUPS all'avvio del sistema. Un altro modulo (logging module) si occupa di registrare (loggare) tutti gli eventi di sistema, accessi, errori, lavori. Il modulo principale dello scheduler si occupa di gestire le comunicazioni con i client e coordinare i diversi moduli descritti. Altri moduli utilizzati sono il modulo MIME che gestisce i tipi MIME e il database utilizzato dai filtri per la conversione dei dati. Un modulo PPD che gestisce la lista dei file con i dati Postscript Printer Description, un modulo che mantiene una lista delle periferiche disponibili e moduli che gestiscono le singole stampanti. Il filtroIl cuore di CUPS è la capacità di convertire i molteplici formati di dati in entrata nei formati adatti alle diverse stampanti. Il database MIMEQuando CUPS è avviato vengono caricati due file database: Il file mimetype { [estensioni] | [pattern-matching] } Per esempio, volendo riconoscere un file HTML si può aggiungere il codice: text/html html htm \ printable(0,1024) + (string(0,"<HTML>") string(0,"<!DOCTYPE")) In questo esempio la prima linea contiene il nome del tipo MIME e le estensioni caratteristiche del file. La seconda linea contiene una serie di istruzioni che portano a riconoscere il file come costituito per il primo kilobyte da caratteri stampabili in cui è compresa una stringa caratteristica del markup HTML. Se il file risponde a queste caratteristiche è contrassegnato come tipo MIME text/html. Il file origine destinazione peso programma Il campo origine è il tipo MIME ottenuto precedentemente, destinazione definisce il formato che si vuole in uscita, peso determina il grado di priorità per due filtri simili e programma è il nome del programma da utilizzare per la conversione. Un esempio di text/plain application/postscript 50 texttops application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster image/* application/vnd.cups-postscript 50 imagetops image/* application/vnd.cups-raster 50 imagetoraster Il processo di filtraggioIl modulo di filtraggio richiede in ingresso sei parametri:
Per mezzo del database MIME viene riconosciuto il tipo di file e scelto di conseguenza il programma di conversione appropriato; per esempio una immagine viene elaborata diversamente rispetto ad un file HTML o PDF. I dati possono essere convertiti in PostScript oppure direttamente in dati raster (rappresentazione pixel per pixel dell'immagine da stampare). Se è impiegato il PostScript, è necessario un pre-filtro che invii i dati ad un successivo convertitore PostScript. In questo passaggio è possibile specificare opzioni come l'intervallo di pagine da stampare, l'ordine di stampa, la fascicolatura ecc.
In CUPS sono inclusi i filtri standard da raster a PCL, da raster a ESC/P o ESC/P2 (un linguaggio della Epson ora superato da ESC/P-Raster) e da raster a Dymo. Esistono molte altre alternative utilizzabili con CUPS. La Easy Software Printing (ESP) Solutions, creatrice di CUPS, ha sviluppato propri filtri: Gimp-Print è una serie di driver di alta qualità adatto per molte stampanti ink-jet. Turbo-Print per Linux è un'altra serie di driver per una ampia gamma di stampanti. I back endI back end sono le interfacce finali che inviano i dati alle singole stampanti. Diversi tipi di interfacce sono gestite da CUPS: porta parallela, porta seriale, USB, sistemi di rete IPP, JetDirect, protocolli LPD e SMB. Note
Altri progetti
Collegamenti esterni
|