mirror of
https://github.com/andrey271192/PCA_Phobos.git
synced 2026-09-20 11:55:32 +00:00
fix: ship stable lib-core helper
This commit is contained in:
@@ -22,6 +22,7 @@ phobos-update beta # или: phobos-update dev
|
||||
## stable
|
||||
|
||||
### v1.2.8
|
||||
- **fix:** fresh stable install теперь кладёт обязательный `lib-core.sh` рядом с `phobos-client.sh`, поэтому `/clients` не сыпется на `check_root/load_env/die/log_*: command not found`.
|
||||
- **fix:** шаг `[6/9] PCA patches` больше не падает с `curl: (23) Failure writing output to destination`, если папки `repo/server/scripts` или `repo/client/templates` не были созданы upstream sparse clone.
|
||||
- **fix:** установка `wg-obfuscator` на x86_64 больше не падает с `ERROR: obfuscator binary for x86_64 missing`. Если бинарника нет в Ground-Zerro, installer и secondary installer берут `linux-x64` из ClusterM releases.
|
||||
|
||||
@@ -53,6 +54,7 @@ phobos-update beta # или: phobos-update dev
|
||||
|--------|----------|---------|
|
||||
| 1.2.7 / 1.3.x | PhobosWG: «невозможно импортировать туннель» | `phobos://` дополняется `= none` для всех обязательных полей (`PresharedKey`) по спеке формата |
|
||||
| 1.2.8 / 1.3.x | Stable не показывал кнопку скачивания APK без локального файла | кнопка **PhobosWG (APK)** всегда доступна на Android-странице; `/download/apk` ведет на public stable release |
|
||||
| 1.2.8 / 1.3.x | Stable `/clients`: `lib-core.sh: No such file or directory`, `check_root/load_env: command not found` | `lib-core.sh` добавлен в public repo, installer и updater |
|
||||
| 1.2.8 / 1.3.x | Install `[6/9] PCA patches`: `curl: (23) Failure writing output to destination` | `fetch()` создаёт папку назначения перед `curl -o` |
|
||||
| 1.2.8 / 1.3.x | VPS x86_64: `ERROR: obfuscator binary for x86_64 missing` | авто-загрузка `linux-x64` из ClusterM releases + нормализация `amd64 -> x86_64` |
|
||||
| 1.2.6 / 1.3.x | Роутер aarch64: «бинарник не найден в архиве» | авто-загрузка aarch64/mipsel/armv7 из ClusterM releases |
|
||||
|
||||
@@ -203,6 +203,7 @@ fetch() {
|
||||
fi
|
||||
echo " WARN: fetch $1 failed"; return 1
|
||||
}
|
||||
fetch overlay/lib-core.sh "$PHOBOS_DIR/repo/server/scripts/lib-core.sh" && chmod +x "$PHOBOS_DIR/repo/server/scripts/lib-core.sh"
|
||||
fetch overlay/phobos-client.sh "$PHOBOS_DIR/repo/server/scripts/phobos-client.sh" && chmod +x "$PHOBOS_DIR/repo/server/scripts/phobos-client.sh"
|
||||
fetch overlay/install-router.sh.template "$PHOBOS_DIR/repo/client/templates/install-router.sh.template"
|
||||
fetch overlay/router-configure-wireguard.sh "$PHOBOS_DIR/repo/client/templates/router-configure-wireguard.sh" && chmod +x "$PHOBOS_DIR/repo/client/templates/router-configure-wireguard.sh"
|
||||
|
||||
63
overlay/lib-core.sh
Normal file
63
overlay/lib-core.sh
Normal file
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
PHOBOS_DIR="${PHOBOS_DIR:-/opt/Phobos}"
|
||||
SERVER_ENV="${SERVER_ENV:-$PHOBOS_DIR/server/server.env}"
|
||||
CLIENTS_DIR="${CLIENTS_DIR:-$PHOBOS_DIR/clients}"
|
||||
PACKAGES_DIR="${PACKAGES_DIR:-$PHOBOS_DIR/packages}"
|
||||
WWW_DIR="${WWW_DIR:-$PHOBOS_DIR/www}"
|
||||
TOKENS_DIR="${TOKENS_DIR:-$PHOBOS_DIR/tokens}"
|
||||
TOKENS_FILE="${TOKENS_FILE:-$TOKENS_DIR/tokens.json}"
|
||||
REPO_DIR="${REPO_DIR:-$PHOBOS_DIR/repo}"
|
||||
WG_CONFIG="${WG_CONFIG:-/etc/wireguard/wg0.conf}"
|
||||
TOKEN_TTL="${TOKEN_TTL:-86400}"
|
||||
CLIENT_WG_PORT="${CLIENT_WG_PORT:-13255}"
|
||||
|
||||
log_info() { echo "[INFO] $*"; }
|
||||
log_warn() { echo "[WARN] $*" >&2; }
|
||||
log_success() { echo "[OK] $*"; }
|
||||
die() { echo "[ERROR] $*" >&2; exit 1; }
|
||||
|
||||
check_root() {
|
||||
[ "$(id -u)" = "0" ] || die "run as root"
|
||||
}
|
||||
|
||||
load_env() {
|
||||
if [ -f "$SERVER_ENV" ]; then
|
||||
while IFS='=' read -r k v; do
|
||||
case "$k" in
|
||||
''|\#*) continue ;;
|
||||
esac
|
||||
export "$k=$v"
|
||||
done < "$SERVER_ENV"
|
||||
fi
|
||||
|
||||
if [ -z "${SERVER_PUBLIC_IP_V4:-}" ]; then
|
||||
SERVER_PUBLIC_IP_V4="$(curl -4 -fsS --max-time 6 https://api.ipify.org 2>/dev/null || hostname -I | awk '{print $1}')"
|
||||
export SERVER_PUBLIC_IP_V4
|
||||
fi
|
||||
|
||||
if [ -z "${SERVER_WG_PUBLIC_KEY:-}" ]; then
|
||||
SERVER_WG_PUBLIC_KEY="$(wg show wg0 public-key 2>/dev/null || true)"
|
||||
export SERVER_WG_PUBLIC_KEY
|
||||
fi
|
||||
|
||||
if [ -n "${OBFUSCATOR_PORTS:-}" ]; then
|
||||
OBFUSCATOR_PORT="$(echo "$OBFUSCATOR_PORTS" | cut -d',' -f1 | tr -d ' ')"
|
||||
export OBFUSCATOR_PORT
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_dirs() {
|
||||
mkdir -p \
|
||||
"$CLIENTS_DIR" \
|
||||
"$PACKAGES_DIR" \
|
||||
"$WWW_DIR/init" \
|
||||
"$WWW_DIR/packages" \
|
||||
"$TOKENS_DIR" \
|
||||
"$REPO_DIR/server/scripts" \
|
||||
"$REPO_DIR/client/templates"
|
||||
|
||||
[ -f "$TOKENS_FILE" ] || echo "[]" > "$TOKENS_FILE"
|
||||
}
|
||||
@@ -47,6 +47,7 @@ gh_curl() { # $1=ref, rest=curl args
|
||||
managed_files() {
|
||||
cat <<LIST
|
||||
$PANEL_DIR/app.py|app.py
|
||||
$PHOBOS_DIR/repo/server/scripts/lib-core.sh|overlay/lib-core.sh
|
||||
$PHOBOS_DIR/repo/server/scripts/phobos-client.sh|overlay/phobos-client.sh
|
||||
$PHOBOS_DIR/repo/client/templates/install-router.sh.template|overlay/install-router.sh.template
|
||||
$PHOBOS_DIR/repo/client/templates/router-configure-wireguard.sh|overlay/router-configure-wireguard.sh
|
||||
|
||||
Reference in New Issue
Block a user