- Logo/favicon ridisegnati come theta maiuscola: cerchio (anello) con 'H' centrata, clearance verificata (non tocca l'anello); ring ispessito per la favicon; centratura ottica verificata. - Rimosso il badge 'Self-hosted Git' dal hero della homepage (era esteticamente di troppo) - CSS e markup. - Aggiornati generate_theta.py, README, home.tmpl; caricati sul VPS in staging (md5 locali == remoti); tarball ricostruito. - Salvataggio iniziale dell'intero admin pack in git.
134 lines
4.6 KiB
Bash
Executable File
134 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Gitea theme manager — installa o ripristina homepage + favicon custom.
|
|
# DA ESEGUIRE COME ROOT SUL VPS (o con sudo).
|
|
#
|
|
# Uso:
|
|
# bash gitea_theme.sh install # applica la homepage moderna + favicon
|
|
# bash gitea_theme.sh rollback # torna allo stato iniziale
|
|
# bash gitea_theme.sh # come "install"
|
|
set -euo pipefail
|
|
|
|
CUSTOM_DIR="${CUSTOM_DIR:-/var/lib/gitea/custom}"
|
|
SRC_DIR="$(cd "$(dirname "$0")" && pwd)/custom"
|
|
STATE_FILE="$CUSTOM_DIR/.gitea-theme-state"
|
|
|
|
MODE="${1:-install}"
|
|
case "$MODE" in
|
|
install|rollback) : ;;
|
|
*) echo "Uso: $0 [install|rollback]"; exit 2 ;;
|
|
esac
|
|
|
|
if [ "$(id -u)" != "0" ]; then
|
|
echo "ERRORE: devi eseguire questo script come root (o sudo)."
|
|
exit 1
|
|
fi
|
|
|
|
# ---------------------------------------------------------------- verifica
|
|
echo "==> Modalità: $MODE"
|
|
echo "==> Custom dir: $CUSTOM_DIR"
|
|
|
|
# ---------------------------------------------------------------- install
|
|
install_theme() {
|
|
STAMP="$(date +%Y%m%d-%H%M%S)"
|
|
BACKUP_DIR="${CUSTOM_DIR}/.backup-${STAMP}"
|
|
|
|
if [ ! -d "$SRC_DIR" ]; then
|
|
echo "ERRORE: cartella sorgente '$SRC_DIR' non trovata (script in cartella sbagliata?)."
|
|
exit 1
|
|
fi
|
|
|
|
# 1) Backup delle eventuali personalizzazioni esistenti
|
|
HAD_PREV=no
|
|
if [ -e "$CUSTOM_DIR/templates/home.tmpl" ] || [ -e "$CUSTOM_DIR/public/assets/img" ]; then
|
|
HAD_PREV=yes
|
|
mkdir -p "$BACKUP_DIR"
|
|
for p in templates/home.tmpl public/assets/img; do
|
|
if [ -e "$CUSTOM_DIR/$p" ]; then
|
|
mkdir -p "$BACKUP_DIR/$(dirname "$p")"
|
|
cp -a "$CUSTOM_DIR/$p" "$BACKUP_DIR/$p"
|
|
echo "==> Backup salvato: $BACKUP_DIR/$p"
|
|
fi
|
|
done
|
|
else
|
|
echo "==> Nessuna personalizzazione precedente, niente da salvare."
|
|
fi
|
|
|
|
# 2) Copia dei nuovi file
|
|
mkdir -p "$CUSTOM_DIR/templates" "$CUSTOM_DIR/public/assets/img"
|
|
cp "$SRC_DIR/templates/home.tmpl" "$CUSTOM_DIR/templates/home.tmpl"
|
|
cp "$SRC_DIR/public/assets/img/"* "$CUSTOM_DIR/public/assets/img/"
|
|
echo "==> File copiati:"
|
|
ls -l "$CUSTOM_DIR/templates/home.tmpl"
|
|
ls -l "$CUSTOM_DIR/public/assets/img/"
|
|
|
|
# 3) Permessi corretti (il processo gitea gira come utente gitea)
|
|
chown -R gitea:gitea "$CUSTOM_DIR"
|
|
echo "==> Permessi impostati (gitea:gitea)."
|
|
|
|
# 4) Stato per il rollback
|
|
{
|
|
echo "installed_at=$STAMP"
|
|
echo "backup_dir=$BACKUP_DIR"
|
|
echo "had_custom=$HAD_PREV"
|
|
} > "$STATE_FILE"
|
|
echo "==> Stato rollback salvato in $STATE_FILE"
|
|
}
|
|
|
|
# ---------------------------------------------------------------- rollback
|
|
rollback_theme() {
|
|
# 1) Leggi lo stato di installazione (se esiste)
|
|
BACKUP_DIR=""
|
|
HAD_PREV=no
|
|
if [ -f "$STATE_FILE" ]; then
|
|
source "$STATE_FILE" 2>/dev/null || true
|
|
echo "==> Stato trovato: installato $installed_at, backup=${backup_dir:-nessuno}, precedente=$had_custom"
|
|
fi
|
|
|
|
# 2) Rimuovi i file del tema
|
|
rm -f "$CUSTOM_DIR/templates/home.tmpl"
|
|
rm -rf "$CUSTOM_DIR/public/assets/img"
|
|
echo "==> File del tema rimossi (home.tmpl e assets/img)."
|
|
|
|
# 3) Ripristina l'eventuale personalizzazione precedente dal backup
|
|
if [ "$HAD_PREV" = "yes" ] && [ -n "${BACKUP_DIR:-}" ] && [ -d "$BACKUP_DIR" ]; then
|
|
echo "==> Ripristino personalizzazione precedente da $BACKUP_DIR"
|
|
if [ -f "$BACKUP_DIR/templates/home.tmpl" ]; then
|
|
mkdir -p "$CUSTOM_DIR/templates"
|
|
cp -a "$BACKUP_DIR/templates/home.tmpl" "$CUSTOM_DIR/templates/home.tmpl"
|
|
fi
|
|
if [ -d "$BACKUP_DIR/public/assets/img" ]; then
|
|
mkdir -p "$CUSTOM_DIR/public/assets/img"
|
|
cp -a "$BACKUP_DIR/public/assets/img/." "$CUSTOM_DIR/public/assets/img/"
|
|
fi
|
|
fi
|
|
|
|
# 4) Rimuovi lo stato e le cartelle eventualmente vuote
|
|
rm -f "$STATE_FILE"
|
|
rmdir "$CUSTOM_DIR/public/assets/img" "$CUSTOM_DIR/public/assets" "$CUSTOM_DIR/public" 2>/dev/null || true
|
|
rmdir "$CUSTOM_DIR/templates" 2>/dev/null || true
|
|
echo "==> Stato rollback pulito."
|
|
|
|
# 5) Permessi
|
|
chown -R gitea:gitea "$CUSTOM_DIR" 2>/dev/null || true
|
|
}
|
|
|
|
# ---------------------------------------------------------------- esegui
|
|
if [ "$MODE" = "install" ]; then
|
|
install_theme
|
|
else
|
|
rollback_theme
|
|
fi
|
|
|
|
# ---------------------------------------------------------------- restart+verify
|
|
systemctl restart gitea
|
|
sleep 6
|
|
echo "==> Stato servizio: $(systemctl is-active gitea)"
|
|
if [ "$MODE" = "install" ]; then
|
|
echo "==> Verifica asset (favicon/logo):"
|
|
curl -sk -o /dev/null -w " /assets/img/favicon.svg -> %{http_code}\n" https://127.0.0.1/assets/img/favicon.svg 2>/dev/null || true
|
|
curl -sk -o /dev/null -w " /assets/img/logo.svg -> %{http_code}\n" https://127.0.0.1/assets/img/logo.svg 2>/dev/null || true
|
|
fi
|
|
|
|
echo ""
|
|
echo "FATTO ($MODE). Ricarica https://git.zomas.net (Ctrl+Shift+R per bypassare la cache)."
|