[LatinaLUG] Modifiche a CUPS
Gabriele Mambrini
g.mambrini@caspur.it
Lun 21 Lug 2008 09:00:22 CEST
Enrico Bassetti ha scritto:
> Common Unix Printing System
>
> Dunque, sviluppando il mio ultimo Progetto (notare la 'P'), che consiste
> in pratica nel configurare CUPS per far inviare via email (che bello
> avere un sistema di posta casalingo) una stampa che converte in PDF, ho
> dovuto mettere mano al sorgente di cups per una accortezza da nulla ma
> che può creare problemi ad esempio nel mio caso.
>
> Allora, CUPS memorizza i dati di accesso dentro /etc/cups/passwd.md5 nel
> formato nomeutente:gruppo:md5password
>
> Il problema dell'md5 è che sembra cambi a seconda non solo della
> password (condizione normale), ma anche dello username e del gruppo.
>
> Indipercuilaquale mi son buttato nel(la) sorgente per cercare qualcosa
> di utile, ed ho scoperto che l'implementazione md5 di cups è abbastanza
> criptica (qualche giorno di questi mi ci metto con impegno ;-) ). Ho
> deciso quindi di sfruttare la cosa a mio vantaggio, cioè uso le stesse
> funzioni che usa cups per la password.
è facile:
lppasswd crea la linea in quel file con questa istruzione
snprintf(line, sizeof(line), "%s:%s:%s\n", username, groupname,
httpMD5(username, "CUPS", newpass, md5new));
dove httpMD5 calcola semplicemente MD5 sulla stringa ottenuta
concatenando con : i primi tre argomenti
snprintf(line, sizeof(line), "%s:%s:%s", username, realm, passwd);
md5_init(&state);
md5_append(&state, (md5_byte_t *)line, strlen(line));
md5_finish(&state, sum);
e poi lo converte in una stringa esadecimale
Insomma per creare una riga di quel file con la shell basta una roba tipo
USER=pluto
GROUP=lp
PASSWORD=xxxyyyzzz
DIGEST=`echo -n $USER:CUPS:$PASSWORD |md5sum|cut -d' ' -f1`
echo $USER:$GROUP:$DIGEST
> Il mio scopo è infatti quello di "scriptare" il tutto, ovvero devo
> creare una pagina web dove $tizio (oggetto "istanziato" della classe
> "Utonti") metta la sua password che va a finire dritta dritta (in
> automatico, ovviamente) in quel maledetto file.
Per scriptare un comando interattivo ti consiglio di dare un'occhiata a
expect, mica si può sempre andare a patchare tutto :-)
Ciao
Gabriele
Maggiori informazioni sulla lista
latina