CUPS - cups-browsed e client.conf

----------- QUALCHE IMPRECISIONE ------- OBSOLETO ------

Da anni ormai sono abituato a configurare le stampanti sui client linux utilizzando il file client.conf, all'interno del quale vado semplicemente a inserire l'indirizzo ip del server cups che gestisce tutte le code di stampa (ServerName nome_server, più recentemente, visto che i client mutano ma il server no, anche /version=1.1).

QUalche giorno fa però, leggendo la documentazione di cups
https://www.cups.org/documentation.php/doc-2.1/man-client.conf.html
mi sono accorto che
"
client.conf - client configuration file for cups (deprecated)

Notes
The client.conf file is deprecated and will no longer be supported in a future version of CUPS.

Note: Starting with OS X 10.7, this file is only used by command-line and X11 applications plus the IPP backend. The ServerName directive is not supported on OS X at all.
"

L'alternativa? Usare cups-browsed che in passato andavo a disabilitare brutalmente insieme all'infido avahi-daemon.

Gli aspetti negativi di questo nuovo approccio riguardano il dover per forza installare anche sui client il server cups e cups-browsed, oltre al dover modificare qualche direttiva in più.
In passato, con client.conf, mi limiatvo ad installare libcups sui client e il server cups lo disinstallavo completamente.

Gli aspetti positivi invece....emm... per ora non ne trovo.

 

Dalla man page di cups-browsed vedo che serve a:

"
DESCRIPTION
cups-browsed has three independently switchable functions:
1.  Browse Bonjour broadcasts of remote printers and create/remove local raw queues pointing to these printers.
2.  Browse  CUPS broadcasts of remote printers and create/remove local raw queues pointing to these printers.
3.  Broadcast local queues with the CUPS protocol.
"

come sempre abbiamo la doppia funzionalità di cercare le stampanti nella rete e di condividere le stampanti installate localmente col resto dei dispositivi connessi alla rete. A me interessa solo la prima e devo assicurarmi di non condividere nulla del client.

Il primo aspetto da tener presente è che cups-browsed va a cercare le stampanti in rete e poi crea localmente le varie code di stampa: avremo quindi un printers.conf popolato con le code ricreate localmente (che poi puntano al server di stampa), laddove invece con client.conf e libcups comunicavamo direttamente con un server remoto.

Per prima cosa sul client modifico
/etc/cups/cups-browsed.conf

In sostanza voglio che la ricerca delle stampanti venga fatta solo ed esclusivamente andando a contattare il mio server cups, che per effettaure questa ricerca si utilizzi il protocollo "cups" (e non dns-sd/bonjour o come cavolo si chiama) e che le eventuali stampanti locali del client non vengano "pubblicate/annunciate" sulla rete.

Sul server cups mi devo assicurare che le code configurate siano condivise, ovvero
"Share printers connected to this system" (sull'interfaccia web)
o
Browsing on
#Specifies whether shared printers are advertised. The default is "No".
(in /etc/cups/cupsd.conf)

Poco sopra ho scritto che non vedo aspetti positivi nell'usare cups-browsed rispetto a client.conf: In realtà, visto che viene ricreato localmente il file printers.conf con le varie code, è possibile apportare qualche piccola personalizzazione all'elenco delle stampanti del client. In particolare è possibile configurare una stampante di default diversa da quella di default sul server. Per far questo basta aprire lo strumento di configurazione delle stampanti della propria distribuzione (ho provato con ubuntu 15.10) e impostare quella che si desidera come default (set as default). Questo non fa altro che andare a scrivere in printers.conf
<DefaultPrinter nome_stampante>
blablabla
al posto di
<Printer nome_stampante>
blablabla
Si possono anche apportare personalizzazioni alle varie direttive che ho riassunto con "blablabla", anche se nel mio caso non è stato necessario (sono direttive sul tipo di comunicazione che si effettua col server, non sulle impostazioni della stampante tipo carta/fronte retro etc).

Verifico poi sul client che /etc/cups/cupsd.conf  metta in ascolto il server cups solo in localhost e con browsing off:

Ora, se sul client vado ad aprire con un browser localhost:631 o apro lo strumento della distribuzione per la configurazione delle stampanti, vedrò correttamentetutte solo le stampanti condivise dal server cups.

cups1
Se però apro il browser e clicco su stampa, oltre alle stampanti condivise dal mio server cups, vedrò anche direttamente tutte le altre stampanti presenti sulla rete che implementano i vari protocolli di condivisione (bonjour etc) e quelle condivise sui server di stampa mal configurati. In una rete piuttosto grande, oltre a essere spiacevole, potrebbe anche essere un elenco molto lungo che, a volte, inchioda il programma che lancia la stampa.

cups2
Questa ricerca avviene perchè sul client c'è attivo il servizio avahi-daemon e l'applet che usano i vari programmi grafici (firefox in questo caso) per stampare lo va ad interrogare.

Per evitare questo spiacevole inconveniente è sufficente disabilitare avahi-daemon in questo modo:

 

P.S: Da bravo paranoico, per evitare che il server cups venga contattato dall'esterno o faccia browsing "strani", oltre a lavorare su cups stesso, configuro qualche semplice regola di iptables che blocchi il traffico, in questo modo (sul server)

 

 

 

Print Friendly, PDF & Email