Cette révision appartient à :
2026-05-17 11:17:35 +02:00
Parent 1d1c11fde8
révision ec92471d2b
5 fichiers modifiés avec 210 ajouts et 139 suppressions
+76
Voir le fichier
@@ -0,0 +1,76 @@
# .github/workflows/release.yml
name: Lightweight Release
on:
push:
branches:
- main
workflow_dispatch:
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build files
run: |
mkdir -p build
cp src/login.html build/
cp meta.json README.md build/
cat src/styles.css \
| tr -d '\n\t' \
| sed 's/ */ /g' \
| sed 's/ *{ */{/g' \
| sed 's/ *} */}/g' \
| sed 's/ *; */;/g' \
| sed 's/ *: */:/g' \
| sed 's/ *, */,/g' \
> build/styles.min.css
cat src/script.js \
| tr -d '\n\t' \
| sed 's/ */ /g' \
> build/script.min.js
- name: Create archive
run: |
cd build
zip -r ../release.zip .
- name: Generate next tag
id: tag
run: |
git fetch --tags
LAST_TAG=$(git tag -l "v*" | sort -V | tail -n1)
if [ -z "$LAST_TAG" ]; then
NEXT=1
else
NUM=${LAST_TAG#v}
NEXT=$((NUM + 1))
fi
NEW_TAG="v$NEXT"
echo "tag=$NEW_TAG" >> $GITHUB_OUTPUT
- name: Create and push tag
run: |
git config user.name "gitea-actions"
git config user.email "actions@local"
git tag ${{ steps.tag.outputs.tag }}
git push origin ${{ steps.tag.outputs.tag }}
- name: Create Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.tag.outputs.tag }}
files: release.zip
+134 -139
Voir le fichier
@@ -1,139 +1,134 @@
# ?? Skynet Skin ? Roundcube Webmail # ~~ Skynet Skin ~ Roundcube Webmail ~~
> Thème de connexion sci-fi pour Roundcube, inspiré du réseau de défense Skynet (Terminator). > 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. > Fond animé, particules, data streams, palette bleu nuit / bleu science-fiction.
Aidé par Claude AI Aidé par Claude AI
![Version](https://img.shields.io/badge/Roundcube-1.6.x-blue) ![Version](https://img.shields.io/badge/Roundcube-1.6.x-blue)
![License](https://img.shields.io/badge/license-MIT-green) ![License](https://img.shields.io/badge/license-MIT-green)
![Skin base](https://img.shields.io/badge/base-elastic-informational) ![Skin base](https://img.shields.io/badge/base-elastic-informational)
--- ---
## Aperçu ## Aperçu
- Page de connexion full-screen avec animations canvas (particules + data streams) - Page de connexion full-screen avec animations canvas (particules + data streams)
- Indicateur de niveau de menace, ticker défilant - Indicateur de niveau de menace, ticker défilant
- Logo Skynet avec effet de lueur bleue pulsante - Logo Skynet avec effet de lueur bleue pulsante
- Détection et affichage des erreurs d'authentification Roundcube - Détection et affichage des erreurs d'authentification Roundcube
- Responsive mobile (viewport adaptatif, anti-zoom iOS) - Responsive mobile (viewport adaptatif, anti-zoom iOS)
--- ---
## Prérequis ## Prérequis
- Testé avec Roundcube **1.6.x** - Testé avec Roundcube **1.6.x**
- Skin **elastic** présent dans `/var/www/html/skins/elastic/` (utilisé comme base) - Skin **elastic** présent dans `/var/www/html/skins/elastic/` (utilisé comme base)
- Accès en écriture au répertoire `/var/www/html/skins/` - Accès en écriture au répertoire `/var/www/html/skins/`
--- ---
## Démonstration vidéo ## Démonstration vidéo
<p align="center"> <p align="center">
<video src="assets/preview.webm" <video autoplay muted loop playsinline width="500" height="400">
width="500" <source src="assets/preview.webm" type="video/webm">
height="400" </video>
controls </p>
autoplay
loop ---
muted>
</video> ## Installation
</p>
### 1. Copier le skin elastic comme base
---
Le skin Skynet ne remplace que la page de login. Toutes les autres vues (messagerie, contacts, paramètres) héritent du skin **elastic**.
## Installation
```bash
### 1. Copier le skin elastic comme base cp -r /var/www/html/skins/elastic/. /var/www/html/skins/skynet/
```
Le skin Skynet ne remplace que la page de login. Toutes les autres vues (messagerie, contacts, paramètres) héritent du skin **elastic**.
### 2. Déposer le template de login
```bash
cp -r /var/www/html/skins/elastic/. /var/www/html/skins/skynet/ ```bash
``` cp login.html /var/www/html/skins/skynet/templates/login.html
```
### 2. Déposer le template de login
### 3. Activer le skin dans la configuration Roundcube
```bash
cp login.html /var/www/html/skins/skynet/templates/login.html Dans votre fichier `config.inc.php` :
```
```php
### 3. Activer le skin dans la configuration Roundcube $config['skin'] = 'skynet';
```
Dans votre fichier `config.inc.php` :
### 4. Vérifier les permissions
```php
$config['skin'] = 'skynet'; ```bash
``` chown -R www-data:www-data /var/www/html/skins/skynet/
chmod -R 755 /var/www/html/skins/skynet/
### 4. Vérifier les permissions ```
```bash ---
chown -R www-data:www-data /var/www/html/skins/skynet/
chmod -R 755 /var/www/html/skins/skynet/ ## Installation via Docker
```
Si Roundcube tourne dans un container Docker, montez le skin en volume dans votre `docker-compose.yml` :
---
```yaml
## Installation via Docker services:
roundcube:
Si Roundcube tourne dans un container Docker, montez le skin en volume dans votre `docker-compose.yml` : image: roundcube/roundcubemail:latest
volumes:
```yaml - ./skins/skynet:/var/www/html/skins/skynet
services: environment:
roundcube: - ROUNDCUBEMAIL_SKIN=skynet
image: roundcube/roundcubemail:latest ```
volumes:
- ./skins/skynet:/var/www/html/skins/skynet Puis copiez le skin elastic depuis le container comme base :
environment:
- ROUNDCUBEMAIL_SKIN=skynet ```bash
``` # Extraire le skin elastic du container
docker cp roundcube:/var/www/html/skins/elastic ./skins/skynet
Puis copiez le skin elastic depuis le container comme base :
cp login.html ./skins/skynet/templates/login.html
```bash cp logo-skynet.png ./skins/skynet/images/logo-skynet.png
# Extraire le skin elastic du container
docker cp roundcube:/var/www/html/skins/elastic ./skins/skynet # Inject le skin skynet dans le container
docker cp ./skins/skynet roundcube:/var/www/html/skins
cp login.html ./skins/skynet/templates/login.html ```
cp logo-skynet.png ./skins/skynet/images/logo-skynet.png
---
# Inject le skin skynet dans le container
docker cp ./skins/skynet roundcube:/var/www/html/skins ## Compatibilité avec les plugins
```
Certains plugins Roundcube incluent leur propre partie skin (templates, styles).
--- Lors de la copie d'elastic, ces fichiers sont automatiquement inclus, mais vérifiez les répertoires suivants après installation :
## Compatibilité avec les plugins ### Plugins courants et leurs fichiers de skin
Certains plugins Roundcube incluent leur propre partie skin (templates, styles). | Plugin | Répertoire skin à vérifier |
Lors de la copie d'elastic, ces fichiers sont automatiquement inclus, mais vérifiez les répertoires suivants après installation : | ------------------------- | --------------------------- |
| `managesieve` | `skins/skynet/managesieve/` |
### Plugins courants et leurs fichiers de skin | `enigma` | `skins/skynet/enigma/` |
| `calendar` _(Kolab/Bimi)_ | `skins/skynet/calendar/` |
| Plugin | Répertoire skin à vérifier |
| ------------------------- | --------------------------- | Pour vérifier que pour chaque plugin actif il y a un répertoire skins/
| `managesieve` | `skins/skynet/managesieve/` |
| `enigma` | `skins/skynet/enigma/` | ```bash
| `calendar` _(Kolab/Bimi)_ | `skins/skynet/calendar/` | bash# Pour chaque plugin actif qui a un répertoire skins/
for plugin in managesieve enigma zipdownload archive; do
Pour vérifier que pour chaque plugin actif il y a un répertoire skins/ if [ -d "/var/www/html/plugins/$plugin/skins/elastic" ]; then
cp -r /var/www/html/plugins/$plugin/skins/elastic \
```bash /var/www/html/plugins/$plugin/skins/skynet
bash# Pour chaque plugin actif qui a un répertoire skins/ echo "? $plugin"
for plugin in managesieve enigma zipdownload archive; do fi
if [ -d "/var/www/html/plugins/$plugin/skins/elastic" ]; then done
cp -r /var/www/html/plugins/$plugin/skins/elastic \ ```
/var/www/html/plugins/$plugin/skins/skynet
echo "? $plugin" ---
fi
done ## Licence
```
Ce projet est distribué sous licence **MIT**. Voir le fichier [LICENSE](./LICENSE).
---
## Licence
Ce projet est distribué sous licence **MIT**. Voir le fichier [LICENSE](./LICENSE).
Voir le fichier
Voir le fichier
Voir le fichier