11768 Letture

Condividere file online con password utilizzando Google App Engine e PHP

Google App Engine (GAE) è una piattaforma realizzata dal colosso di Mountain View che permette di sviluppare od ospitare "sulla nuvola" (ovvero sui server di Google) vere e proprie applicazioni web. Creare siti su Google App Engine è molto semplice dal momento che viene offerta una comodissima applicazione gratuita grazie alla quale le applicazioni web possono essere provate in locale prima di pubblicarle online.

App Engine permette di ospitare pagine statiche e dinamiche e caricarle utilizzando l'affidabile infrastruttura cloud di Google.
Ad ottobre 2013 Google ha esteso a tutti la possibilità di caricare online pagine PHP che potranno anche interagire con una base dati anch'esso memorizzata "in the cloud" sui server di Google (Cloud SQL).

Google App Engine supporta script PHP, Python, Java e Go cosicché le applicazioni web possano essere scritte utilizzando i linguaggi più diversi (vedere questa pagina).


Il comportamento di Google App Engine è quindi molto simile a quello del provider che fornisce servizio di hosting. L'unica differenza consiste nel fatto che le pagine e gli script non debbono essere caricati online utilizzando un client FTP ma ricorrendo esclusivamente all'App Engine SDK.

Per mostrarvi le potenzialità del servizio Google App Engine, proviamo a caricare online un semplicissimo script PHP per poi misurarci con qualcosa di più complesso.
Non esistono servizi cloud gratuiti che consentono di condividere un file proteggendone il download con una password. Ciò che proveremo a fare, quindi, è proteggere il download di un file con una password utilizzando uno script PHP e Google App Engine.

Come accade anche nel caso degli altri servizi di Google, anche App Engine ha qualche limitazione. In particolare, l'utente ha a disposizione 1 GB di spazio per memorizzare script ed altre tipologie di file e non può consumare, giornalmente, più di 1 GB di banda. Superando tali limiti, Google richiederà l'attivazione di un abbonamento a pagamento.
Per verificare tutti i limiti imposti da Google, è sufficiente fare riferimento a questa pagina.

Eseguire pagine PHP su Google App Engine

Il primo passo per eseguire pagine PHP su Google App Engine, consiste nello scaricare e nell'installare il pacchetto App Engine SDK.
Il download di Google App Engine SDK per Windows è effettuabile cliccando qui quindi sul link the latest PHP SDK for App Engine.

Dopo aver installato il pacchetto SDK (è compatibile con tutte le versioni di Windows da Windows XP SP3 in avanti), si dovrà installare Python 2.7.x.
L'ultima versione del linguaggio di programmazione è prelevabile facendo riferimento a questa pagina.
Python è necessario perché l'SDK di Google App Engine è stato sviluppato utilizzando proprio questo linguaggio. Non c'è invece alcuna necessità di scaricare separatamente PHP.

Nel caso in cui l'installazione del Google App Engine SDK non andasse a buon fine (visualizzazione dell'errore "Installer has encountered an unexpected error installing this package. This may indicate a problem with this package. Error code is 2908"), il suggerimento è quello di portarsi nel registro di Windows in corrispondenza della chiave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\.
Dopo aver individuato, al suo interno, la chiave contenente il valore rgb9rast_2.dll, si consiglia di eliminarla e di riavviare l'installazione del pacchetto SDK.


Una volta installati entrambi i pacchetti, si potrà eseguire Google App Engine SDK tenendo presente che alla prima esecuzione potrebbe visualizzare il seguente messaggio d'errore:

Condividere file online con password utilizzando Google App Engine e PHP

Per risolvere il problema, basterà fare clic sul pulsante OK, cliccare sul menù Edit, Preferences quindi digitare il percorso completo dell'eseguibile di Python 2.7:

Condividere file online con password utilizzando Google App Engine e PHP

Dopo aver cliccato su OK, bisognerà chiudere e riavviare l'SDK di Google: l'errore non dovrebbe più apparire.

A questo punto, si dovrà creare una nuova cartella su disco (nel nostro caso abbiamo usato C:\TEMP) e creare, utilizzando un normale editor di testo, due file:

app.yaml

application: download-risorse
version: 1
runtime: php
api_version: 1

handlers:
- url: /
  script: index.php

- url: /(.*\.php)
  script: \1


benvenuto.php

<?php
echo "Benvenuto";
?>


Il primo è un file di configurazione che permette di specificare a Google App Engine la tipologia di script che si troverà a gestire e quali handlers (ossia "gestori di file") dovranno essere impiegati.
Nel nostro caso, abbiamo richiesto ad App Engine che tutti i file con estensione .php vengano gestiti dall'handler di PHP.


L'unico parametro da modificare è download-risorse al posto del quale bisognerà specificare il nome dell'applicazione web da eseguire sulla nuvola con App Engine.

Dopo aver effettuato il login su Google, utilizzando il browser web, con il proprio account, bisognerà visitare questa pagina.
Si tratta del pannello di controllo di tutte le applicazioni web caricate su Google App Engine.

Condividere file online con password utilizzando Google App Engine e PHP

Il primo passo da compiere consiste nel fare clic su Create project, assegnare un nome al progetto e scegliere un identificativo (nel nostro caso abbiamo specificato download-risorse.

La scelta dell'ID è importante perché esso dovrà essere specificato in corrispondenza del parametro application:, nel file app.yaml e sarà successivamente utilizzabile per richiamare l'applicazione dall'URL http://ID_scelto.appspot.com (nel nostro caso, http://download-risorse.appspot.com).

La prima volta che si utilizza il pannello di amministrazione di App Engine, Google richiederà di confermare la propria identità attraverso una procedura di doppia autenticazione via SMS.
Specificando il proprio numero di telefono cellulare, Google invierà un SMS contenente un codice personale. Tale codice dovrà essere digitato per avere accesso ai servizi di App Engine.



Gli utenti più smalizati, nel caso in cui arrivassero a sviluppare un vero e proprio sito web su App Engine, potranno liberarsi del dominio di terzo livello (http://ID_scelto.appspot.com) facendo puntare un altro dominio ai server di Google.
Per usare un dominio personalizzato con appspot/Google App Engine basterà applicare una procedura molto simile a quella già vista nel caso di Blogger e Tumblr: Dominio personalizzato su Blogger e Tumblr: come fare.


A questo punto, è possibile già provare ad eseguire lo script di benvenuto preparato in precedenza.
Dall'SDK di Google bisogna cliccare sul menù File, Add existing application quindi indicare la cartella contenente i file PHP:

Condividere file online con password utilizzando Google App Engine e PHP

Nella finestra principale si dovrà selezionare il progetto appena aggiunto quindi fare clic sul pulsante Run:

Condividere file online con password utilizzando Google App Engine e PHP

Dopo alcuni secondi di attesa, digitando – da un qualsiasi browser web – l'indirizzo locale http://localhost:8080/benvenuto.php, dovrebbe comparire un messaggio di benvenuto.

Utilizzando l'URL localhost è sempre possibile verificare il corretto funzionamento degli script PHP sviluppati prima di caricarli online su App Engine.


Cliccando sul pulsante Deploy, tutto il contenuto della cartella del progetto (nel nostro caso C:\TEMP) sarà caricato sulla nuvola, in Google App Engine.

Condividere file online con password utilizzando Google App Engine e PHP

Per procedere sarà necessario inserire i dati di autenticazione del proprio account Google.

A procedura ultimata comparirà il messaggio "Process exited with code 0 – You can close this window now". Ciò significa che l'upload è stato completato con successo.

Condividere file online con password utilizzando Google App Engine e PHP

Digitando l'URL http://ID_scelto.appspot.com/benvenuto.php, la pagina PHP verrà immediatamente elaborata dai server di Google.

Complimenti! State eseguendo la vostra prima pagina PHP direttamente dalla nuvola di Google.

A questo punto, nella medesima cartella locale, aggiungiamo i file contenuti in questo archivio compresso.

Nella cartella mydownload_folder (suggeriamo vivamente di modificare il nome della cartella optando per una denominazione complessa...) abbiamo inserito un file PDF il cui download dev'essere protetto con password.
Il file PDF si chiama doc8tgh8Xp.pdf ma verrà presentato all'utente autorizzato ad effettuarne il download col nome documentopdf.pdf.


Dopo aver cliccato sul pulsante Deploy, tutti i file saranno trasmessi sui server di Google, nell'ambito del servizio App Engine.

Lo script index.php prende in ingresso il nome del file da scaricare insieme con il parametro "c", un lungo codice alfanumerico.

Si supponga di gestire un blog e di voler far scaricare ai propri utenti il file documentopdf.pdf (salvato su server come doc8tgh8Xp.pdf).

Nel file index.php, a partire dalla riga 69 in avanti, si possono specificare i file che debbono essere scaricabili da App Engine.
Esempio:

if ($filename == "documentopdf.pdf") $file = "./mydownload_folder/doc8tgh8Xp.pdf";

Al posto di documentopdf.pdf dev'essere indicato il nome del file così come dev'essere presentato all'utente che effettua il download mentre a doc8tgh8Xp.pdf va sostituito il nome con cui lo stesso file è memorizzato sul server.
Nel medesimo file, in corrispondenza della stringa $password (seconda riga del file) va indicata la password che l'utente dovrà digitare per scaricare il file.
In corrispondenza della successiva stringa $pwdm5 va inserita una password accessoria che verrà utilizzata per generare il codice che autorizza l'utente al download del file.
La medesima password $pwdm5 dovrà essere specificata anche nel file md5.php (seconda riga).

Dopo aver ricaricato tutti i file opportunamente modificati (pulsante Deploy), si potrà digitare l'URL seguente:
http://ID_scelto.appspot.com/md5.php?f=documentopdf.pdf


Si otterrà un URL che potrà essere pubblicato nella forma http://ID_scelto.appspot.com/index.php?f=documentopdf.pdf&c=codice_alfanumerico sul proprio blog.

- Esempio: download; oppure più semplicemente download.

Una volta caricati i vari file da condividere con password, il file md5.php - utilizzabile per generare i vari link - dovrebe essere eliminato.

Ad uso e consumo degli utenti più smaliziati, diciamo che entrambi i file PHP contengono alcune righe commentate che fanno riferimento al controllo dell'indirizzo IP del client.
Attivando tale verifica si può fare in modo che un link per il download di uno specifico file funzioni solo ed esclusivamente per un certo IP.
Generando dinamicamente lato blog il link per il download del file (controllando l'IP del client), si farà in modo che gli URL per il download di uno stesso file non possano essere riutilizzati così come sono da altri utenti.
Per avere il proprio link per il download, quindi, gli utenti dovranno quindi sempre passare per il blog.


Condividere file online con password utilizzando Google App Engine e PHP - IlSoftware.it