<br><br><div class="gmail_quote">Il giorno 16 novembre 2010 13:35, Manlio Perillo <span dir="ltr"><<a href="mailto:manlio.perillo@gmail.com">manlio.perillo@gmail.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Il problema però è capire i casi di uso.<br>
In quale casi hai bisogno di verificare l'integrità di tutti i moduli<br>
Python utilizzati? </blockquote><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
L'unico caso di uso che mi viene in mente è quando l'interprete python<br>
viene eseguito con privilegi particolare (ad esempio root, oppure<br>
accesso a porte IP).<br></blockquote><div><br>
Penso che sia necessario, oltre ai casi da te citati, nel caso in cui ad
esempio Python venga utilizzato come scripting di un altro motore
(poniamo l'esempio di un motore grafico, o di una applicazione tanto
complessa da rendere necessaria tale scelta). In quel caso, qualora si
possa voler preferire un linguaggio già pronto (anzichè fare un nuovo
interprete che magari supporti i file binari per proteggere anche la
logica), si rende necessario il poter operare in tutta tranquillità in
una sandbox, e quindi controllare che non vi siano manomissioni a uno
qualunque dei moduli utilizzati (altrimenti si comprometterebbe la
stabilità e il flusso di lavoro del programma).<br>
Per fare un esempio mi vengono in mente solo applicativi di una certa
stazza, che probabilmente, visto il loro valore, non si appoggerebbero
mai ad una soluzione che ne esponga la logica.<br>
<br>
Boh, adesso non saprei precisamente il perchè di una scelta, magari come
dici tu è solo perchè da root potrebbe compromettere l'intero sistema,
ma se è un software destinato ad uso professionale penso che anche se
non venga eseguito da root dovrebbe garantire sempre la corretta
esecuzione, pensa se un utente modifica i file python, magari per
sbaglio, e poi lavora sul software (poniamo che sia di disegno tecnico),
clicca su 'Salva' e si rende conto che il menù File non funziona perchè
la relativa funzione python è stata compromessa (e non è rara la scelta
di un linguaggio di scripting per gestire l'interfaccia grafica, anzi).
Invece controllando, all'avvio, eventualmente segnala che il programma
necessita di essere reinstallato e boh.<br>
<br>
Se ho sbagliato qualcosa, correggetemi pure.<br>
Probabilmente ci sono altre motivazioni più valide, ma che non mi vengono in mente. <br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im">
<br>
</div>Al momento non sono sicuro della differenza tra i due, dovrei leggere il<br>
codice.<br></blockquote><div><br>
Io prevedo di farlo stasera, se ho un po' di tranquillità, nel caso scopro la differenza la posto qui subito. <br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
> [...]<br>
<div class="im">> Unico problema trovato in fase di compilazione del sorgente è che il<br>
> modulo hashlib crea un errore cercando di importare _md5, anche se,<br>
> onestamente, non capisco perchè in fase di compilazione tenti di<br>
> eseguire il modulo signedimporter (che importa hashlib).<br>
><br>
<br>
</div>Parli della compilazione di python?<br></blockquote><div><br>
Si, dopo aver modificato la '_PyImportHooks_Init' e compilando ottengo
quell'errore. Se uso la stessa gestione che usano per zipimport ovvero,
in caso di errore passaci sù, funziona giustamente. Però poi anche a
runtime ad ogni avvio quella sarebbe la gestione dell'errore.
Probabilmente avviene perchè hashlib non ha ancora accesso a tutte le
sue dipendenze (magari devono essere compilate).<br>
Per provare ho lasciato passare l'errore, la soluzione definitiva
sarebbe o fare il modulo in C (come lo è zipimport) o magari trovare un
modo per aggirare il problema di hashlib.<br>
<br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im"><br>
<br>
Ciao Manlio<br clear="all">
</div></blockquote></div><br>Ciao e buona serata.<br>PS. a questo punto, se dovesse rendersi necessario il fare troppe modifiche all'interprete per via di vari problemi nei moduli, si potrebbe pensare ad includere un nuovo file .c all'interprete e rendere il controllo parte integrante dell'interprete stesso, ovviamente se dovesse essere necessario farlo su *tutti* i moduli, permettendo però, di inserire in qualche modo il dizionario con le chiavi. Però mi suona di cosa che necessita la modifica dell'inizializzazione di CPython, perchè dovrebbe poter accedere ad un dato runtime (il dizionario), prima dell'inizializzazione e quindi dell'esecuzione effettiva del programma: forse la soluzione non è fattibile.<br>