Ostatnio aktywny 1 month ago

nuno zrewidował ten Gist 1 month ago. Przejdź do rewizji

1 file changed, 37 insertions

gistfile1.txt(stworzono plik)

@@ -0,0 +1,37 @@
1 + function cmd::group::block() {
2 + local name="" force=false
3 +
4 + while [[ $# -gt 0 ]]; do
5 + case "$1" in
6 + --name) util::require_flag "--name" "${2:-}" || return 1; name="$2"; shift 2 ;;
7 + --force) force=true; shift ;;
8 + --help) cmd::group::help; return ;;
9 + *) log::error "Unknown flag: $1"; return 1 ;;
10 + esac
11 + done
12 +
13 + [[ -z "$name" ]] && log::error "Missing required flag: --name" && return 1
14 + group::require_exists "$name" || return 1
15 +
16 + local peers_list=()
17 + mapfile -t peers_list < <(group::peers "$name")
18 +
19 + if [[ ${#peers_list[@]} -eq 0 ]] || [[ -z "${peers_list[0]:-}" ]]; then
20 + log::wg_warning "Group '${name}' has no peers"
21 + return 0
22 + fi
23 +
24 + local count=0 blocked_names=()
25 + local filtered=()
26 + for p in "${peers_list[@]:-}"; do
27 + [[ -n "$p" ]] && filtered+=("$p")
28 + done
29 + [[ ${#filtered[@]} -eq 0 ]] && log::wg_warning "Group '${name}' has no peers" && return 0
30 +
31 + for peer_name in "${filtered[@]}"; do
32 + cmd::group::_block_peer "$peer_name" "$name"
33 + (( count++ )) || true
34 + done
35 +
36 + log::wg_block "All peers from ${name} have been blocked (${count} peers)."
37 + }
Nowsze Starsze