补充 world geo nginx snippet、OpenAPI/geo 热更新脚本,以及 popadmin package_name 定价补丁,便于运维对齐。 Co-authored-by: Cursor <cursoragent@cursor.com>
71 lines
2.9 KiB
Bash
71 lines
2.9 KiB
Bash
#!/bin/bash
|
|
# Hot-patch wyrs-admin jar: MembershipPrice.packageName + package filter.
|
|
# Does NOT touch JWT secrets / env files.
|
|
set -euo pipefail
|
|
ROOT=/tmp/price-patch
|
|
JAR=/opt/wyrs-admin/remote-control-1.0.0.jar
|
|
STAMP=$(date +%Y%m%d%H%M%S)
|
|
BACKUP="${JAR}.bak.pricepkg.${STAMP}"
|
|
WORK="$ROOT/work"
|
|
OUT="$ROOT/classes-out"
|
|
SRC="$ROOT/compile-src"
|
|
|
|
rm -rf "$WORK" "$OUT" "$SRC"
|
|
mkdir -p "$WORK" "$OUT" "$SRC/com/wyrs/admin/entity" \
|
|
"$SRC/com/wyrs/admin/service/config" \
|
|
"$SRC/com/wyrs/admin/util" \
|
|
"$SRC/com/wyrs/admin/web"
|
|
|
|
cp "$ROOT/upload/MembershipPrice.java" "$SRC/com/wyrs/admin/entity/"
|
|
cp "$ROOT/upload/PricesConfigService.java" "$SRC/com/wyrs/admin/service/config/"
|
|
cp "$ROOT/upload/PackageNameContext.java" "$SRC/com/wyrs/admin/util/"
|
|
cp "$ROOT/upload/PackageNameRequestFilter.java" "$SRC/com/wyrs/admin/web/"
|
|
|
|
cd "$WORK"
|
|
jar xf "$JAR"
|
|
# classpath
|
|
CP="BOOT-INF/classes"
|
|
while IFS= read -r j; do CP="$CP:$j"; done < <(find BOOT-INF/lib -name '*.jar' | sort)
|
|
|
|
echo "Compiling..."
|
|
javac --release 17 -encoding UTF-8 -cp "$CP" -d "$OUT" \
|
|
"$SRC/com/wyrs/admin/entity/MembershipPrice.java" \
|
|
"$SRC/com/wyrs/admin/util/PackageNameContext.java" \
|
|
"$SRC/com/wyrs/admin/web/PackageNameRequestFilter.java" \
|
|
"$SRC/com/wyrs/admin/service/config/PricesConfigService.java"
|
|
|
|
echo "Injecting classes into jar..."
|
|
cp -a "$JAR" "$BACKUP"
|
|
# remove old builder nested class if present; our builder is inner static
|
|
rm -f BOOT-INF/classes/com/wyrs/admin/entity/MembershipPrice\$MembershipPriceBuilder.class
|
|
mkdir -p BOOT-INF/classes/com/wyrs/admin/entity \
|
|
BOOT-INF/classes/com/wyrs/admin/service/config \
|
|
BOOT-INF/classes/com/wyrs/admin/util \
|
|
BOOT-INF/classes/com/wyrs/admin/web
|
|
|
|
cp -a "$OUT/com/wyrs/admin/entity/"*.class BOOT-INF/classes/com/wyrs/admin/entity/
|
|
cp -a "$OUT/com/wyrs/admin/service/config/"*.class BOOT-INF/classes/com/wyrs/admin/service/config/
|
|
cp -a "$OUT/com/wyrs/admin/util/"*.class BOOT-INF/classes/com/wyrs/admin/util/
|
|
cp -a "$OUT/com/wyrs/admin/web/"*.class BOOT-INF/classes/com/wyrs/admin/web/
|
|
|
|
jar uf "$JAR" \
|
|
BOOT-INF/classes/com/wyrs/admin/entity/MembershipPrice.class \
|
|
BOOT-INF/classes/com/wyrs/admin/entity/MembershipPrice\$MembershipPriceBuilder.class \
|
|
BOOT-INF/classes/com/wyrs/admin/service/config/PricesConfigService.class \
|
|
BOOT-INF/classes/com/wyrs/admin/service/config/PricesConfigService\$1.class \
|
|
BOOT-INF/classes/com/wyrs/admin/util/PackageNameContext.class \
|
|
BOOT-INF/classes/com/wyrs/admin/web/PackageNameRequestFilter.class
|
|
|
|
# PricesConfigService may produce $1 for TypeReference anon
|
|
if [ -f BOOT-INF/classes/com/wyrs/admin/service/config/PricesConfigService\$1.class ]; then
|
|
jar uf "$JAR" BOOT-INF/classes/com/wyrs/admin/service/config/PricesConfigService\$1.class
|
|
fi
|
|
|
|
echo "Restarting wyrs-admin (JWT env untouched)..."
|
|
systemctl restart wyrs-admin
|
|
sleep 8
|
|
systemctl is-active wyrs-admin
|
|
journalctl -u wyrs-admin -n 40 --no-pager | tail -40
|
|
echo "BACKUP=$BACKUP"
|
|
echo "DONE"
|