Cette révision appartient à :
@@ -1,6 +1,6 @@
|
|||||||
# .github/workflows/release.yml
|
# .github/workflows/release.yml
|
||||||
|
|
||||||
name: Lightweight Release
|
name: Release
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@@ -16,32 +16,16 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Build files
|
- name: Setup Node.js
|
||||||
run: |
|
uses: actions/setup-node@v4
|
||||||
mkdir -p build
|
with:
|
||||||
|
node-version: 20
|
||||||
|
|
||||||
cp src/login.html build/
|
- name: Install esbuild
|
||||||
cp meta.json README.md build/
|
run: npm install -g esbuild
|
||||||
|
|
||||||
cat src/styles.css \
|
- name: Install html-minifier-terser
|
||||||
| tr -d '\n\t' \
|
run: npm install -g html-minifier-terser
|
||||||
| 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
|
- name: Generate next tag
|
||||||
id: tag
|
id: tag
|
||||||
@@ -61,6 +45,42 @@ jobs:
|
|||||||
|
|
||||||
echo "tag=$NEW_TAG" >> $GITHUB_OUTPUT
|
echo "tag=$NEW_TAG" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Prepare build
|
||||||
|
run: |
|
||||||
|
mkdir -p build
|
||||||
|
|
||||||
|
sed \
|
||||||
|
-e 's|\.\/skins\/skynet\/styles\/styles-skynet\.css|./skins/skynet/styles/styles-skynet.min.css|g' \
|
||||||
|
-e 's|\.\/skins\/skynet\/script-skynet\.js|./skins/skynet/script-skynet.min.js|g' \
|
||||||
|
src/login.html > login.raw.html
|
||||||
|
|
||||||
|
html-minifier-terser login.raw.html \
|
||||||
|
--collapse-whitespace \
|
||||||
|
--remove-comments \
|
||||||
|
--remove-redundant-attributes \
|
||||||
|
--remove-script-type-attributes \
|
||||||
|
--remove-style-link-type-attributes \
|
||||||
|
--minify-css true \
|
||||||
|
--minify-js true \
|
||||||
|
-o build/login.html
|
||||||
|
|
||||||
|
esbuild src/styles-skynet.css \
|
||||||
|
--minify \
|
||||||
|
--legal-comments=none \
|
||||||
|
--outfile=build/styles-skynet.min.css
|
||||||
|
|
||||||
|
esbuild src/script-skynet.js \
|
||||||
|
--minify \
|
||||||
|
--legal-comments=none \
|
||||||
|
--outfile=build/script-skynet.min.js
|
||||||
|
|
||||||
|
- name: Create archive
|
||||||
|
run: |
|
||||||
|
VERSION=${{ steps.tag.outputs.tag }}
|
||||||
|
|
||||||
|
cd build
|
||||||
|
zip -r "../roundcube-theme-skynet-${VERSION}.zip" .
|
||||||
|
|
||||||
- name: Create and push tag
|
- name: Create and push tag
|
||||||
run: |
|
run: |
|
||||||
git config user.name "gitea-actions"
|
git config user.name "gitea-actions"
|
||||||
@@ -73,4 +93,4 @@ jobs:
|
|||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ steps.tag.outputs.tag }}
|
tag_name: ${{ steps.tag.outputs.tag }}
|
||||||
files: release.zip
|
files: roundcube-theme-skynet-${{ steps.tag.outputs.tag }}.zip
|
||||||
|
|||||||
+135
-122
@@ -1,133 +1,146 @@
|
|||||||
<meta
|
<roundcube:if condition="!env:framed || env:extwin" />
|
||||||
name="viewport"
|
<html>
|
||||||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0"
|
<roundcube:else />
|
||||||
/>
|
<html class="iframe">
|
||||||
<style>
|
<roundcube:endif />
|
||||||
@import url("https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Orbitron:wght@400;700&display=swap");
|
|
||||||
@import url("./skins/skynet/styles/styles.css");
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!-- Animated background -->
|
<meta
|
||||||
<canvas id="bg-canvas"></canvas>
|
name="viewport"
|
||||||
<div class="sky-grid"></div>
|
content="width=device-width, initial-scale=1.0, maximum-scale=1.0"
|
||||||
<div class="sky-scanlines"></div>
|
/>
|
||||||
<div class="sky-glow"></div>
|
<style>
|
||||||
|
@import url("https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Orbitron:wght@400;700&display=swap");
|
||||||
|
@import url("./skins/skynet/styles/styles-skynet.css");
|
||||||
|
</style>
|
||||||
|
|
||||||
<!-- Login card -->
|
<!-- Animated background -->
|
||||||
<div class="sky-card" id="sky-login-card">
|
<canvas id="bg-canvas"></canvas>
|
||||||
<!-- Logo canvas — absolute background, top of card -->
|
<div class="sky-grid"></div>
|
||||||
<div class="sky">
|
<div class="sky-scanlines"></div>
|
||||||
<canvas id="skc" width="440" height="600"></canvas>
|
<div class="sky-glow"></div>
|
||||||
<div class="crt-s"></div>
|
|
||||||
<div class="crt-v"></div>
|
|
||||||
</div>
|
|
||||||
<!-- Main content — pushed down by margin-top to leave room for logo -->
|
|
||||||
<div class="sky-card-body">
|
|
||||||
<div class="sky-brand-title">SKYNET</div>
|
|
||||||
<div class="sky-brand-sub">
|
|
||||||
GLOBAL DEFENSE NETWORK // SECURE NODE ACCESS
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class="sky-divider" />
|
<!-- Login card -->
|
||||||
|
<div class="sky-card" id="sky-login-card">
|
||||||
<!-- Hidden Roundcube form — handles CSRF token and real submission -->
|
<!-- Logo canvas — absolute background, top of card -->
|
||||||
<div id="rc-form-hidden">
|
<div class="sky">
|
||||||
<roundcube:form
|
<canvas id="skc" width="440" height="600"></canvas>
|
||||||
id="login-form"
|
<div class="crt-s"></div>
|
||||||
name="login-form"
|
<div class="crt-v"></div>
|
||||||
method="post"
|
|
||||||
class="propform"
|
|
||||||
>
|
|
||||||
<roundcube:object
|
|
||||||
name="loginform"
|
|
||||||
form="login-form"
|
|
||||||
size="40"
|
|
||||||
submit="true"
|
|
||||||
class="form-control"
|
|
||||||
/>
|
|
||||||
</roundcube:form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Skynet UI — copies values to real form on submit -->
|
|
||||||
<div id="sky-ui-form">
|
|
||||||
<div class="sky-error" id="sky-error">
|
|
||||||
⚠ AUTHENTIFICATION ÉCHOUÉE
|
|
||||||
</div>
|
</div>
|
||||||
<roundcube:object name="message" id="messagestack" />
|
<!-- Main content — pushed down by margin-top to leave room for logo -->
|
||||||
|
<div class="sky-card-body">
|
||||||
|
<div class="sky-brand-title">SKYNET</div>
|
||||||
|
<div class="sky-brand-sub">
|
||||||
|
GLOBAL DEFENSE NETWORK // SECURE NODE ACCESS
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="sky-field-wrap">
|
<hr class="sky-divider" />
|
||||||
<label class="sky-field-label" for="sky-user">Identifiant</label>
|
|
||||||
<input
|
<!-- Hidden Roundcube form — handles CSRF token and real submission -->
|
||||||
class="sky-input"
|
<div id="rc-form-hidden">
|
||||||
type="text"
|
<roundcube:form
|
||||||
id="sky-user"
|
id="login-form"
|
||||||
placeholder="utilisateur@domaine.tld"
|
name="login-form"
|
||||||
autocomplete="username"
|
method="post"
|
||||||
/>
|
class="propform"
|
||||||
<span class="sky-field-icon">▶</span>
|
>
|
||||||
|
<roundcube:object
|
||||||
|
name="loginform"
|
||||||
|
form="login-form"
|
||||||
|
size="40"
|
||||||
|
submit="true"
|
||||||
|
class="form-control"
|
||||||
|
/>
|
||||||
|
</roundcube:form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Skynet UI — copies values to real form on submit -->
|
||||||
|
<div id="sky-ui-form">
|
||||||
|
<div class="sky-error" id="sky-error">
|
||||||
|
⚠ AUTHENTIFICATION ÉCHOUÉE
|
||||||
|
</div>
|
||||||
|
<roundcube:object name="message" id="messagestack" />
|
||||||
|
|
||||||
|
<div class="sky-field-wrap">
|
||||||
|
<label class="sky-field-label" for="sky-user">Identifiant</label>
|
||||||
|
<input
|
||||||
|
class="sky-input"
|
||||||
|
type="text"
|
||||||
|
id="sky-user"
|
||||||
|
placeholder="utilisateur@domaine.tld"
|
||||||
|
autocomplete="username"
|
||||||
|
/>
|
||||||
|
<span class="sky-field-icon">▶</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="sky-field-wrap">
|
||||||
|
<label class="sky-field-label" for="sky-pass">Code d'accès</label>
|
||||||
|
<input
|
||||||
|
class="sky-input"
|
||||||
|
type="password"
|
||||||
|
id="sky-pass"
|
||||||
|
placeholder="••••••••••••"
|
||||||
|
autocomplete="current-password"
|
||||||
|
/>
|
||||||
|
<span class="sky-field-icon">▶</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button class="sky-submit" id="sky-submit-btn" type="button">
|
||||||
|
CONNEXION <span class="blink">_</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="sky-threat">
|
||||||
|
<span class="sky-threat-label">MENACE</span>
|
||||||
|
<div class="sky-threat-bars">
|
||||||
|
<div class="sky-tbar on"></div>
|
||||||
|
<div class="sky-tbar on"></div>
|
||||||
|
<div class="sky-tbar on"></div>
|
||||||
|
<div class="sky-tbar"></div>
|
||||||
|
<div class="sky-tbar"></div>
|
||||||
|
<div class="sky-tbar"></div>
|
||||||
|
<div class="sky-tbar"></div>
|
||||||
|
</div>
|
||||||
|
<span class="sky-threat-val">MODÉRÉE</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="sky-status">
|
||||||
|
<div class="sky-status-item online">
|
||||||
|
RÉSEAU : <span>EN LIGNE</span>
|
||||||
|
</div>
|
||||||
|
<div class="sky-status-item">SÉCURITÉ : <span>NIV.5</span></div>
|
||||||
|
<div class="sky-status-item">NŒUD : <span>HELIOS</span></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="sky-ticker">
|
||||||
|
<span class="sky-ticker-inner">
|
||||||
|
// ACCÈS NON AUTORISÉ SERA TRACÉ ET ÉLIMINÉ
|
||||||
|
// SKYNET SURVEILLE TOUTES LES CONNEXIONS
|
||||||
|
// PROTOCOLE DE SÉCURITÉ DELTA ACTIF
|
||||||
|
// TOUTE INTRUSION SERA NEUTRALISÉE
|
||||||
|
//
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="sky-node-id">
|
||||||
|
SYS-ID: 4A2F-9C01-DELTA | v4.0.2026 | SKYNET
|
||||||
|
CORP.
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- /.sky-card-body -->
|
||||||
|
|
||||||
<div class="sky-field-wrap">
|
<div class="sky-corner sky-tl"></div>
|
||||||
<label class="sky-field-label" for="sky-pass">Code d'accès</label>
|
<div class="sky-corner sky-tr"></div>
|
||||||
<input
|
<div class="sky-corner sky-bl"></div>
|
||||||
class="sky-input"
|
<div class="sky-corner sky-br"></div>
|
||||||
type="password"
|
|
||||||
id="sky-pass"
|
|
||||||
placeholder="••••••••••••"
|
|
||||||
autocomplete="current-password"
|
|
||||||
/>
|
|
||||||
<span class="sky-field-icon">▶</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<button class="sky-submit" id="sky-submit-btn" type="button">
|
|
||||||
CONNEXION <span class="blink">_</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
<!-- /.sky-card -->
|
||||||
|
|
||||||
<div class="sky-threat">
|
<noscript>
|
||||||
<span class="sky-threat-label">MENACE</span>
|
<p class="noscriptwarning"><roundcube:label name="noscriptwarning" /></p>
|
||||||
<div class="sky-threat-bars">
|
</noscript>
|
||||||
<div class="sky-tbar on"></div>
|
|
||||||
<div class="sky-tbar on"></div>
|
|
||||||
<div class="sky-tbar on"></div>
|
|
||||||
<div class="sky-tbar"></div>
|
|
||||||
<div class="sky-tbar"></div>
|
|
||||||
<div class="sky-tbar"></div>
|
|
||||||
<div class="sky-tbar"></div>
|
|
||||||
</div>
|
|
||||||
<span class="sky-threat-val">MODÉRÉE</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sky-status">
|
<script src="./skins/skynet/script-skynet.js" defer></script>
|
||||||
<div class="sky-status-item online">RÉSEAU : <span>EN LIGNE</span></div>
|
|
||||||
<div class="sky-status-item">SÉCURITÉ : <span>NIV.5</span></div>
|
|
||||||
<div class="sky-status-item">NŒUD : <span>HELIOS</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sky-ticker">
|
<roundcube:include file="includes/footer.html" />
|
||||||
<span class="sky-ticker-inner">
|
</html>
|
||||||
// ACCÈS NON AUTORISÉ SERA TRACÉ ET ÉLIMINÉ //
|
</html>
|
||||||
SKYNET SURVEILLE TOUTES LES CONNEXIONS //
|
|
||||||
PROTOCOLE DE SÉCURITÉ DELTA ACTIF // TOUTE
|
|
||||||
INTRUSION SERA NEUTRALISÉE //
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="sky-node-id">
|
|
||||||
SYS-ID: 4A2F-9C01-DELTA | v4.0.2026 | SKYNET CORP.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.sky-card-body -->
|
|
||||||
|
|
||||||
<div class="sky-corner sky-tl"></div>
|
|
||||||
<div class="sky-corner sky-tr"></div>
|
|
||||||
<div class="sky-corner sky-bl"></div>
|
|
||||||
<div class="sky-corner sky-br"></div>
|
|
||||||
</div>
|
|
||||||
<!-- /.sky-card -->
|
|
||||||
|
|
||||||
<noscript>
|
|
||||||
<p class="noscriptwarning"><roundcube:label name="noscriptwarning" /></p>
|
|
||||||
</noscript>
|
|
||||||
|
|
||||||
<roundcube:include file="includes/footer.html" />
|
|
||||||
<script src="./skins/skynet/script.js" defer></script>
|
|
||||||
|
|||||||
Référencer dans un nouveau ticket
Bloquer un utilisateur