Fichiers
roundcube-theme-skynet/README.md
T
jimmyGALLAND 9ae5a92b07
Release / release (push) Successful in 1m34s
Update README.md
2026-06-02 20:06:59 +00:00

165 lignes
4.2 KiB
Markdown

# ~~ 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.0** jusqu'à **1.7.0**
- 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 la version 1.7.0)
```bash
RC_VERSION=1.7.1
curl --location https://github.com/roundcube/roundcubemail/releases/download/${RC_VERSION}/roundcubemail-${RC_VERSION}-complete.tar.gz \
--output roundcubemail.tar.gz && \
tar -zxvf roundcubemail.tar.gz --wildcards --strip-components=1 -C . \
roundcubemail-${RC_VERSION}/skins/elastic roundcubemail-${RC_VERSION}/plugins/*/skins/elastic
rm roundcubemail.tar.gz
```
### 3. Puis télécharger la dernière release du thême depuis le dépôt
```bash
# Compare semver: returns 0 if $1 >= $2
version_gte() {
[ "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" = "$2" ]
}
# Récupère l'URL du dernier asset zip via l'API Gitea
LATEST_ZIP=$(curl -s "https://git.celjim.fr/api/v1/repos/public/roundcube-theme-skynet/releases/latest" \
| grep -o '"browser_download_url":"[^"]*\.zip"' \
| head -n1 \
| cut -d'"' -f4)
curl "${LATEST_ZIP}" \
--output theme-skynet.zip && \
7z x theme-skynet.zip && \
if version_gte "$RC_VERSION" "1.7.1"; then
sed -e 's|\.\/skins\/skynet\/styles\/styles-skynet\.min\.css|static.php/skins/skynet/styles/styles-skynet.min.css|g' \
-e 's|\.\/skins\/skynet\/script-skynet\.min\.js|static.php/skins/skynet/script-skynet.min.js|g' \
login.html > skins/elastic/templates/login.html && \
rm -f login.html
echo fait
else
mv -f login.html skins/elastic/templates/login.html
echo pas fait
fi && \
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).