# ~~ Skynet Skin ~ Roundcube Webmail ~~

> Thème de connexion sci-fi pour Roundcube, inspiré du réseau de défense Skynet (Terminator).  
> Fond animé, particules, data streams, palette bleu nuit / bleu science-fiction.

Aidé par Claude AI

![Version](https://img.shields.io/badge/Roundcube-1.7.x-blue)
![License](https://img.shields.io/badge/license-MIT-green)
![Skin base](https://img.shields.io/badge/base-elastic-informational)

---

## Aperçu

- Page de connexion full-screen avec animations canvas (particules + data streams)
- Indicateur de niveau de menace, ticker défilant
- Logo Skynet avec effet de lueur bleue pulsante
- Détection et affichage des erreurs d'authentification Roundcube
- Responsive mobile (viewport adaptatif, anti-zoom iOS)

---

## Prérequis

- Testé avec Roundcube **1.6.x** **1.7.x**
- Un autre skin **(ex: elastic)** présent dans `/var/www/html/skins/elastic/` (utilisé comme base)

---

## Démonstration vidéo

<p align="center">
  <video
    src="assets/preview.webm"
    autoplay
    muted
    loop
    playsinline
    width="500"
    height="400"
  ></video>
</p>

---

## Installation

### 1. Activer le skin dans la configuration Roundcube

Dans votre fichier `config.inc.php` :

```php
$config['skin'] = 'skynet';
```

---

### 2. Récuperer le skin

#### 2.1 Depuis un container roundcubemail

```bash

docker run --name tmp-roundcube -d roundcube/roundcubemail:latest && \
mkdir -p skins && \
docker cp tmp-roundcube:/var/www/html/skins/elastic skins && \

docker exec tmp-roundcube \
    find /var/www/html/plugins -type d -path "*/skins/elastic" |

while read -r skin_path; do

    relative_path="${skin_path#/var/www/html}"
    target_dir="$(dirname "./$relative_path")"

    mkdir -p "$target_dir" && \

    docker cp \
        "tmp-roundcube:$skin_path" \
        "$target_dir/"
done

docker rm -f tmp-roundcube

```

ou

#### 2.1 Directement depuis les sources de roundcubemail (exemple pour va version avec la version 1.7.0)

```bash

curl --location https://github.com/roundcube/roundcubemail/releases/download/1.7.0/roundcubemail-1.7.0-complete.tar.gz \
 --output roundcubemail.tar.gz && \
tar -zxvf roundcubemail.tar.gz --wildcards --strip-components=1 -C . \
 roundcubemail-1.7.0/skins/elastic roundcubemail-1.7.0/plugins/*/skins/elastic
rm roundcubemail.tar.gz

```

### 3. Puis télécharger la release du thême depuis le dépôt

```bash

curl https://git.celjim.fr/public/roundcube-theme-skynet/releases/download/v1/roundcube-theme-skynet-v1.zip \
 --output theme-skynet.zip && \
7z x theme-skynet.zip && \
mv -f login.html skins/elastic/templates && \
mv -f script-skynet.min.js skins/elastic/ && \
mv -f styles-skynet.min.css skins/elastic/styles && \
mv  skins/elastic  skins/skynet && \
find "./plugins" -type d -path "*/skins/elastic" | while read -r elastic_dir; do
    skynet_dir="$(dirname "$elastic_dir")/skynet"
    mkdir -p "$skynet_dir"
    mv "$elastic_dir" "$skynet_dir"
done
rm theme-skynet.zip

```

### 4. roundcubemail via Docker

Montez le skin en volume dans votre `docker-compose.yml` :

```yaml
services:
  roundcube:
    image: roundcube/roundcubemail:latest
    volumes:
      - ./theme-skynet/skins/skynet:/var/www/html/skins/skynet:ro
      - ./theme-skynet/plugins/managesieve/skins/skynet:/var/www/html/plugins/managesieve/skins/skynet:ro

    environment:
      - ROUNDCUBEMAIL_SKIN=skynet
```

---

## Licence

Ce projet est distribué sous licence **MIT**. Voir le fichier [LICENSE](./LICENSE).
