<div dir="ltr">Ho effettuato l'iscrizione a Ninux-dev così posso dare il mio contributo.<div><br></div><div>Le alternative secondo me sono due:</div><div>- file proxy, cioè quello di cui stiamo già parlando (è necessario allow_url_fopen = true)</div>
<div>- smbclient [1] o [2], con la ovvia limitazione che funzionerebbe solo con smb e non, ad esempio, con ftp</div><div><br></div><div>Il codice che ho inviato "dovrebbe" funzionare, se hai tempo puoi fare un piccolo test con due pagine download, la prima con readfile_chunked(file_locale) e la seconda con readfile_chunked(url_pagina_download1).</div>
<div><br></div><div>Francesco<br></div><div><br></div><div>[1] <a href="http://smorgasbork.com/component/content/article/34-web/66-accessing-smb-servers-with-php">http://smorgasbork.com/component/content/article/34-web/66-accessing-smb-servers-with-php</a><br>
</div><div>[2] <a href="http://sourceforge.net/projects/smbwebclient/">http://sourceforge.net/projects/smbwebclient/</a></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
Il giorno 19 febbraio 2014 12:15, Alessandro Gubitosi <span dir="ltr"><<a href="mailto:gubi.ale@gotanotherway.com" target="_blank">gubi.ale@gotanotherway.com</a>></span> ha scritto:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
Inoltro ninux-dev per "competenza".<br>
<br>
Il 19/02/2014 10:14, Francesco Rapanà ha scritto:<br>
<blockquote type="cite">
<div dir="ltr">Nel caso il file si trovi sulla stessa macchina
dove gira lo script va bene, ma se il file si trova su un'altra
macchina mi pare che il codice non è ancora presente, o sbaglio?
In questo caso lo script farebbe @readfile($url_file_altro_nas)
o farebbe un redirect verso lo script che gira sul nas che
contiene il file?</div>
</blockquote>
Hai ragione non è ancora stato implementato, ma perché sto appunto
aspettando che mi arrivi un altro device per fare lo sviluppo su
entrambi, di modo che poi si possa passare agli step successivi.<br>
Comunque, in teoria parsa l'hash e se c'è il token non guarda in
locale ma fa una richiesta in broadcast rivolta a quel token, che a
sua volta parsa l'hash e tira fuori il file.<br>
Lo script locale re-inoltrerebbe l'output della macchina remota, ma
non so a questo punto quale potrebbe essere la reazione (se appare
la finestra di download o fa qualche scherzetto).<br>
Hai idee migliori?<br>
<br>
<blockquote type="cite">
<div dir="ltr">
<div>In ogni caso readfile credo (non ho testato) dovrebbe dare
problemi di memoria con file molto grandi se è abilitato
l'output buffering, nei commenti su php c'è la funzione
readfile_chunked con il flush. Andrebbe testato sia usando
readfile con file locale che con url, mi preoccupa più questo
secondo caso perché potrebbe tentare di scaricare prima il
file in memoria locale e poi passarlo in output.</div>
</div>
</blockquote>
<blockquote type="cite">
<div dir="ltr">
<div><br>
</div>
<div><span style><span><?php <br>
</span><span>function </span><span>readfile_chunked</span><span>(</span><span>$filename</span><span>,</span><span>$retbytes</span><span>=</span><span>true</span><span>)
{ <br>
</span><span>$chunksize </span><span>= </span><span>1</span><span>*(</span><span>1024</span><span>*</span><span>1024</span><span>); </span><span>//
how many bytes per chunk <br>
</span><span>$buffer </span><span>= </span><span>''</span><span>; <br>
</span><span>$cnt </span><span>=</span><span>0</span><span>; <br>
</span><span>//
$handle = fopen($filename, 'rb'); <br>
</span><span>$handle </span><span>= </span><span>fopen</span><span>(</span><span>$filename</span><span>, </span><span>'rb'</span><span>); <br>
if (</span><span>$handle </span><span>=== </span><span>false</span><span>)
{ <br>
return </span><span>false</span><span>; <br>
} <br>
while (!</span><span>feof</span><span>(</span><span>$handle</span><span>))
{ <br>
</span><span>$buffer </span><span>= </span><span>fread</span><span>(</span><span>$handle</span><span>, </span><span>$chunksize</span><span>); <br>
echo </span><span>$buffer</span><span>; <br>
</span><span>ob_flush</span><span>(); <br>
</span><span>flush</span><span>(); <br>
if (</span><span>$retbytes</span><span>)
{ <br>
</span><span>$cnt </span><span>+= </span><span>strlen</span><span>(</span><span>$buffer</span><span>); <br>
} <br>
} <br>
</span><span>$status </span><span>= </span><span>fclose</span><span>(</span><span>$handle</span><span>); <br>
if (</span><span>$retbytes </span><span>&& </span><span>$status</span><span>)
{ <br>
return </span><span>$cnt</span><span>; </span><span>//
return num. bytes delivered like readfile() does. <br>
</span><span>} <br>
return </span><span>$status</span><span>; <br>
<br>
} <br>
</span><span>?></span></span><br>
</div>
</div>
</blockquote>
Avevo notato bene, infatti su questa cosa che mi ero ripromesso di
parlarne in ML dev.<br>
Come detto sopra, non lo so, andrebbe testato, e sto aspettando <a href="http://imx.solid-run.com/product/cubox-i4-pro/" target="_blank">questo
device</a> da metà novembre (spedito poi il 2 febbraio).<br>
Adesso è "<i>In carico al portalettere del centro postale di RM
PALESTRINA CSD in data 19-FEB-2014"</i>), quindi in teoria
dovrebbe arrivare a giorni, se non oggi stesso.<br>
Ti terrò aggiornato cmq, perché essendo disoccupato e in risposta di
notizie lavorative <a href="https://github.com/gubi/Ninuxoo-2.0/commits?author=gubi" target="_blank">sto
lavorando a tempo pieno per Ninux</a> :D<br>
<br>
Grazie comunque per il coinvolgimento e per la funzione che testerò
sicuramente ;)<br>
A presto<br>
<br>
Gubi<br>
<br>
<blockquote type="cite">
<div class="gmail_extra"><br>
<div class="gmail_quote">Il giorno 19 febbraio 2014 08:56,
Alessandro Gubitosi <span dir="ltr"><<a href="mailto:gubi.ale@gotanotherway.com" target="_blank">gubi.ale@gotanotherway.com</a>></span>
ha scritto:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> <font face="Helvetica, Arial, sans-serif">Parli di una cosa
come questa?<br>
<a href="http://192.168.36.210/Scheda:?ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2U6Ly9NdXNpY2EvR2lvcmdpbyBHYWJlci8oMTk4NCkgLSBHYWJlci8wNyAtIElsIFNvY2lhbGUubXAz" target="_blank">http://192.168.36.210/Scheda:?ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2U6Ly9NdXNpY2EvR2lvcmdpbyBHYWJlci8oMTk4NCkgLSBHYWJlci8wNyAtIElsIFNvY2lhbGUubXAz<br>
</a><br>
Non guardare l'ip perché poi dovrà andare su dns anycast
ninux (ad es. sarà <a href="http://ninuxoo.ninux.org/" target="_blank">http://ninuxoo.ninux.org/</a></font><font face="Helvetica, Arial, sans-serif"><font face="Helvetica, Arial, sans-serif">Scheda:?sde3uhswf3g)</font>.<br>
</font><font face="Helvetica, Arial, sans-serif"><font face="Helvetica, Arial, sans-serif">Per rendere questo
link scaricabile poi anche dall'america ci vorrà
magari un url shortener (in ninux ce n'è già uno) e un
proxy bgp come anche suggerisci tu, con un altro dns,
magari.<br>
</font>L'hash contiene già tutto il percorso al file
(col token del nas al posto del suo ip), per il resto i
nas si trovano in rete da soli via mdns.<br>
<br>
Lo script imputato al download è questo qui: <a href="https://github.com/gubi/Ninuxoo-2.0/blob/master/common/include/funcs/download.php" target="_blank">https://github.com/gubi/Ninuxoo-2.0/blob/master/common/include/funcs/download.php</a><br>
Grazie per la disponibilità del device, ma a meno che
non mi dai accesso ssh per correggere gli script che man
mano sistemo, meglio aspettare.<br>
Sicuramente sarà utile nella fase di collaudo... ;)<br>
Notizia: i NAS si potranno collegare tra loro anche se
sono remoti, basta indicare l'indirizzo ipv(4|6) o
dns... ;)<br>
<br>
A presto<br>
Gubi<br>
<br>
</font>
<div>Il 18/02/2014 22:23, Francesco Rapanà ha scritto:<br>
</div>
<div>
<div>
<blockquote type="cite">
<div dir="ltr">Se ti può essere utile per i test, ho
un synology DS213j.
<div>Al momento sto vedendo come si potrebbe fare
una specie di proxy da installare su un route
reflector client in modo da rendere disponibile
all'esterno determinati file / cartelle interne
alla rete.</div>
<div>es: ho un NAS sul nodo xx e un BGP Route
Reflector con IP pubblico sul nodo yy. Se
volessi rendere "pubblici" determinati file del
NAS, il proxy potrebbe mostrare la lista dei
file su $IP_pubblico_yy/NAS_xx/ e per il
download credo andrebbe fatto qualcosa con fopen
/ fread / fwrite</div>
</div>
<div class="gmail_extra"><br>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</div>
</blockquote></div><br></div>