# [TOOL] glsa-mail e glsa-report, notifica delle GLSA via mail

## FonderiaDigitale

Probabilmente e' pure il primo software marchiato o fatto stto l'egida dei gechi  :Razz: 

Questo script manda una notifica a una mail specificata quando viene rilasciata una advisory che influenza (potenzialmente) la sicurezza del sistema.

```

#!/bin/sh

# script to check for any Gentoo advisory and notify admins via email.

# Requires Gentoolkit

#

# to be called from cron, eg.

# * */6 * * * glsa-mail.sh

#

# Released under the GPL.

# Author Giovanni Ferri <FonderiaDigitale@gechi.it>

# Gechi web site www.gechi.it

                                                                                                                                                                                   

                                                                                                                                                                                   

# change this! :)

email="root"

                                                                                                                                                                                   

checkGLSA () {

tmpfile="/tmp/GLSA_${RANDOM}"

mailfile="/tmp/GLSA_${RANDOM}"

IFS="

"

glsa-check --nocolor --list 2>/dev/null > $tmpfile

lines=`perl -0777pe 's/^(?:.*\n){4}//' $tmpfile`

rm -f $tmpfile

year=`date +%Y`

for each in $lines; do

        GLSAn=`echo "$each"|cut -d' ' -f1`

        type=`echo "$each"|cut -d' ' -f2`

        case $type in

                        *N*)

                                if [ "$got" != 1 ]; then

                                                got=1

                                                echo "$HOSTNAME could be affected by this vulnerability:" >> $mailfile

                                                echo >> $mailfile

                                fi

                                glsa-check --dump $GLSAn 2>/dev/null >> $mailfile

                        ;;

        esac

done

}

                                                                                                                                                                                   

checkGLSA

cat $mailfile|mail $email -s 'new GLSA vulnerability found!! Check your machine.'

                                                                                                                                                                                   

if [ "$got" == 1 ]; then

        rm -f $tmpfile $mailfile

else

        exit 0

fi

```

Buon divertimento  :Smile: 

----------

## federico

Buona idea, il funzionamento e' semplice ma sicuramente si tratta di un tool che risulta utile. Lo sto utilizzando   :Cool: 

----------

## FonderiaDigitale

Si, ed e' scritto pure male  :Smile:  ma fa il suo dovere

Tanto comunque ci tornero' sopra per aggiungerci qualcosa sicuramente in futuro

----------

## federico

Ma la variabile che imposti Year a cosa serve ?

E poi.. visto che nn conosco perl, cosa fa quella riga? Ad occhio e croce pare una regexp

----------

## randomaze

 *federico wrote:*   

> Ma la variabile che imposti Year a cosa serve ?
> 
> E poi.. visto che nn conosco perl, cosa fa quella riga? Ad occhio e croce pare una regexp

 

In effetti pare che non la usi dopo, cmq. non é in perl ma in shell e con quell'istruzione assegna alla variabile (year) l'output del comando "date +%Y" (in pratica mette l'anno nella variabile!)

----------

## federico

Siccome ieri sera non avevo nulla da fare ho scritto una implementazione python del tuo programma, fa la stessa cosa ma manda una mail leggermente diversa, con la descrizione del baco in attach (se ci sono X bachi manda una mail con X attach) e funziona senza il supporto di programmi mail esterni. E' possibile specificare un server smtp per l'invio della mail.

```

#!/usr/bin/env python

# Lo script controlla i Gentoo Advisory e notifica eventuali rischi via mail

# Richiede gentoolkit  e un programma mail funzionante da riga di comando

# glsa-mail.py puo' essere richiamato via cron, es:

# * */6 * * * glsa-mail.py

# Implementazione python di glsa-mail.sh di Giovanni Ferri <FonderiaDigitale@gechi.it>

# Rilasciato sotto licenza GPL

# Federico Galli - fede@sideralis.net - www.sideralis.net

# Riccardo Galli - riccardo@sideralis.net - www.sideralis.net

#Usage:

#glsa-check.py TO SMTP PORT

#SMTP default = localhost

#PORT default = 24

import os, sys, re

from email.MIMEBase import MIMEBase

from email.MIMEText import MIMEText

import email.Utils as Utils

import smtplib, StringIO

argc=len(sys.argv)

if not 2<=argc<=4:

    print 'Usage: addressTO [smtpserver [port]]'

    sys.exit(1)

to=sys.argv[1]

server= argc in (3,4) and sys.argv[2] or "localhost"

port=argc==4 and int(sys.argv[3]) or 25

PATTERN=re.compile(r'(?P<date>\d+-\d+)\s\[(?P<status>.)\]\s(?P<desc>.*)\(\s(?P<prog>.+)\s\)',re.MULTILINE)

soggetto="glsa-check report"

intestazione="Sono state rilevate le seguenti vulnerabilita':\n\n"

stdin,stdout,stderr=os.popen3("glsa-check --list")

text=stdout.read()

stderr=StringIO.StringIO()

stdout.close()

lista_prob=[]

lista_attachs=[]

for line in PATTERN.findall(text):

    if line[1]=='N':

        lista_prob.append(line[2])

        stdin,stdout,stderr=os.popen3('glsa-check --dump %s' % line[0])

        body=stdout.read()

        stderr=StringIO.StringIO()

        stdout.close()

        lista_attachs.append(body)

if not lista_attachs : sys.exit(0)

body=intestazione+'\n'.join(lista_prob)

import socket

msg=MIMEBase('multipart','mixed')

msg['From']="glsa-check@%s.py"% socket.gethostname() or 'sideralis.net'

msg['To']=to

msg['Date']=Utils.formatdate()

msg['Message-ID']=Utils.make_msgid()

msg['Subject']=soggetto

msg.attach(MIMEText(body))

for i in lista_attachs:

    msg.attach(MIMEText(i))

try:

    s=smtplib.SMTP(server,port)

    s.sendmail(msg['From'],msg['To'],str(msg))

    s.quit()

except smtplib.SMTPException,e:

    print e

```

Siccome a volte il python perde la sua indentazione nel forum, si puo' scaricare qui www.sideralis.net/download/glsa-check.py

Fede

----------

## FonderiaDigitale

fico  :Smile: 

Adesso lo testo e poi ti so dire

----------

## federico

Ok ho scritto una versione ottimizzata che richiama direttamente le librerie da gentoolkit e ci mette circa meta' del tempo della versione precedente:

```
blackman@altair blackman $ time python glsa-report.py fede@sideralis.net smtp.fastwebnet.it

real   0m1.081s

user   0m0.854s

sys   0m0.052s

blackman@altair blackman $ time python glsa-check.py fede@sideralis.net smtp.fastwebnet.it

real   0m2.158s

user   0m1.259s

sys   0m0.065s

blackman@altair blackman $      
```

Il che mi pare pregevole.

La versione glsa-report e' scaricabile da www.sideralis.net/download/glsa-report.py e il codice e' questo :

```

#!/usr/bin/env python

# Lo script controlla i Gentoo Advisory e notifica eventuali rischi via mail

# Richiede gentoolkit  e un programma mail funzionante da riga di comando

# glsa-mail.py puo' essere richiamato via cron, es:

# * */6 * * * glsa-mail.py

# Revisione python di glsa-mail.sh di Giovanni Ferri <FonderiaDigitale@gechi.it>

# Rilasciato sotto licenza GPL

# Federico Galli - fede@sideralis.net - www.sideralis.net

# Riccardo Galli - riccardo@sideralis.net - www.sideralis.net

#Usage:

#glsa-report.py TO SMTP PORT

#SMTP default = localhost

#PORT default = 25

import os, sys

from email.MIMEBase import MIMEBase

from email.MIMEText import MIMEText

import email.Utils as Utils

sys.path.insert(0, "/usr/lib/gentoolkit/pym")

from glsa import checkconfig, get_glsa_list, GlsaTypeException, Glsa, portage

import smtplib, random

argc=len(sys.argv)

if not 2<=argc<=4:

    print 'Usage: addressTO [smtpserver [port]]'

    sys.exit(1)

to=sys.argv[1]

server= argc in (3,4) and sys.argv[2] or "localhost"

port=argc==4 and int(sys.argv[3]) or 25

lista_prob=[]

lista_attachs=[]

glsaconfig = checkconfig(portage.config(clone=portage.settings))

completelist = get_glsa_list(glsaconfig["GLSA_DIR"], glsaconfig)

fileName='/tmp/tmp_blabla'+str(int(random.random()*100))

for myid in completelist:

    try:

        myglsa = Glsa(myid, glsaconfig)

    except GlsaTypeException, e:

        #print "invalid GLSA: %s (error message was: %s)" % (myid, e)

        continue

    if myglsa.isVulnerable():

        lista_prob.append(myglsa.title)

        myglsa.dump(outfile=fileName)

        fp=file(fileName)

        lista_attachs.append(fp.read())

        fp.close()

os.remove(fileName)

if not lista_attachs : sys.exit(0)

soggetto="glsa-check report"

intestazione="Sono state rilevate le seguenti vulnerabilita':\n\n"

body=intestazione+'\n'.join(lista_prob)

import socket

msg=MIMEBase('multipart','mixed')

msg['From']="glsa-check@%s.py"% socket.gethostname() or 'sideralis.net'

msg['To']=to

msg['Date']=Utils.formatdate()

msg['Message-ID']=Utils.make_msgid()

msg['Subject']=soggetto

msg.attach(MIMEText(body))

for i in lista_attachs:

    msg.attach(MIMEText(i))

try:

    s=smtplib.SMTP(server,port)

    s.sendmail(msg['From'],msg['To'],str(msg))

    s.quit()

except smtplib.SMTPException,e:

    print e

```

Tra le raffinatezze vi e' la creazione random di un file sotto etc (mantenere il nome fisso alza il rischio sicurezza) e ho scritto al tipo che scrive glsa-report xke' c'e' un pezzo di codice un po' schifoso (spero che implementi il bugfix)

 :Twisted Evil: 

----------

## FonderiaDigitale

due note:

- alcuni sono costretti a usare un smtp server con autenticazione

- il file e' bene crearlo sotto /tmp piu che in /etc

per il resto.. notevole. e son contento che la mia idea sia servita.  :Smile: 

ps. ho cambiato il topic in qualcosa di piu congeniale.

----------

## federico

La tua idea e' veramente piaciuta, su questo non ci piove!

Ho mostrato ad amici l'idea e sono tutti rimasti contenti!

Per le note, il file viene scritto sotto /tmp, ho scritto forse etc da qualche parte e ora nn lo vedo?

```

fileName='/tmp/tmp_blabla'+str(int(random.random()*100)) 

```

E per l'smtp con autenticazione hai ragione.. sarebbe il caso di implementarlo...

Fede

----------

## federico

Fixato quello che c'era da fixare, aggiunta l'autenticazione per smtp e una buona gestione degli errori, ora direi che è a posto.

http://www.sideralis.net/download/glsa-report-1.0.tar.bz2

per chi fosse interessato a provare.

Federico

----------

## FonderiaDigitale

ok, ti dico quello che ho rilevato da fixare:

```
$ ./glsa-report.py -t xxx@yyyy.it -s smtp.tin.it

{'xxx@yyyy.it': (550, 'RCPT TO:<xxx@yyyy.it> Relaying not allowed - please use SMTP AUTH')}
```

forse qui sarebbe da catturare l'output e rispondere con un errore standard

cambia il n. versione da 1 a 2  :Smile: 

potresti aggiungere una opzione --verbose che rilascia in stdout il contenuto di cosa trova (anche se non trova nulla). utile per chi pensa non funzioni non vedendo output.

----------

## solka

Ciao,

ho provato la versione di federico, ma mi dà il seguente errore:

```

pitagora glsa-report-1.0 # glsa-report -t solkanar@ngi.it -s smtp.fastwebnet.it

Traceback (most recent call last):

  File "/usr/bin/glsa-report", line 94, in ?

    os.remove(fileName)

OSError: [Errno 2] No such file or directory: '/tmp/tmp_glsa-report18'

pitagora glsa-report-1.0 # glsa-report -t solkanar@ngi.it -s smtp.fastwebnet.it

Traceback (most recent call last):

  File "/usr/bin/glsa-report", line 94, in ?

    os.remove(fileName)

OSError: [Errno 2] No such file or directory: '/tmp/tmp_glsa-report44'

pitagora glsa-report-1.0 # glsa-report -t solkanar@ngi.it -s smtp.fastwebnet.it

Traceback (most recent call last):

  File "/usr/bin/glsa-report", line 94, in ?

    os.remove(fileName)

OSError: [Errno 2] No such file or directory: '/tmp/tmp_glsa-report92'

pitagora glsa-report-1.0 # glsa-report -t solkanar@ngi.it -s smtp.fastwebnet.it

Traceback (most recent call last):

  File "/usr/bin/glsa-report", line 94, in ?

    os.remove(fileName)

OSError: [Errno 2] No such file or directory: '/tmp/tmp_glsa-report77'

```

sbaglio io qualcosa?

----------

## federico

[EDIT]

Per quanto riguarda l'errore del traceback, e' dovuto al fatto che non ho pensato che un sistema potesse essere esente da errori, come il tuo  :Smile:  Ho sistemato questa cosa e se vuoi provare se ora funziona puoi scaricare

http://www.sideralis.net/download/glsa-report.py

e sostitirlo a quello attuale, mi sai dire come va poi?

(PS: visto che probabilmente il tuo sistema e' privo di errori, se vuoi provare a vedere cosa fa il programma puoi editare la riga 88

   if myglsa.isVulnerable():

trasformandola in

   if not myglsa.isVulnerable():

in questo modo dovrebbe arrivarti una mail contenente tutti i glsa corretti  :Wink: 

)

Sappimi dire!

[/EDIT]

Okey, per quanto riguarda gli errori del server smtp ci avevo fatto caso ma avevo fatto finta di non vedere, preparo qualcosa del tipo "il server ha detto BLABLA, probabilmente si e' verificato un errore nell'invio della mail"

Inoltre aggiungo un po' di verbosaggio  :Smile: 

Oltre queste due cose che mi fai notare ho notato -uno se ne accorge sempre dopo- un paio di sottigliezze nel codice che potevo ottimizzare, sistemo quanto prima possibile   :Twisted Evil: 

Grazie infinite per il supporto !

----------

## federico

Allora allora allora...

http://www.sideralis.net/download/glsa-report-1.1.tar.bz2

Lavorando a tutto questo il programma si e' un po' ingrossato, spero di non aver lasciato pezzi in giro.

- aggiunto il verbose

- aggiunta una buona gestione degli errori

Fede

----------

## FonderiaDigitale

[editato!]

siccome usare degli avvisi di sicurezza senza controllare la veridicita' della fonte NON e' bello, conviene anche controllare se chi ha firmato le GLSA e' effettivamente chi dice di essere.

allora conviene importare le chiavi pubbliche di tutti gli sviluppatori gentoo: per fare questo - una tantum - basta eseguire questo snippet:

```
for a in `lynx -dump http://www.gentoo.org/proj/en/devrel/roll-call/userinfo.xml|grep 0x`; do

    i=`expr match "$a" '.*\(0x........\).*'`

    case $i in

        0x????????) gpg --keyserver hkp://subkeys.pgp.net -q --search-keys "$i";;

    esac

done

```

lascio a te (federico) l'onere di convertirlo in python, se credi, e di aggiungere una opzione al programma tipo --importgentookeys (visto che io, in python, faccio ancora abbastanza pena  :Smile: )

vedi se ti sembra utile (la fase di importing delle chiavi DEVE essere lasciata manuale... e' bene controlla cosa si importa).

----------

## federico

[edit!]

mi hai editato lo script sotto gli occhi  :Smile:  ora lo riprovo

[/edit]

[edit 2]

Keys 1-1 of 1 for "0xA314EE7E"

(1)	Arne Mejlholm (Aaby) <aaby@gentoo.org>

	  1024 bit DSA key A314EE7E, created 2004-01-14

Enter number(s), N)ext, or Q)uit > 

Mi spieghi anche questo che significa?

[/edit 2]

Ho visto ora il post, dopo il wkend ci lavoro un po' ma... essenzialmente non ho capito  :Smile: 

Ho capito che e' bene controllare che le firme di gpg siano corrette e non corrotte   :Laughing:   e se capisco bene (sono una sega in gpg) la procedura sarebbe leggere la pagina dove sono listati gli sviluppatori attivi, leggerne le firme, controllare se matchano con quelle del secondo server (che immagino sia un server dove sono depositate le chiavi)

Ma.. se non matchano verosimilmente la pagina sul sito gentoo e' stata corrotta, o sbaglio? Quindi nel caso non matchassero potrebbero esserci delle informazioni non corrette sul sito di gentoo, giusto?

Non so se ho capito bene...

Ma te lo sei scritto tu quello snippet? Mi rendo conto di essere schiappissimo in bash scripting  :Smile: 

----------

## federico

No spe..

leggiamo le chiavi dalla pagina di gentoo, troviamo i corrispettivi su quel server e poi aggiungiamo le voci [se ce n'e' + di uno prenderei quelli delle mail@gentoo.org] al nostro gpg ottenendo qualcosa tipo questo

ackman@altair blackman $ gpg --list-keys 

/home/blackman/.gnupg/pubring.gpg

---------------------------------

pub  1024D/98B1EECD 2003-03-01 Abhishek Amit <abhishek@gentoo.org>

uid                            Abhishek Amit <andrd@gentoo.org>

uid                            Abhishek Amit <abhishekamit2000@yahoo.com>

uid                            Abhishek Amit (Personal) <abhishek@aamit.com>

sub  1024g/6FCEB5FC 2003-03-01

... giusto?

Ma non mi pareva che glsa-check controllasse le chiavi gpg se presenti...

----------

## solka

 *federico wrote:*   

> [EDIT]
> 
> Per quanto riguarda l'errore del traceback, e' dovuto al fatto che non ho pensato che un sistema potesse essere esente da errori, come il tuo  Ho sistemato questa cosa e se vuoi provare se ora funziona puoi scaricare
> 
> http://www.sideralis.net/download/glsa-report.py
> ...

 

Ciao,

non ho provato l'ultima versione aggiornata, ma cmq con questa modifica funziona perfettamente  :Smile:  Cambiando quella linea arrivano tutti i glsa corretti  :Smile: 

saluti

----------

## federico

Sicuramente allora ti funzionerà anche l'ultima versione, col funzionamento normale. Il tuo errore è stato un buon bug report, in pratica nella gestione del tutto viene creato un file temporaneo che viene cancellato a ciclo esecutivo finito. Il punto era che viene cancellato sempre ma viene creato solo se ci sono bug glsa, che tu non avevi  :Smile: 

Fede

----------

## HexDEF6

Ho un piccolo problema con lo script:

il mio server smtp (server gentoo con qmail e qmail-scanner) mi manda questa mail:

```

Attention: glsa-check@HexDEF6.py

A problem was found in an Email message you sent. 

This Email scanner intercepted it and stopped the entire message

reaching its destination. 

The problem was reported to be: 

Illegal breakage found in header name - potential virus

Please contact your I.T support personnel with any queries regarding this 

policy.

```

leggendo in giro ho letto che potrebbe succedere una cosa del genere se il body di una mail non inizia con una linea a capo... 

Qualcun altro con questo problema?

Ciao!

----------

## federico

Dunque, probabilmente si trattava di una sbagliata implementazione da parte nostra dell'rfc 2822, prova a modificare la linea 135 con

```

body=intestazione+'\r\n'.join(lista_prob)+'\r\n'

```

Dovrebbe risolvere l'errore che giustamente riportava il tuo qmail.

[edit]

www.sideralis.net/download/glsa-report.py

e' il codice aggiornato con questa modifica.

----------

## HexDEF6

 *federico wrote:*   

> Dunque, probabilmente si trattava di una sbagliata 
> 
> Dovrebbe risolvere l'errore che giustamente riportava il tuo qmail.
> 
> www.sideralis.net/download/glsa-report.py
> ...

 

niente da fare... a me da ancora lo stesso errore  :Sad: 

potrebbe essere il mio server che ha problemi? (tutte le altre mail che ricevo funzionano senza problemi)

Ciao!

edit:

se lo lancio dalla stessa macchina dove gira il server smtp, va tutto bene... se lo lancio dal mio desktop mi da l'errore   :Question:   :Question:   :Question: 

----------

## federico

Hai modo di farmi vedere che mail arriva al server quando questo la rifiuta?

Io ho controllato, dovrebbe essere assolutamente rfc la mail che viene creata ma la ricontrollo daccapo.. certo che il tuo server e' proprio schizzinoso   :Laughing: 

Se riesci a mostrarmi la mail che ti rifiuta sarebbe proprio ottimo.

----------

## HexDEF6

qui:

http://supahlooza.homelinux.org/mail.tar.gz

trovi le 2 mail, quella che mi ha spedito (ho eseguito lo script sul mio server dove c'e' il server smtp con questa riga: ./glsa-report.py -t mio_indirizzo@supahlooza.homelinux.org ) e quella rifiutata ( ho eseguito lo script sul mio desktop lanciandolo così:  ./glsa-report.py -t  mio_indirizzo@supahlooza.homelinux.org -s 192.168.0.254  dove 192.168.0.254 e' il mio server )

Ciao!

----------

## federico

Dunque, abbiamo controllato in due questi file e ad occhio nudo paiono  corrette, ci e' venuto l'unico dubbio sul fatto che magari il tuo server rompe sulla formazione degli \n che nelle mail vengono formate come \r\n

Abbiamo quindi aggiornato questa porzione di codice

```

for i in lista_attachs:

    msg.attach(MIMEText(i.replace('\n','\r\n')))

debug("attached %s file(s)" % len(lista_attachs))

```

sperando che il problema sia relativo a questo (certo che se il tuo qmail fosse + generoso di debug...   :Rolling Eyes:    )

Sempre questo il link per il file aggiornato sperando che sia la volta buona   :Evil or Very Mad:   :Very Happy: 

http://www.sideralis.net/download/glsa-report.py

----------

## HexDEF6

niente da fare... adesso indago meglio io sul mio qmail ......

----------

## federico

Aspetto notizie perche' qui noi siamo sicuri al 99% che sia corretto... sappimi dire se hai novita'. Del resto cavoli, se va dal server...

----------

## FonderiaDigitale

Ho controllato l'implementazione attuale delle chiavi gpg sulle GLSA,e pare che non ci sia nessun documento ufficiale che ne certifichi i passi e l'attuabilita'.

in pratica, questo significa che siccome le GLSA non sono ancora firmate in gpg, nessuno ti garantisce (teoricamente) che quelle advisory siano legittime (a grandi linee) e quindi, e' inutile quanto incosciente pensare di implementare un sistema di patching automatico (il famoso emerge --security).

----------

## federico

Anche io nn avevo trovato nulla, se guardi nell'ultimo sorgente del mio software troverai in alto una funzione che aggiunge tutte le chiavi degli autori gentoo, per ora la alscero' disattivata xke infatti le glse nn sono firmate..

----------

## matttions

CIao ragazzi...

volevo utilizzare questo script ...

ma nn riesco a scaricare la versione python di federico [che se nn ho capito male è l'ultima]

qualcuno lo può mettere a disposizione ?

grazie  :Smile: 

----------

## .:deadhead:.

Il motivo per cui non riesci più a scaricarlo è che il dominio è stato cambiato in sideralis.org

Se cambi il dominio vedrai che lo trovi al medesimo indirizzo  :Wink: 

----------

## matttions

okkey trovato e scaricato...

grazie...

 :Smile: 

----------

## Scen

Sto provando lo script di Fonderia e quello di Federico, ho riscontrato 2 problemi:

- script di Fonderia (BASH version)

se lo lancio così com'è mi arriva una mail semivuota, con solo il messaggio "$HOSTNAME could be affected by this vulnerability:"

bisogna correggere la linea 21 aggiungendo il parametro "--nocolor" in

```

glsa-check --nocolor --list 2>/dev/null > $tmpfile

```

e il contenuto della mail risulta completo.

- script di Federico (PYTHON version)

"muore" dando il seguente errore (lanciandolo con glsa-report -t mioutentelocale, ho postfix che gira funzionante su localhost:)

```

Traceback (most recent call last):

  File "/usr/local/sbin/glsa-report", line 122, in ?

    myglsa.dump(outfile=fileName)

TypeError: dump() got an unexpected keyword argument 'outfile'

```

Tutto questo su Gentoo x86 aggiornato all'ultima versione stabile.

----------

## Peach

 *Scen wrote:*   

> - script di Federico (PYTHON version)
> 
> "muore" dando il seguente errore (lanciandolo con glsa-report -t mioutentelocale, ho postfix che gira funzionante su localhost:)
> 
> ```
> ...

 

lamento lo stesso problema.

qualcuno usa questo script o analogo per i report glsa via mail?

----------

## Scen

La versione 1.2 sembra risolvere il problema.

L'ho testato e funziona correttamente!  :Very Happy: 

----------

## Peach

 *Scen wrote:*   

> La versione 1.2 sembra risolvere il problema.
> 
> L'ho testato e funziona correttamente! 

 

great, testato e funziona, confermo.

Oggi avevo il mouse pigro, grazie.

----------

## FonderiaDigitale

 :Shocked: 

ancora qualcuno lo usa   :Laughing: 

----------

## FonderiaDigitale

 *Scen wrote:*   

> 
> 
> bisogna correggere la linea 21 aggiungendo il parametro "--nocolor" in
> 
> ```
> ...

 

fatto,grazie   :Cool: 

----------

## Peach

 *FonderiaDigitale wrote:*   

> 
> 
> ancora qualcuno lo usa  

 

così pare  :Smile: 

----------

## mrfree

Mi sono permesso di modificare il tool originale secondo le mie esigenze... se vi interessa è disponibile (insieme a maggiori dettagli) in questo thread

----------

