NexusGrab
NexusGrab - File Manager
## π― Caratteristiche
- β Interfaccia moderna e responsive (Bootstrap 5)
- β Gestione file e cartelle con navigazione gerarchica
- β Sistema di categorie per organizzare i file
- β Pannello di amministrazione protetto
- β Statistiche download in tempo reale
- β Sistema di ricerca integrato
- β **Nessun database richiesto** (usa JSON)
- β Pagine legali complete (Privacy, Termini, Cookie Policy)
NexusGrab Γ¨ un moderno file manager web sviluppato in PHP
che permette di gestire e condividere file in modo semplice ed efficiente.
## π Requisiti
- **PHP 7.4 o superiore** (consigliato PHP 8.0+)
- **Server web** (Apache o Nginx)
- **Estensioni PHP:** fileinfo, json, session (solitamente giΓ incluse)
- **Spazio su disco** per i file caricati
**β οΈ NOTA:** NexusGrab **NON richiede MySQL**. Usa un file JSON per i dati.
## π Installazione Rapida
1. **Carica i file** sul tuo server web
**Imposta i permessi:**
```bash
chmod 755 uploads
chmod 755 data
**Accedi al pannello admin:**
Β Β - URL: `http://tuodominio/download/admin/login.php`
Β Β - Username: `admin`
Β Β - Password: (quella configurata)
π Struttura del Progetto
```
download/
βββ index.php Β Β Β Β Β Β Β Β # Homepage principale
βββ browse.php Β Β Β Β Β Β Β Β # Esplorazione file
βββ download.php Β Β Β Β Β Β Β # Sistema download
βββ logout.php Β Β Β Β Β Β Β Β # Logout admin
βββ admin/ Β Β Β Β Β Β Β Β Β Β # Pannello amministrazione
β Β βββ index.php
β Β βββ login.php
βββ config/ Β Β Β Β Β Β Β Β Β # Configurazione
β Β βββ config.php
βββ includes/ Β Β Β Β Β Β Β Β # Componenti riutilizzabili
β Β βββ header.php
β Β βββ footer.php
β Β βββ categories.php
β Β βββ recent_downloads.php
βββ assets/ Β Β Β Β Β Β Β Β Β # Risorse statiche
β Β βββ css/
β Β Β Β βββ style.css
βββ data/ Β Β Β Β Β Β Β Β Β Β # Dati sistema
β Β βββ files.json
βββ uploads/ Β Β Β Β Β Β Β Β Β # File caricati
```
## π Sicurezza
- β Cambia immediatamente la password admin dopo l'installazione
- β Elimina i file di test/debug prima di mettere online
- β Imposta permessi corretti (755 per cartelle, 644 per file)
- β Usa HTTPS per proteggere le credenziali
- β Fai backup regolari di `uploads/` e `data/files.json`
**Configura la password admin:**
Β Β - Esegui `fix_password.php` nel browser
Β Β - Oppure modifica `config/config.php` manualmente
## π Note
- Il sistema usa **JSON invece di MySQL** per semplicitΓ
- Adatto per fino a ~1000 file per buone performance
- Dimensione massima file: dipende da `php.ini` (default 2MB)
## π Licenza
Questo progetto Γ¨ rilasciato sotto licenza MIT.
π― Cos'Γ¨ NexusGrab?
**NexusGrab** Γ¨ un sistema di gestione file web che ti permette di:
- β Caricare e organizzare file sul tuo server
- β Condividere file con link pubblici
- β Gestire file e cartelle tramite un'interfaccia web
- β Monitorare statistiche di download
- β Organizzare file in categorie/cartelle
**Non richiede database MySQL!** Tutti i dati sono salvati in un file JSON, rendendo l'installazione molto semplice.
---
## π Requisiti di Sistema
Prima di installare, assicurati di avere:
### **Requisiti Minimi:**
- β **PHP 7.4 o superiore** (consigliato PHP 8.0+)
- β **Server web** (Apache o Nginx)
- β **Spazio su disco** per i file che vuoi caricare
- β **Permessi di scrittura** per alcune cartelle
### **Estensioni PHP Necessarie:**
- β `fileinfo` - Per gestire i file
- β `json` - Per salvare i dati (solitamente giΓ inclusa)
- β `session` - Per il login admin (solitamente giΓ inclusa)
### **Come Verificare i Requisiti:**
Crea un file `test.php` nella root del progetto con questo contenuto:
```php
<?php
phpinfo();
?>
```
Apri `http://tuosito.com/test.php` e verifica che PHP sia installato.
---
## π Installazione Passo-Passo
### **STEP 1: Carica i File sul Server**
1. **Scarica o clona** tutti i file del progetto
2. **Carica** tutti i file nella cartella del tuo server web
Β Β - Esempio: `/public_html/download/` o `/var/www/html/download/`
Β Β - Puoi usare FTP, SFTP o il file manager del tuo hosting
### **STEP 2: Crea le Cartelle Necessarie**
Crea queste cartelle se non esistono giΓ :
```
download/
βββ uploads/ Β Β Β Β Β β Cartella per i file caricati
βββ data/ Β Β Β Β Β Β β Cartella per i dati JSON
```
**Come crearle:**
- **Via FTP/File Manager:** Crea le cartelle manualmente
- **Via Terminale SSH:**
Β ```bash
Β mkdir uploads
Β mkdir data
Β ```
### **STEP 3: Imposta i Permessi**
Le cartelle devono essere **scrivibili** dal server:
**Via Terminale SSH:**
```bash
chmod 755 uploads
chmod 755 data
chmod 666 data/files.json Β # Se il file esiste giΓ
```
**Via FTP/File Manager:**
- Clicca destro sulla cartella β ProprietΓ /Permessi
- Imposta: `755` per cartelle, `644` per file
### **STEP 4: Crea il File JSON dei Dati**
Crea il file `data/files.json` con questo contenuto iniziale:
```json
{
Β Β "files": [],
Β Β "categories": []
}
```
**Come crearlo:**
- Crea un file vuoto chiamato `files.json` nella cartella `data/`
- Incolla il contenuto JSON sopra
- Salva il file
### **STEP 5: Configura la Password Admin**
1. **Apri** il file `config/config.php`
2. **Trova** la riga con `ADMIN_PASSWORD`
3. **Genera un hash** per la tua password:
**Opzione A - Usa lo script automatico:**
- Apri nel browser: `http://tuosito.com/download/fix_password.php`
- Lo script genererΓ l'hash e aggiornerΓ automaticamente `config.php`
- **Elimina** `fix_password.php` dopo l'uso
**Opzione B - Genera manualmente:**
- Apri nel browser: `http://tuosito.com/download/generate_admin_password.php`
- Modifica la password nello script
- Copia l'hash generato
- Incollalo in `config/config.php` al posto di `ADMIN_PASSWORD`
### **STEP 6: Verifica l'Installazione**
1. **Apri** nel browser: `http://tuosito.com/download/`
2. Dovresti vedere la homepage con le cartelle
3. **Prova il login admin:**
Β Β - Vai a: `http://tuosito.com/download/admin/login.php`
Β Β - Username: `admin`
Β Β - Password: (quella che hai configurato)
---
## π Come Funziona NexusGrab
### **Architettura del Sistema**
```
βββββββββββββββββββββββββββββββββββββββββββ
β Β Β Β Β INTERFACCIA UTENTE Β Β Β Β Β Β Β β
β Β (index.php, browse.php, download.php) Β β
ββββββββββββββββ¬βββββββββββββββββββββββββββ
Β Β Β Β Β Β Β Β β
ββββββββββββββββΌβββββββββββββββββββββββββββ
β Β Β Β CONFIGURAZIONE Β Β Β Β Β Β Β Β Β Β β
β Β (config/config.php) Β Β Β Β Β Β Β Β Β Β β
β Β - Percorsi cartelle Β Β Β Β Β Β Β Β Β Β β
β Β - Credenziali admin Β Β Β Β Β Β Β Β Β Β β
β Β - Funzioni utility Β Β Β Β Β Β Β Β Β Β β
ββββββββββββββββ¬βββββββββββββββββββββββββββ
Β Β Β Β Β Β Β Β β
ββββββββββββββββΌβββββββββββββββββββββββββββ
β Β Β Β STORAGE DATI Β Β Β Β Β Β Β Β Β Β Β β
β Β - uploads/ (file fisici) Β Β Β Β Β Β Β β
β Β - data/files.json (metadati) Β Β Β Β Β β
βββββββββββββββββββββββββββββββββββββββββββ
```
### **Flusso di Funzionamento**
#### **1. Visualizzazione File (index.php)**
```
Utente apre homepage
Β Β β
PHP legge cartella uploads/
Β Β β
Scansiona tutte le sottocartelle
Β Β β
Legge metadati da data/files.json
Β Β β
Mostra file e cartelle all'utente
```
#### **2. Download File (download.php)**
```
Utente clicca "Scarica"
Β Β β
PHP verifica che il file esista
Β Β β
Aggiorna contatore download in JSON
Β Β β
Invia file al browser
```
#### **3. Upload File (admin/index.php)**
```
Admin seleziona file
Β Β β
Sceglie cartella destinazione
Β Β β
PHP salva file in uploads/cartella/
Β Β β
Aggiunge metadati a data/files.json
Β Β β
File disponibile per download
```
---
## π Guida all'Uso
### **Per gli Utenti Finali**
#### **Navigare i File**
1. **Homepage (`index.php`):**
Β Β - Mostra tutte le cartelle principali
Β Β - Tabella con tutti i file
Β Β - Barra di ricerca per trovare file
2. **Esplora File (`browse.php`):**
Β Β - Naviga nelle cartelle
Β Β - Breadcrumb per orientarti
Β Β - Clicca su una cartella per aprirla
Β Β - Clicca su un file per scaricarlo
3. **Download:**
Β Β - Clicca il pulsante "Scarica" accanto al file
Β Β - Il file si scaricherΓ automaticamente
Β Β - Il contatore download viene aggiornato
### **Per gli Amministratori**
#### **Accesso al Pannello Admin**
1. Vai a: `http://tuosito.com/download/admin/login.php`
2. Inserisci:
Β Β - **Username:** `admin`
Β Β - **Password:** (quella configurata)
3. Clicca "Accedi"
#### **Caricare un File**
1. Nel pannello admin, vai alla sezione "Carica File"
2. Clicca "Scegli File" e seleziona il file dal tuo computer
3. Scegli la **cartella di destinazione** dal menu a tendina
4. Clicca "Carica"
5. Il file sarΓ disponibile nella cartella selezionata
#### **Creare una Cartella**
1. Nel pannello admin, vai alla sezione "Crea Cartella"
2. Inserisci il nome della cartella
3. (Opzionale) Scegli una cartella padre
4. Clicca "Crea"
5. La cartella sarΓ disponibile per organizzare i file
#### **Gestire File e Cartelle**
Nel pannello admin puoi:
- **Rinomina:** Clicca "Rinomina" e inserisci il nuovo nome
- **Elimina:** Clicca "Elimina" e conferma
- **Naviga:** Clicca su una cartella per aprirla
---
## βοΈ Configurazione Avanzata
### **Modificare i Percorsi**
Apri `config/config.php`:
```php
// Cartella dove vengono salvati i file
define('UPLOAD_DIR', __DIR__ . '/../uploads/');
// File JSON con i metadati
define('DATA_FILE', __DIR__ . '/../data/files.json');
```
**Esempio:** Se vuoi salvare i file in un'altra posizione:
```php
define('UPLOAD_DIR', '/var/www/files/');
```
### **Cambiare Username Admin**
In `config/config.php`:
```php
define('ADMIN_USERNAME', 'tuo_username');
```
### **Cambiare Password Admin**
1. Usa `generate_admin_password.php` o `fix_password.php`
2. Oppure genera manualmente l'hash e sostituisci `ADMIN_PASSWORD`
### **Personalizzare lo Stile**
Modifica `assets/css/style.css` per cambiare:
- Colori del sito
- Font e dimensioni
- Layout e spaziature
---
## π Sicurezza
### **Raccomandazioni Importanti:**
1. **Cambia la password admin** subito dopo l'installazione
2. **Elimina i file di test/debug** prima di mettere online:
Β Β - `test_*.php`
Β Β - `debug_*.php`
Β Β - `fix_password.php`
Β Β - `generate_admin_password.php`
Β Β - `setup_password.php`
Β Β - `temp_hash_generator.php`
Β Β - `test_password.php`
3. **Imposta permessi corretti:**
Β Β - Cartelle: `755`
Β Β - File PHP: `644`
Β Β - File JSON: `644` o `666` (se necessario)
4. **Usa HTTPS** per proteggere le credenziali di login
5. **Backup regolari:**
Β Β - Cartella `uploads/` (i tuoi file)
Β Β - File `data/files.json` (metadati)
---
## π Risoluzione Problemi
### **Problema: "File non trovato"**
**Soluzione:**
- Verifica che la cartella `uploads/` esista
- Controlla i permessi della cartella (deve essere `755` o `777`)
### **Problema: "Non posso caricare file"**
**Soluzione:**
- Verifica i permessi della cartella `uploads/` (deve essere scrivibile)
- Controlla `php.ini` per `upload_max_filesize` e `post_max_size`
### **Problema: "Errore login admin"**
**Soluzione:**
- Verifica che l'hash in `config/config.php` sia corretto
- Usa `test_password.php` per verificare la password
- Assicurati che `password_verify()` funzioni (PHP 5.5+)
### **Problema: "Pagina bianca"**
**Soluzione:**
- Attiva gli errori PHP temporaneamente:
Β ```php
Β error_reporting(E_ALL);
Β ini_set('display_errors', 1);
Β ```
- Controlla i log del server
- Verifica che tutti i file siano caricati correttamente
### **Problema: "CSS non si carica"**
**Soluzione:**
- Verifica che `assets/css/style.css` esista
- Controlla i permessi del file (deve essere leggibile)
- Verifica il percorso nel browser (Console β Network)
---
## π Struttura File Essenziali
```
download/
βββ index.php Β Β Β Β Β Β Β Β β Homepage principale
βββ browse.php Β Β Β Β Β Β Β Β β Esplorazione file
βββ download.php Β Β Β Β Β Β Β β Sistema download
βββ logout.php Β Β Β Β Β Β Β Β β Logout admin
βββ info.php Β Β Β Β Β Β Β Β Β β Pagina informazioni
βββ privacy-policy.php Β Β Β Β β Privacy Policy
βββ termini-servizio.php Β Β Β β Termini di Servizio
βββ cookie-policy.php Β Β Β Β Β β Cookie Policy
β
βββ admin/
β Β βββ index.php Β Β Β Β Β Β β Pannello admin
β Β βββ login.php Β Β Β Β Β Β Β β Login admin
β
βββ config/
β Β βββ config.php Β Β Β Β Β Β β Configurazione sistema
β
βββ includes/
β Β βββ header.php Β Β Β Β Β Β β Header comune
β Β βββ footer.php Β Β Β Β Β Β β Footer comune
β Β βββ categories.php Β Β Β Β β Gestione categorie
β Β βββ recent_downloads.php Β β Download recenti
β
βββ assets/
β Β βββ css/
β Β Β Β βββ style.css Β Β Β Β Β β Stili CSS
β
βββ data/
β Β βββ files.json Β Β Β Β Β Β β Database JSON
β
βββ uploads/ Β Β Β Β Β Β Β Β Β β File caricati
Β Β βββ Cartella1/
Β Β βββ Cartella2/
Β Β βββ ...
```
---
## π― FunzionalitΓ Principali
### **1. Gestione File**
- β Upload file tramite pannello admin
- β Download file pubblici
- β Organizzazione in cartelle
- β Rinomina ed elimina file
### **2. Statistiche**
- β Contatore download per ogni file
- β Visualizzazione file totali
- β Visualizzazione cartelle totali
### **3. Ricerca**
- β Ricerca file per nome
- β Filtro in tempo reale
- β Ricerca in tutte le cartelle
### **4. Navigazione**
- β Breadcrumb per orientamento
- β Navigazione gerarchica
- β Icone per tipo di file
### **5. Sicurezza**
- β Login admin protetto
- β Session management
- β Validazione percorsi file
---
## π Note Importanti
### **Sistema Basato su JSON**
NexusGrab **NON usa MySQL**. Tutti i dati sono salvati in `data/files.json`:
- Lista file caricati
- Categorie
- Contatori download
- Date di upload
**Vantaggi:**
- β Installazione semplice (no database)
- β Backup facile (copia un file)
- β Portabile
**Svantaggi:**
- β οΈ Non adatto per milioni di file
- β οΈ Performance con migliaia di file
### **Limitazioni**
- Massimo dimensione file: dipende da `php.ini` (default 2MB)
- Numero file consigliato: fino a ~1000 file per buone performance
- Non supporta upload multipli simultanei
---
## π Supporto
### **File di Aiuto nel Progetto:**
- `README.md` - Documentazione base
- `REPORT_ERRORI_E_FILE_NECESSARI.md` - Lista file essenziali
- `analisi_completa_nexusgrab.md` - Analisi tecnica dettagliata
### **Controlli Pre-Installazione:**
Prima di mettere online, verifica:
- [ ] Password admin cambiata
- [ ] File di test/debug eliminati
- [ ] Permessi cartelle corretti
- [ ] File JSON creato e scrivibile
- [ ] HTTPS configurato (raccomandato)
- [ ] Backup configurato
---
## π Congratulazioni!
Ora hai installato e configurato NexusGrab!
**Prossimi Passi:**
1. Carica i tuoi primi file tramite il pannello admin
2. Organizza i file in cartelle
3. Condividi i link con gli utenti
4. Monitora le statistiche di download
**Buon utilizzo! π**