Ostatnio aktywny 1 month ago

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

1 file changed, 45 insertions

gistfile1.txt(stworzono plik)

@@ -0,0 +1,45 @@
1 + function cmd::group::rm_peers() {
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 + local peer_count=${#peers_list[@]}
19 + [[ -z "${peers_list[0]:-}" ]] && peer_count=0
20 +
21 + if [[ "$peer_count" -eq 0 ]]; then
22 + log::wg_warning "Group '${name}' has no peers"
23 + return 0
24 + fi
25 +
26 + if ! $force; then
27 + read -r -p "Remove all ${peer_count} peers in group '${name}' from WireGuard? [y/N] " confirm
28 + case "$confirm" in
29 + [yY][eE][sS]|[yY]) ;;
30 + *) log::info "Aborted"; return 0 ;;
31 + esac
32 + fi
33 +
34 + load_command remove
35 + group::each_peer "$name" cmd::group::_rm_peer_cb
36 + log::wg_success "Removed peers from group '${name}' (definition kept)"
37 + }
38 + function cmd::group::_rm_peer_cb() {
39 + local peer_name="${1:-}"
40 + if ! group::_peer_exists_check "$peer_name"; then
41 + log::wg_warning "Peer '${peer_name}' no longer exists — skipping"
42 + return 0
43 + fi
44 + cmd::remove::run --name "$peer_name" --force
45 + }
Nowsze Starsze