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! πŸš€**


Dovnload