sss
This commit is contained in:
@@ -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}"
|
||||
|
||||
@@ -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}"
|
||||
|
||||
Reference in New Issue
Block a user