This commit is contained in:
eric
2026-05-19 07:49:56 +00:00
parent 78e1308063
commit 585bcd9500
112 changed files with 61939 additions and 23 deletions

View File

@@ -530,24 +530,107 @@ resolve_neko_instances_csv() {
resolve_neko_service_names | paste -sd, -
}
neko_managed_policies_enabled() {
case "${NEKO_MANAGED_POLICIES:-0}" in
1|true|TRUE|yes|YES|on|ON|enable|enabled)
return 0
;;
*)
return 1
;;
esac
}
seed_neko_tampermonkey_profile() {
local target="${1:-}" donor="${2:-}" rel src dst
[ -n "$target" ] || return 0
[ -n "$donor" ] || donor="$(resolve_neko_profile_dir_for_instance 1)"
if [ -z "$donor" ] || [ ! -d "$donor/Default/Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo" ]; then
donor="$(find_neko_tampermonkey_seed_profile "$target")"
fi
[ "$target" = "$donor" ] && return 0
[ -d "$donor/Default" ] || return 0
mkdir -p "$target/Default"
for rel in \
"Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo" \
"Local Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo" \
"Managed Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo"; do
"Local Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo"; do
src="$donor/Default/$rel"
dst="$target/Default/$rel"
[ -e "$src" ] || continue
[ ! -e "$dst" ] || continue
mkdir -p "$(dirname "$dst")"
cp -a "$src" "$dst" 2>/dev/null || true
rm -f "$dst/LOCK" 2>/dev/null || true
done
rel="Managed Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo"
src="$donor/Default/$rel"
dst="$target/Default/$rel"
if neko_managed_policies_enabled; then
if [ -e "$src" ] && [ ! -e "$dst" ]; then
mkdir -p "$(dirname "$dst")"
cp -a "$src" "$dst" 2>/dev/null || true
rm -f "$dst/LOCK" 2>/dev/null || true
fi
else
rm -rf "$dst" 2>/dev/null || true
fi
sync_neko_tampermonkey_preferences "$target" "$donor"
}
find_neko_tampermonkey_seed_profile() {
local target="${1:-}" base data_dir bundled cand
if [ -n "${NEKO_TAMPERMONKEY_SEED_PROFILE:-}" ] && [ -d "$NEKO_TAMPERMONKEY_SEED_PROFILE/Default/Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo" ]; then
printf '%s' "$NEKO_TAMPERMONKEY_SEED_PROFILE"
return 0
fi
base="$(resolve_neko_profile_dir_for_instance 1)"
data_dir="$ROOT_DIR/services/neko/data"
bundled="$ROOT_DIR/services/neko/tampermonkey-seed"
for cand in "$base" "$base"-* "$data_dir"/*profile-v2 "$data_dir"/*profile-v2-*; do
[ -n "$cand" ] || continue
[ "$cand" != "$target" ] || continue
[ -d "$cand/Default/Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo" ] || continue
[ -d "$cand/Default/Local Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo" ] || continue
printf '%s' "$cand"
return 0
done
if [ -d "$bundled/Default/Local Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo" ]; then
printf '%s' "$bundled"
return 0
fi
}
sync_neko_tampermonkey_preferences() {
local target="${1:-}" donor="${2:-}"
[ -n "$target" ] && [ -n "$donor" ] || return 0
command -v python3 >/dev/null 2>&1 || return 0
DONOR_PROFILE="$donor" TARGET_PROFILE="$target" python3 - <<'PY'
import json
import os
from pathlib import Path
ext_id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"
donor_pref = Path(os.environ["DONOR_PROFILE"]) / "Default" / "Preferences"
target_pref = Path(os.environ["TARGET_PROFILE"]) / "Default" / "Preferences"
def load(path: Path) -> dict:
if not path.exists():
return {}
try:
return json.loads(path.read_text(encoding="utf-8"))
except Exception:
return {}
donor = load(donor_pref)
source = donor.get("extensions", {}).get("settings", {}).get(ext_id)
if not isinstance(source, dict):
raise SystemExit(0)
target = load(target_pref)
settings = target.setdefault("extensions", {}).setdefault("settings", {})
if ext_id not in settings:
settings[ext_id] = source
target_pref.parent.mkdir(parents=True, exist_ok=True)
target_pref.write_text(json.dumps(target, ensure_ascii=False, separators=(",", ":")), encoding="utf-8")
PY
}
resolve_neko_http_port_for_instance() {
@@ -1234,6 +1317,7 @@ install_neko_browser() {
export NEKO_START_URL="${NEKO_START_URL:-https://accounts.google.com/ServiceLogin?continue=https://www.youtube.com/}"
export NEKO_IMAGE="$(resolve_neko_image)"
export NEKO_BROWSER_SUPERVISOR_CONF="$(resolve_neko_supervisor_conf)"
export NEKO_MANAGED_POLICIES="${NEKO_MANAGED_POLICIES:-0}"
export NEKO_DESKTOP_SCREEN="${NEKO_DESKTOP_SCREEN:-1920x1080@30}"
export NEKO_WEBRTC_UDP_RANGE="${NEKO_WEBRTC_UDP_RANGE:-52000-52099}"
export NEKO_WEBRTC_UDP_RANGE_1="${NEKO_WEBRTC_UDP_RANGE_1:-$NEKO_WEBRTC_UDP_RANGE}"

View File

@@ -303,24 +303,107 @@ resolve_neko_profile_dir_for_instance() {
esac
}
neko_managed_policies_enabled() {
case "${NEKO_MANAGED_POLICIES:-0}" in
1|true|TRUE|yes|YES|on|ON|enable|enabled)
return 0
;;
*)
return 1
;;
esac
}
seed_neko_tampermonkey_profile() {
local target="${1:-}" donor="${2:-}" rel src dst
[ -n "$target" ] || return 0
[ -n "$donor" ] || donor="$(resolve_neko_profile_dir_for_instance 1)"
if [ -z "$donor" ] || [ ! -d "$donor/Default/Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo" ]; then
donor="$(find_neko_tampermonkey_seed_profile "$target")"
fi
[ "$target" = "$donor" ] && return 0
[ -d "$donor/Default" ] || return 0
mkdir -p "$target/Default"
for rel in \
"Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo" \
"Local Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo" \
"Managed Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo"; do
"Local Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo"; do
src="$donor/Default/$rel"
dst="$target/Default/$rel"
[ -e "$src" ] || continue
[ ! -e "$dst" ] || continue
mkdir -p "$(dirname "$dst")"
cp -a "$src" "$dst" 2>/dev/null || true
rm -f "$dst/LOCK" 2>/dev/null || true
done
rel="Managed Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo"
src="$donor/Default/$rel"
dst="$target/Default/$rel"
if neko_managed_policies_enabled; then
if [ -e "$src" ] && [ ! -e "$dst" ]; then
mkdir -p "$(dirname "$dst")"
cp -a "$src" "$dst" 2>/dev/null || true
rm -f "$dst/LOCK" 2>/dev/null || true
fi
else
rm -rf "$dst" 2>/dev/null || true
fi
sync_neko_tampermonkey_preferences "$target" "$donor"
}
find_neko_tampermonkey_seed_profile() {
local target="${1:-}" base data_dir bundled cand
if [ -n "${NEKO_TAMPERMONKEY_SEED_PROFILE:-}" ] && [ -d "$NEKO_TAMPERMONKEY_SEED_PROFILE/Default/Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo" ]; then
printf '%s' "$NEKO_TAMPERMONKEY_SEED_PROFILE"
return 0
fi
base="$(resolve_neko_profile_dir_for_instance 1)"
data_dir="$ROOT_DIR/services/neko/data"
bundled="$ROOT_DIR/services/neko/tampermonkey-seed"
for cand in "$base" "$base"-* "$data_dir"/*profile-v2 "$data_dir"/*profile-v2-*; do
[ -n "$cand" ] || continue
[ "$cand" != "$target" ] || continue
[ -d "$cand/Default/Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo" ] || continue
[ -d "$cand/Default/Local Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo" ] || continue
printf '%s' "$cand"
return 0
done
if [ -d "$bundled/Default/Local Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo" ]; then
printf '%s' "$bundled"
return 0
fi
}
sync_neko_tampermonkey_preferences() {
local target="${1:-}" donor="${2:-}"
[ -n "$target" ] && [ -n "$donor" ] || return 0
command -v python3 >/dev/null 2>&1 || return 0
DONOR_PROFILE="$donor" TARGET_PROFILE="$target" python3 - <<'PY'
import json
import os
from pathlib import Path
ext_id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"
donor_pref = Path(os.environ["DONOR_PROFILE"]) / "Default" / "Preferences"
target_pref = Path(os.environ["TARGET_PROFILE"]) / "Default" / "Preferences"
def load(path: Path) -> dict:
if not path.exists():
return {}
try:
return json.loads(path.read_text(encoding="utf-8"))
except Exception:
return {}
donor = load(donor_pref)
source = donor.get("extensions", {}).get("settings", {}).get(ext_id)
if not isinstance(source, dict):
raise SystemExit(0)
target = load(target_pref)
settings = target.setdefault("extensions", {}).setdefault("settings", {})
if ext_id not in settings:
settings[ext_id] = source
target_pref.parent.mkdir(parents=True, exist_ok=True)
target_pref.write_text(json.dumps(target, ensure_ascii=False, separators=(",", ":")), encoding="utf-8")
PY
}
resolve_neko_instance_count() {
@@ -1062,6 +1145,7 @@ export_neko_env() {
export NEKO_MAX_FPS="${NEKO_MAX_FPS:-15}"
export NEKO_VIDEO_BITRATE="${NEKO_VIDEO_BITRATE:-1200}"
export NEKO_BROWSER_RENDER_MODE="${NEKO_BROWSER_RENDER_MODE:-auto}"
export NEKO_MANAGED_POLICIES="${NEKO_MANAGED_POLICIES:-0}"
export NEKO_WEBRTC_UDP_RANGE="${NEKO_WEBRTC_UDP_RANGE:-52000-52099}"
export NEKO_WEBRTC_UDP_RANGE_1="${NEKO_WEBRTC_UDP_RANGE_1:-$NEKO_WEBRTC_UDP_RANGE}"
export NEKO_WEBRTC_UDP_RANGE_2="${NEKO_WEBRTC_UDP_RANGE_2:-52101-52199}"