Specs stay at repo root (cross-VM). Move deploy and code into logical projects with README per domain, updated manifest.yaml, and symlinks at legacy paths for VM122 backward compatibility.
59 lines
3.1 KiB
Bash
Executable file
59 lines
3.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Cria servidor OpenPanel + plano + produto hosting no FOSSBilling (Spec 024)
|
|
set -euo pipefail
|
|
|
|
FOSS_URL="${FOSS_URL:-https://financeiro.ligbox.com.br}"
|
|
ADMIN_EMAIL="${FOSS_ADMIN_EMAIL:-admin@ligbox.com.br}"
|
|
ADMIN_PASS="${FOSS_ADMIN_PASS:-LbFossAdmin805353}"
|
|
COMPOSE_FILE="${COMPOSE_FILE:-/opt/vm123-finance-stack/docker-compose.yml}"
|
|
COOKIE_JAR="$(mktemp)"
|
|
trap 'rm -f "$COOKIE_JAR"' EXIT
|
|
|
|
echo "[1/4] Garantir manager Openpanel.php..."
|
|
docker compose -f "$COMPOSE_FILE" exec -T fossbilling bash -c '
|
|
test -f /var/www/html/library/Server/Manager/Openpanel.php || cp /var/www/html/library/Server/Manager/OpenPanel.php /var/www/html/library/Server/Manager/Openpanel.php
|
|
'
|
|
|
|
echo "[2/4] Login FOSS Admin..."
|
|
curl -sk -c "$COOKIE_JAR" -b "$COOKIE_JAR" -X POST "${FOSS_URL}/api/guest/staff/login" \
|
|
-d "email=${ADMIN_EMAIL}&password=${ADMIN_PASS}" | grep -q '"role":"admin"' || { echo "Login falhou"; exit 1; }
|
|
curl -sk -c "$COOKIE_JAR" -b "$COOKIE_JAR" "${FOSS_URL}/admin" >/dev/null
|
|
CSRF=$(awk '$6=="csrf_token" {print $7}' "$COOKIE_JAR" | tail -1)
|
|
|
|
echo "[3/4] Servidor + plano (skip se já existir)..."
|
|
SERVERS=$(curl -sk -b "$COOKIE_JAR" "${FOSS_URL}/api/admin/servicehosting/server_get_list?CSRFToken=${CSRF}")
|
|
if echo "$SERVERS" | grep -q '"total":0'; then
|
|
curl -sk -b "$COOKIE_JAR" -X POST "${FOSS_URL}/api/admin/servicehosting/server_create" \
|
|
-d "CSRFToken=${CSRF}&name=VM123+OpenPanel&ip=10.10.10.123&hostname=10.10.10.123&manager=openpanel&port=18087&secure=0&username=ligboxadmin&password=LbOpen805353&active=1&tls_verify=0" >/dev/null
|
|
echo " Servidor criado"
|
|
else
|
|
echo " Servidor já existe"
|
|
fi
|
|
|
|
PLANS=$(curl -sk -b "$COOKIE_JAR" "${FOSS_URL}/api/admin/servicehosting/hp_get_list?CSRFToken=${CSRF}")
|
|
if ! echo "$PLANS" | grep -q 'ligbox-site-cms'; then
|
|
curl -sk -b "$COOKIE_JAR" -X POST "${FOSS_URL}/api/admin/servicehosting/hp_create" \
|
|
-d "CSRFToken=${CSRF}&name=ligbox-site-cms" >/dev/null
|
|
echo " Plano criado"
|
|
else
|
|
echo " Plano já existe"
|
|
fi
|
|
|
|
echo "[4/4] Produto hosting Ligbox Site CMS..."
|
|
if ! curl -sk -b "$COOKIE_JAR" "${FOSS_URL}/api/admin/product/get_list?CSRFToken=${CSRF}" | grep -q 'Ligbox Site CMS'; then
|
|
PID=$(curl -sk -b "$COOKIE_JAR" -X POST "${FOSS_URL}/api/admin/product/prepare" \
|
|
-d "CSRFToken=${CSRF}&title=Ligbox+Site+CMS&type=hosting" | python3 -c "import sys,json; print(json.load(sys.stdin)['result'])")
|
|
curl -sk -b "$COOKIE_JAR" -X POST "${FOSS_URL}/api/admin/product/update_config" \
|
|
--data-urlencode "CSRFToken=${CSRF}" --data-urlencode "id=${PID}" \
|
|
--data-urlencode 'config[server_id]=1' --data-urlencode 'config[hosting_plan_id]=1' \
|
|
--data-urlencode 'config[reseller]=0' --data-urlencode 'config[allow_domain_own]=1' \
|
|
--data-urlencode 'config[allow_domain_register]=0' --data-urlencode 'config[allow_domain_transfer]=0' \
|
|
--data-urlencode 'config[allow_subdomain]=0' >/dev/null
|
|
curl -sk -b "$COOKIE_JAR" -X POST "${FOSS_URL}/api/admin/product/update" \
|
|
-d "CSRFToken=${CSRF}&id=${PID}&status=enabled&slug=ligbox-site-cms-hosting" >/dev/null
|
|
echo " Produto id=${PID} criado"
|
|
else
|
|
echo " Produto já existe"
|
|
fi
|
|
|
|
echo "Concluído. Ver: ${FOSS_URL}/admin/servicehosting"
|