s
This commit is contained in:
@@ -362,8 +362,13 @@ resolve_neko_profile_dir() {
|
||||
|
||||
resolve_neko_profile_dir_for_instance() {
|
||||
local idx="${1:-1}"
|
||||
local base
|
||||
local base override
|
||||
base="${NEKO_PROFILE_HOST_DIR:-$(resolve_neko_profile_dir)}"
|
||||
eval "override=\"\${NEKO_PROFILE_HOST_DIR_${idx}:-}\""
|
||||
if [ -n "$override" ]; then
|
||||
printf '%s' "$override"
|
||||
return 0
|
||||
fi
|
||||
case "$idx" in
|
||||
1) printf '%s' "$base" ;;
|
||||
*) printf '%s-%s' "$base" "$idx" ;;
|
||||
@@ -541,8 +546,22 @@ neko_managed_policies_enabled() {
|
||||
esac
|
||||
}
|
||||
|
||||
copy_neko_tampermonkey_seed_dir() {
|
||||
local src="${1:-}" dst="${2:-}" marker="${3:-}"
|
||||
[ -e "$src" ] || return 0
|
||||
if [ -e "$dst" ]; then
|
||||
if [ -z "$marker" ] || grep -R -a -q "$marker" "$dst" 2>/dev/null; then
|
||||
return 0
|
||||
fi
|
||||
rm -rf "$dst" 2>/dev/null || true
|
||||
fi
|
||||
mkdir -p "$(dirname "$dst")"
|
||||
cp -a "$src" "$dst" 2>/dev/null || true
|
||||
rm -f "$dst/LOCK" 2>/dev/null || true
|
||||
}
|
||||
|
||||
seed_neko_tampermonkey_profile() {
|
||||
local target="${1:-}" donor="${2:-}" rel src dst
|
||||
local target="${1:-}" donor="${2:-}" rel src dst marker
|
||||
[ -n "$target" ] || return 0
|
||||
if [ -z "$donor" ] || [ ! -d "$donor/Default/Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo" ]; then
|
||||
donor="$(find_neko_tampermonkey_seed_profile "$target")"
|
||||
@@ -555,21 +574,17 @@ seed_neko_tampermonkey_profile() {
|
||||
"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
|
||||
marker="Tampermonkey"
|
||||
case "$rel" in
|
||||
"Local Extension Settings/"*) marker="YouTube Studio Auto Dismiss" ;;
|
||||
esac
|
||||
copy_neko_tampermonkey_seed_dir "$src" "$dst" "$marker"
|
||||
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
|
||||
copy_neko_tampermonkey_seed_dir "$src" "$dst" "YouTube Studio Auto Dismiss"
|
||||
else
|
||||
rm -rf "$dst" 2>/dev/null || true
|
||||
fi
|
||||
@@ -626,7 +641,22 @@ if not isinstance(source, dict):
|
||||
raise SystemExit(0)
|
||||
target = load(target_pref)
|
||||
settings = target.setdefault("extensions", {}).setdefault("settings", {})
|
||||
if ext_id not in settings:
|
||||
|
||||
def should_replace_current(value: object) -> bool:
|
||||
if not isinstance(value, dict):
|
||||
return True
|
||||
if value.get("state") != 1:
|
||||
return True
|
||||
if value.get("from_webstore") is not True:
|
||||
return True
|
||||
path = str(value.get("path") or "")
|
||||
if path.startswith("/"):
|
||||
return True
|
||||
if value.get("location") == 8:
|
||||
return True
|
||||
return False
|
||||
|
||||
if should_replace_current(settings.get(ext_id)):
|
||||
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")
|
||||
@@ -746,6 +776,9 @@ ensure_runtime_dirs_owned_by_live() {
|
||||
backup_config \
|
||||
.pm2 \
|
||||
.process_runner \
|
||||
web-console/out \
|
||||
web-console/.next \
|
||||
web-console/node_modules \
|
||||
services/neko/data
|
||||
do
|
||||
path="$ROOT_DIR/$rel"
|
||||
@@ -1318,7 +1351,7 @@ install_neko_browser() {
|
||||
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_DESKTOP_SCREEN="${NEKO_DESKTOP_SCREEN:-1280x720@15}"
|
||||
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}"
|
||||
|
||||
@@ -314,8 +314,22 @@ neko_managed_policies_enabled() {
|
||||
esac
|
||||
}
|
||||
|
||||
copy_neko_tampermonkey_seed_dir() {
|
||||
local src="${1:-}" dst="${2:-}" marker="${3:-}"
|
||||
[ -e "$src" ] || return 0
|
||||
if [ -e "$dst" ]; then
|
||||
if [ -z "$marker" ] || grep -R -a -q "$marker" "$dst" 2>/dev/null; then
|
||||
return 0
|
||||
fi
|
||||
rm -rf "$dst" 2>/dev/null || true
|
||||
fi
|
||||
mkdir -p "$(dirname "$dst")"
|
||||
cp -a "$src" "$dst" 2>/dev/null || true
|
||||
rm -f "$dst/LOCK" 2>/dev/null || true
|
||||
}
|
||||
|
||||
seed_neko_tampermonkey_profile() {
|
||||
local target="${1:-}" donor="${2:-}" rel src dst
|
||||
local target="${1:-}" donor="${2:-}" rel src dst marker
|
||||
[ -n "$target" ] || return 0
|
||||
if [ -z "$donor" ] || [ ! -d "$donor/Default/Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo" ]; then
|
||||
donor="$(find_neko_tampermonkey_seed_profile "$target")"
|
||||
@@ -328,21 +342,17 @@ seed_neko_tampermonkey_profile() {
|
||||
"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
|
||||
marker="Tampermonkey"
|
||||
case "$rel" in
|
||||
"Local Extension Settings/"*) marker="YouTube Studio Auto Dismiss" ;;
|
||||
esac
|
||||
copy_neko_tampermonkey_seed_dir "$src" "$dst" "$marker"
|
||||
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
|
||||
copy_neko_tampermonkey_seed_dir "$src" "$dst" "YouTube Studio Auto Dismiss"
|
||||
else
|
||||
rm -rf "$dst" 2>/dev/null || true
|
||||
fi
|
||||
@@ -399,7 +409,22 @@ if not isinstance(source, dict):
|
||||
raise SystemExit(0)
|
||||
target = load(target_pref)
|
||||
settings = target.setdefault("extensions", {}).setdefault("settings", {})
|
||||
if ext_id not in settings:
|
||||
|
||||
def should_replace_current(value: object) -> bool:
|
||||
if not isinstance(value, dict):
|
||||
return True
|
||||
if value.get("state") != 1:
|
||||
return True
|
||||
if value.get("from_webstore") is not True:
|
||||
return True
|
||||
path = str(value.get("path") or "")
|
||||
if path.startswith("/"):
|
||||
return True
|
||||
if value.get("location") == 8:
|
||||
return True
|
||||
return False
|
||||
|
||||
if should_replace_current(settings.get(ext_id)):
|
||||
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")
|
||||
|
||||
Reference in New Issue
Block a user