mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-05 09:54:06 +08:00
🎉 Sync 2026-09-27 21:03:26
This commit is contained in:
1 parent
f4559bbed1
commit
065763f7fd
673 files changed
+261285
-34160
No files matched your search
Executable
+535
@@ -0,0 +1,535 @@
|
||||
#!/bin/sh
|
||||
# shellcheck shell=sh
|
||||
|
||||
ss_case_refresh_state_machine() (
|
||||
set -eu
|
||||
TMP="$(ss_spec_tmpdir)"
|
||||
trap 'rm -rf "$TMP"' EXIT HUP INT TERM
|
||||
CORE="$SS_SPEC_ROOT/files/usr/lib/safeshield/core.sh"
|
||||
HARNESS="$TMP/core-state-machine.sh"
|
||||
sed -n '/^safeshield_apply_local_rules() {/,${p;}' "$CORE" >"$HARNESS"
|
||||
# shellcheck disable=SC1090
|
||||
. "$HARNESS"
|
||||
|
||||
SS_TMP_DIR="$TMP/runtime"
|
||||
SS_DNSMASQ_DIR="$TMP/dnsmasq.d"
|
||||
SS_BLOCKLIST_FILE="$SS_DNSMASQ_DIR/safeshield.blocklist"
|
||||
SS_INACTIVE_BLOCKLIST_FILE="$SS_TMP_DIR/inactive.blocklist"
|
||||
SS_PREV_BLOCKLIST_GZ="$TMP/previous.gz"
|
||||
mkdir -p "$SS_TMP_DIR" "$SS_DNSMASQ_DIR"
|
||||
CALLS="$TMP/calls"
|
||||
: >"$CALLS"
|
||||
|
||||
record() { printf '%s\n' "$*" >>"$CALLS"; }
|
||||
log_info() { :; }
|
||||
log_warn() { :; }
|
||||
log_error() { :; }
|
||||
log_ok() { :; }
|
||||
ss_status_prepare_refresh() { record status_prepare_refresh; }
|
||||
ss_status_set() { record "status_set $1 ${2:-}"; }
|
||||
ss_status_set_now() { record "status_set_now $1"; }
|
||||
ss_status_add_error() { record "status_error $1"; }
|
||||
ss_status_mark_failure() { record "failure $1"; }
|
||||
ss_status_mark_success() { record "success $1"; }
|
||||
ss_load_config() {
|
||||
ss_enabled=1
|
||||
export ss_initial_dnsmasq_restart=0
|
||||
ss_apply_local_overrides=1
|
||||
return 0
|
||||
}
|
||||
ss_config_get() {
|
||||
case "$2" in
|
||||
refresh_interval_s) printf '%s\n' '300' ;;
|
||||
*) printf '%s\n' "${3:-}" ;;
|
||||
esac
|
||||
}
|
||||
is_valid_integer() { case "$1" in '' | *[!0-9]*) return 1 ;; *) return 0 ;; esac }
|
||||
ss_sync_detected_device_config() { record sync_device_config; }
|
||||
ss_identity_ensure() {
|
||||
record identity_ensure
|
||||
[ "${FAIL_STAGE:-}" != 'identity' ]
|
||||
}
|
||||
ss_detect_device_model() { printf '%s\n' 'Test Router'; }
|
||||
ss_detect_device_arch() { printf '%s\n' 'test-arch'; }
|
||||
ss_should_stop() { return 1; }
|
||||
ss_mkdirs() {
|
||||
record mkdirs
|
||||
[ "${FAIL_STAGE:-}" != 'mkdir' ]
|
||||
}
|
||||
ss_clean_tmp() { record clean_tmp; }
|
||||
ss_require_supported_dnsmasq() {
|
||||
record require_dnsmasq
|
||||
[ "${FAIL_STAGE:-}" != 'dnsmasq_version' ]
|
||||
}
|
||||
ss_dnsmasq_check_error() { printf '%s\n' 'dnsmasq_version_unsupported'; }
|
||||
ss_ensure_dnsmasq_confdir() {
|
||||
record ensure_confdir
|
||||
[ "${FAIL_STAGE:-}" != 'confdir' ]
|
||||
}
|
||||
ss_export_existing_blocklist() {
|
||||
record export_blocklist
|
||||
printf '%s\n' 'backup' >"$SS_PREV_BLOCKLIST_GZ"
|
||||
return 0
|
||||
}
|
||||
DNSMASQ_CALL=0
|
||||
dnsmasq_restart() {
|
||||
DNSMASQ_CALL=$((DNSMASQ_CALL + 1))
|
||||
record "dnsmasq_restart $DNSMASQ_CALL"
|
||||
[ "${FAIL_STAGE:-}" != 'restart' ]
|
||||
}
|
||||
ss_resolve_artifact() {
|
||||
record resolve_artifact
|
||||
[ "${FAIL_STAGE:-}" != 'resolve' ]
|
||||
}
|
||||
ss_resolve_error_code() { printf '%s\n' "${RESOLVE_ERROR_CODE:-artifact_resolve_failed}"; }
|
||||
ss_download_api_artifacts() {
|
||||
record download_artifacts
|
||||
[ "${FAIL_STAGE:-}" != 'download' ]
|
||||
}
|
||||
ss_artifact_download_error_code() { printf '%s\n' "${DOWNLOAD_ERROR_CODE:-artifact_download_failed}"; }
|
||||
ss_prepare_local_rule_files() {
|
||||
record prepare_local_rules
|
||||
[ "${FAIL_STAGE:-}" != 'local_rules' ]
|
||||
}
|
||||
ss_merge_lists() {
|
||||
record merge_lists
|
||||
[ "${FAIL_STAGE:-}" != 'merge' ]
|
||||
}
|
||||
ss_install_blocklist() {
|
||||
record install_blocklist
|
||||
[ "${FAIL_STAGE:-}" != 'install' ]
|
||||
}
|
||||
check_dns_runtime() {
|
||||
record check_dns_runtime
|
||||
[ "${FAIL_STAGE:-}" != 'runtime' ]
|
||||
}
|
||||
check_blocklist_applied_multi_with_stats() {
|
||||
record "verify_blocklist $*"
|
||||
[ "${FAIL_STAGE:-}" != 'verify' ]
|
||||
}
|
||||
ss_restore_and_restart() { record restore_and_restart; }
|
||||
ss_refresh_lock_open() {
|
||||
record lock_open
|
||||
[ "${LOCK_AVAILABLE:-1}" = '1' ]
|
||||
}
|
||||
ss_refresh_lock_close() { record lock_close; }
|
||||
ss_local_rules_fingerprint_from_tmp() { printf '%s\n' 'fingerprint-new'; }
|
||||
ss_local_rules_state_write() { record "local_state_write $1"; }
|
||||
ss_abort_refresh() {
|
||||
record abort_refresh
|
||||
return 130
|
||||
}
|
||||
|
||||
assert_refresh_failure() {
|
||||
stage="$1"
|
||||
code="$2"
|
||||
expect_restore="$3"
|
||||
FAIL_STAGE="$stage"
|
||||
RESOLVE_ERROR_CODE='artifact_resolve_failed'
|
||||
DOWNLOAD_ERROR_CODE='artifact_download_failed'
|
||||
DNSMASQ_CALL=0
|
||||
: >"$CALLS"
|
||||
if safeshield_force_download; then
|
||||
return 1
|
||||
fi
|
||||
ss_spec_assert_file_line "$CALLS" "failure $code"
|
||||
ss_spec_assert_file_line "$CALLS" 'lock_close'
|
||||
if [ "$expect_restore" = '1' ]; then
|
||||
ss_spec_assert_file_line "$CALLS" 'restore_and_restart'
|
||||
else
|
||||
! grep -Fx 'restore_and_restart' "$CALLS" >/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
FAIL_STAGE=''
|
||||
LOCK_AVAILABLE=1
|
||||
: >"$CALLS"
|
||||
safeshield_force_download
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set stage resolve_api'
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set stage download_artifact'
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set stage merge'
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set stage install'
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set stage restart_dnsmasq'
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set stage runtime_check'
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set stage blocklist_verify'
|
||||
ss_spec_assert_file_line "$CALLS" 'success 300'
|
||||
ss_spec_assert_file_line "$CALLS" 'local_state_write fingerprint-new'
|
||||
ss_spec_assert_file_line "$CALLS" 'lock_close'
|
||||
! grep -Fx 'restore_and_restart' "$CALLS" >/dev/null
|
||||
|
||||
assert_refresh_failure merge merge_failed 1
|
||||
assert_refresh_failure install install_failed 1
|
||||
assert_refresh_failure restart dnsmasq_restart_failed 1
|
||||
assert_refresh_failure runtime dns_runtime_check_failed 1
|
||||
assert_refresh_failure verify blocklist_verification_failed 1
|
||||
|
||||
FAIL_STAGE='resolve'
|
||||
RESOLVE_ERROR_CODE='safeshield_upgrade_required'
|
||||
: >"$CALLS"
|
||||
! safeshield_force_download
|
||||
ss_spec_assert_file_line "$CALLS" 'failure safeshield_upgrade_required'
|
||||
! grep -Fx 'restore_and_restart' "$CALLS" >/dev/null
|
||||
|
||||
FAIL_STAGE='download'
|
||||
DOWNLOAD_ERROR_CODE='safeshield_upgrade_required'
|
||||
: >"$CALLS"
|
||||
! safeshield_force_download
|
||||
ss_spec_assert_file_line "$CALLS" 'failure safeshield_upgrade_required'
|
||||
! grep -Fx 'restore_and_restart' "$CALLS" >/dev/null
|
||||
|
||||
FAIL_STAGE=''
|
||||
LOCK_AVAILABLE=0
|
||||
: >"$CALLS"
|
||||
safeshield_force_download
|
||||
ss_spec_assert_file_line "$CALLS" 'lock_open'
|
||||
! grep -F 'status_prepare_refresh' "$CALLS" >/dev/null
|
||||
)
|
||||
|
||||
ss_case_local_apply_state_machine() (
|
||||
set -eu
|
||||
TMP="$(ss_spec_tmpdir)"
|
||||
trap 'rm -rf "$TMP"' EXIT HUP INT TERM
|
||||
CORE="$SS_SPEC_ROOT/files/usr/lib/safeshield/core.sh"
|
||||
HARNESS="$TMP/local-apply.sh"
|
||||
sed -n '/^safeshield_apply_local_rules() {/,/^safeshield_force_download() {/p' "$CORE" | sed '$d' >"$HARNESS"
|
||||
# shellcheck disable=SC1090
|
||||
. "$HARNESS"
|
||||
|
||||
SS_TMP_DIR="$TMP/runtime"
|
||||
SS_DNSMASQ_DIR="$TMP/dnsmasq.d"
|
||||
SS_BLOCKLIST_FILE="$SS_DNSMASQ_DIR/safeshield.blocklist"
|
||||
SS_PREV_BLOCKLIST_GZ="$TMP/previous.gz"
|
||||
SS_INACTIVE_BLOCKLIST_FILE="$SS_TMP_DIR/inactive.blocklist"
|
||||
mkdir -p "$SS_TMP_DIR" "$SS_DNSMASQ_DIR"
|
||||
CALLS="$TMP/calls"
|
||||
: >"$CALLS"
|
||||
|
||||
record() { printf '%s\n' "$*" >>"$CALLS"; }
|
||||
log_info() { :; }
|
||||
log_warn() { :; }
|
||||
log_error() { :; }
|
||||
log_ok() { :; }
|
||||
sleep() { :; }
|
||||
ss_load_config() {
|
||||
ss_enabled="${MOCK_ENABLED:-1}"
|
||||
export ss_apply_local_overrides="${MOCK_OVERRIDES:-1}"
|
||||
return 0
|
||||
}
|
||||
ss_mkdirs() { return 0; }
|
||||
ss_refresh_lock_open_wait() {
|
||||
record "lock_wait $1"
|
||||
return "${LOCK_RC:-0}"
|
||||
}
|
||||
ss_refresh_lock_close() { record lock_close; }
|
||||
ss_cached_api_sources_available() { [ "${CACHE_AVAILABLE:-1}" = '1' ]; }
|
||||
ss_status_set() { record "status_set $1 ${2:-}"; }
|
||||
ss_status_set_now() { record "status_set_now $1"; }
|
||||
ss_status_add_error() { record "status_error $1"; }
|
||||
ss_prepare_local_rule_files() {
|
||||
record prepare_local_rules
|
||||
[ "${LOCAL_FAIL:-}" != 'local_rules' ]
|
||||
}
|
||||
ss_local_rules_fingerprint_from_tmp() { printf '%s\n' "${NEW_FINGERPRINT:-fingerprint-new}"; }
|
||||
ss_local_rules_state_read() { [ -n "${APPLIED_FINGERPRINT:-}" ] && printf '%s\n' "$APPLIED_FINGERPRINT"; }
|
||||
ss_local_rules_state_write() { record "local_state_write $1"; }
|
||||
ss_require_supported_dnsmasq() { [ "${LOCAL_FAIL:-}" != 'dnsmasq_version' ]; }
|
||||
ss_dnsmasq_check_error() { printf '%s\n' 'dnsmasq_version_unsupported'; }
|
||||
ss_ensure_dnsmasq_confdir() {
|
||||
record ensure_confdir
|
||||
[ "${LOCAL_FAIL:-}" != 'confdir' ]
|
||||
}
|
||||
ss_export_existing_blocklist() {
|
||||
printf '%s\n' backup >"$SS_PREV_BLOCKLIST_GZ"
|
||||
return 0
|
||||
}
|
||||
ss_merge_lists() {
|
||||
record merge_lists
|
||||
[ "${LOCAL_FAIL:-}" != 'merge' ]
|
||||
}
|
||||
dnsmasq_restart() {
|
||||
record dnsmasq_restart
|
||||
[ "${LOCAL_FAIL:-}" != 'restart' ]
|
||||
}
|
||||
check_dns_runtime() {
|
||||
record check_dns_runtime
|
||||
[ "${LOCAL_FAIL:-}" != 'runtime' ]
|
||||
}
|
||||
check_blocklist_applied_multi_with_stats() {
|
||||
record "verify_blocklist $*"
|
||||
[ "${LOCAL_FAIL:-}" != 'verify' ]
|
||||
}
|
||||
ss_restore_and_restart() { record restore_and_restart; }
|
||||
ss_mark_local_apply_failure() { record "local_failure $1"; }
|
||||
ss_mark_local_apply_success() { record local_success; }
|
||||
FALLBACK_RC=0
|
||||
safeshield_force_download() {
|
||||
record fallback_refresh
|
||||
return "$FALLBACK_RC"
|
||||
}
|
||||
|
||||
CACHE_AVAILABLE=0
|
||||
LOCK_RC=0
|
||||
LOCAL_FAIL=''
|
||||
: >"$CALLS"
|
||||
safeshield_apply_local_rules
|
||||
ss_spec_assert_file_line "$CALLS" 'fallback_refresh'
|
||||
ss_spec_assert_file_line "$CALLS" 'lock_close'
|
||||
|
||||
CACHE_AVAILABLE=1
|
||||
LOCK_RC=1
|
||||
: >"$CALLS"
|
||||
! safeshield_apply_local_rules
|
||||
ss_spec_assert_file_line "$CALLS" 'local_failure local_apply_lock_timeout'
|
||||
|
||||
LOCK_RC=130
|
||||
: >"$CALLS"
|
||||
set +e
|
||||
safeshield_apply_local_rules
|
||||
rc=$?
|
||||
set -e
|
||||
ss_spec_assert_eq "$rc" '130'
|
||||
! grep -F 'local_failure' "$CALLS" >/dev/null
|
||||
|
||||
LOCK_RC=0
|
||||
APPLIED_FINGERPRINT='fingerprint-new'
|
||||
NEW_FINGERPRINT='fingerprint-new'
|
||||
printf '%s\n' 'safeshield-block=/cached.example/' >"$SS_BLOCKLIST_FILE"
|
||||
: >"$CALLS"
|
||||
safeshield_apply_local_rules
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set stage done'
|
||||
! grep -Fx 'merge_lists' "$CALLS" >/dev/null
|
||||
! grep -Fx 'dnsmasq_restart' "$CALLS" >/dev/null
|
||||
|
||||
APPLIED_FINGERPRINT='fingerprint-old'
|
||||
NEW_FINGERPRINT='fingerprint-new'
|
||||
for scenario in merge restart runtime verify; do
|
||||
LOCAL_FAIL="$scenario"
|
||||
: >"$CALLS"
|
||||
! safeshield_apply_local_rules
|
||||
case "$scenario" in
|
||||
merge) code='local_merge_failed' ;;
|
||||
restart) code='local_dnsmasq_restart_failed' ;;
|
||||
runtime) code='local_dns_runtime_check_failed' ;;
|
||||
verify) code='local_blocklist_verification_failed' ;;
|
||||
esac
|
||||
ss_spec_assert_file_line "$CALLS" "local_failure $code"
|
||||
ss_spec_assert_file_line "$CALLS" 'restore_and_restart'
|
||||
ss_spec_assert_file_line "$CALLS" 'lock_close'
|
||||
done
|
||||
|
||||
LOCAL_FAIL=''
|
||||
: >"$CALLS"
|
||||
safeshield_apply_local_rules
|
||||
ss_spec_assert_file_line "$CALLS" 'merge_lists'
|
||||
ss_spec_assert_file_line "$CALLS" 'dnsmasq_restart'
|
||||
ss_spec_assert_file_line "$CALLS" 'check_dns_runtime'
|
||||
ss_spec_assert_file_line "$CALLS" 'verify_blocklist 5 3'
|
||||
ss_spec_assert_file_line "$CALLS" 'local_state_write fingerprint-new'
|
||||
ss_spec_assert_file_line "$CALLS" 'local_success'
|
||||
! grep -Fx 'restore_and_restart' "$CALLS" >/dev/null
|
||||
)
|
||||
|
||||
ss_case_refresh_locking() (
|
||||
set -eu
|
||||
TMP="$(ss_spec_tmpdir)"
|
||||
trap 'rm -rf "$TMP"' EXIT HUP INT TERM
|
||||
RUNNING_STATUS_FILE="$TMP/status.json"
|
||||
SS_REFRESH_LOCK="$TMP/safeshield-refresh.lock"
|
||||
SS_REFRESH_LOCK_FD=9
|
||||
MOCK_FLOCK_DIR="$TMP/mock-flock.lock"
|
||||
|
||||
# Keep this regression test portable on development hosts such as macOS,
|
||||
# where flock(1) is not installed by default. The production code still
|
||||
# invokes flock -n/-u; this shim emulates those operations with atomic
|
||||
# mkdir/rmdir so contention, release, timeout, and termination paths are
|
||||
# exercised without depending on a host-specific flock binary.
|
||||
flock() {
|
||||
case "${1:-}" in
|
||||
-n)
|
||||
mkdir "$MOCK_FLOCK_DIR" 2>/dev/null
|
||||
;;
|
||||
-u)
|
||||
rmdir "$MOCK_FLOCK_DIR" 2>/dev/null || true
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
return 2
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
. "$SS_SPEC_ROOT/files/usr/lib/safeshield/status.sh"
|
||||
is_valid_integer() { case "$1" in '' | *[!0-9]*) return 1 ;; *) return 0 ;; esac }
|
||||
ss_should_stop() { return 1; }
|
||||
|
||||
mkdir "$MOCK_FLOCK_DIR"
|
||||
! ss_refresh_lock_open
|
||||
! ss_refresh_lock_open_wait 0
|
||||
rmdir "$MOCK_FLOCK_DIR"
|
||||
|
||||
ss_refresh_lock_open
|
||||
ss_spec_assert_exists "$MOCK_FLOCK_DIR"
|
||||
ss_refresh_lock_close
|
||||
ss_spec_assert_not_exists "$MOCK_FLOCK_DIR"
|
||||
|
||||
mkdir "$MOCK_FLOCK_DIR"
|
||||
ss_should_stop() { return 0; }
|
||||
set +e
|
||||
ss_refresh_lock_open_wait 10
|
||||
rc=$?
|
||||
set -e
|
||||
rmdir "$MOCK_FLOCK_DIR"
|
||||
ss_spec_assert_eq "$rc" '130'
|
||||
)
|
||||
|
||||
ss_case_service_lifecycle() (
|
||||
set -eu
|
||||
TMP="$(ss_spec_tmpdir)"
|
||||
trap 'rm -rf "$TMP"' EXIT HUP INT TERM
|
||||
INIT="$SS_SPEC_ROOT/files/etc/init.d/safeshield"
|
||||
HARNESS="$TMP/init-lifecycle.sh"
|
||||
sed -n '/^start_service() {/,/^reconcile_statistics() {/p' "$INIT" | sed '$d' >"$HARNESS"
|
||||
# shellcheck disable=SC1090
|
||||
. "$HARNESS"
|
||||
|
||||
export PKG_NAME='safeshield'
|
||||
SS_BLOCKLIST_FILE="$TMP/dnsmasq.d/safeshield.blocklist"
|
||||
export SS_INACTIVE_BLOCKLIST_FILE="$TMP/inactive.blocklist"
|
||||
mkdir -p "${SS_BLOCKLIST_FILE%/*}"
|
||||
CALLS="$TMP/calls"
|
||||
: >"$CALLS"
|
||||
record() { printf '%s\n' "$*" >>"$CALLS"; }
|
||||
log_error() { :; }
|
||||
log_warn() { :; }
|
||||
ss_load_config() {
|
||||
export ss_enabled="${MOCK_ENABLED:-1}"
|
||||
export ss_statistics_enabled="${MOCK_STATISTICS:-1}"
|
||||
return "${LOAD_RC:-0}"
|
||||
}
|
||||
ss_identity_ensure() {
|
||||
record identity_ensure
|
||||
return 0
|
||||
}
|
||||
ss_detect_device_model() { printf '%s\n' 'Test Router'; }
|
||||
ss_detect_device_arch() { printf '%s\n' 'test-arch'; }
|
||||
ss_mkdirs() {
|
||||
record mkdirs
|
||||
return 0
|
||||
}
|
||||
ss_statistics_request_rebaseline() {
|
||||
record request_rebaseline
|
||||
return 0
|
||||
}
|
||||
ss_statistics_configure_dnsmasq() {
|
||||
record "statistics_configure $1"
|
||||
printf '%s\n' "${STATISTICS_CHANGED:-0}"
|
||||
}
|
||||
ss_runtime_deactivate_blocklist() {
|
||||
record deactivate_blocklist
|
||||
return "${DEACTIVATE_RC:-0}"
|
||||
}
|
||||
ss_runtime_activate_blocklist() {
|
||||
record activate_blocklist
|
||||
return "${ACTIVATE_RC:-0}"
|
||||
}
|
||||
ss_status_set() { record "status_set $1 ${2:-}"; }
|
||||
ss_status_mark_failure() { record "failure $1"; }
|
||||
ss_require_supported_dnsmasq() {
|
||||
record require_dnsmasq
|
||||
return 0
|
||||
}
|
||||
ss_dnsmasq_check_error() { printf '%s\n' 'dnsmasq_version_unsupported'; }
|
||||
ss_statistics_disable_if_dnsmasq_unpatched() {
|
||||
record statistics_guard
|
||||
return 0
|
||||
}
|
||||
ss_reconcile_installed_blocklists_for_dnsmasq() {
|
||||
record reconcile_blocklists
|
||||
return "${MIGRATION_RC:-0}"
|
||||
}
|
||||
ss_ensure_dnsmasq_confdir() {
|
||||
record ensure_confdir
|
||||
return 0
|
||||
}
|
||||
dnsmasq_restart() {
|
||||
record dnsmasq_restart
|
||||
return "${DNSMASQ_RC:-0}"
|
||||
}
|
||||
procd_open_instance() { record procd_open_instance; }
|
||||
procd_set_param() { record "procd_set_param $*"; }
|
||||
procd_close_instance() { record procd_close_instance; }
|
||||
ss_statistics_add_procd_instance() { record add_statistics_instance; }
|
||||
ss_statistics_add_upload_procd_instance() { record add_statistics_upload_instance; }
|
||||
|
||||
MOCK_ENABLED=0
|
||||
MOCK_STATISTICS=1
|
||||
STATISTICS_CHANGED=1
|
||||
MIGRATION_RC=0
|
||||
DNSMASQ_RC=0
|
||||
: >"$CALLS"
|
||||
start_service
|
||||
ss_spec_assert_file_line "$CALLS" 'request_rebaseline'
|
||||
ss_spec_assert_file_line "$CALLS" 'statistics_configure 0'
|
||||
ss_spec_assert_file_line "$CALLS" 'deactivate_blocklist'
|
||||
ss_spec_assert_file_line "$CALLS" 'dnsmasq_restart'
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set stage disabled'
|
||||
! grep -Fx 'procd_open_instance' "$CALLS" >/dev/null
|
||||
|
||||
printf '%s\n' 'safeshield-block=/active.example/' >"$SS_BLOCKLIST_FILE"
|
||||
: >"$CALLS"
|
||||
start_service
|
||||
ss_spec_assert_file_line "$CALLS" 'deactivate_blocklist'
|
||||
! grep -Fx 'dnsmasq_restart' "$CALLS" >/dev/null
|
||||
rm -f "$SS_BLOCKLIST_FILE"
|
||||
|
||||
MOCK_ENABLED=1
|
||||
MOCK_STATISTICS=1
|
||||
STATISTICS_CHANGED=0
|
||||
MIGRATION_RC=0
|
||||
: >"$CALLS"
|
||||
start_service
|
||||
ss_spec_assert_file_line "$CALLS" 'require_dnsmasq'
|
||||
ss_spec_assert_file_line "$CALLS" 'statistics_guard'
|
||||
ss_spec_assert_file_line "$CALLS" 'reconcile_blocklists'
|
||||
ss_spec_assert_file_line "$CALLS" 'statistics_configure 1'
|
||||
ss_spec_assert_file_line "$CALLS" 'activate_blocklist'
|
||||
ss_spec_assert_file_line "$CALLS" 'procd_set_param command /usr/libexec/safeshield-refreshd'
|
||||
ss_spec_assert_file_line "$CALLS" 'add_statistics_instance'
|
||||
ss_spec_assert_file_line "$CALLS" 'add_statistics_upload_instance'
|
||||
|
||||
MIGRATION_RC=1
|
||||
: >"$CALLS"
|
||||
! start_service
|
||||
ss_spec_assert_file_line "$CALLS" 'failure blocklist_directive_migration_failed'
|
||||
! grep -Fx 'activate_blocklist' "$CALLS" >/dev/null
|
||||
MIGRATION_RC=0
|
||||
|
||||
MOCK_ENABLED=1
|
||||
STATISTICS_CHANGED=1
|
||||
rm -f "$SS_BLOCKLIST_FILE"
|
||||
: >"$CALLS"
|
||||
stop_service
|
||||
ss_spec_assert_file_line "$CALLS" 'statistics_configure 0'
|
||||
ss_spec_assert_file_line "$CALLS" 'deactivate_blocklist'
|
||||
ss_spec_assert_file_line "$CALLS" 'dnsmasq_restart'
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set stage stopped'
|
||||
|
||||
printf '%s\n' 'safeshield-block=/active.example/' >"$SS_BLOCKLIST_FILE"
|
||||
: >"$CALLS"
|
||||
stop_service
|
||||
ss_spec_assert_file_line "$CALLS" 'deactivate_blocklist'
|
||||
! grep -Fx 'dnsmasq_restart' "$CALLS" >/dev/null
|
||||
rm -f "$SS_BLOCKLIST_FILE"
|
||||
|
||||
MOCK_ENABLED=0
|
||||
STATISTICS_CHANGED=0
|
||||
: >"$CALLS"
|
||||
stop_service
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set status disabled'
|
||||
ss_spec_assert_file_line "$CALLS" 'status_set last_result disabled'
|
||||
)
|
||||
|
||||
reload_service() {
|
||||
restart
|
||||
}
|
||||
Reference in new issue
Block a user