 grep -A 15 "function block::restore_peer" \
>   /etc/wireguard/wgctl/modules/block.module.sh
function block::restore_peer() {
  local name="${1:?}" client_ip="${2:?}"
  fw::unblock_all "$client_ip"
  fw::flush_peer "$client_ip"
  monitor::unwatch_client "$name"
  if ! peers::exists_in_server "$name"; then
    local public_key
    public_key=$(keys::public "$name") || return 1
    peers::add_to_server "$name" "$public_key" "$client_ip"
    peers::reload
  fi
}

function block::restore_all() {
  while IFS= read -r peer_name; do
    block::has_file "$peer_name" || continue

 grep -A 20 "function block::restore_peer" \
>   /etc/wireguard/wgctl/modules/block.module.sh
function block::restore_peer() {
  local name="${1:?}" client_ip="${2:?}"
  fw::unblock_all "$client_ip"
  fw::flush_peer "$client_ip"
  monitor::unwatch_client "$name"
  if ! peers::exists_in_server "$name"; then
    local public_key
    public_key=$(keys::public "$name") || return 1
    peers::add_to_server "$name" "$public_key" "$client_ip"
    peers::reload
  fi
}

function block::restore_all() {
  while IFS= read -r peer_name; do
    block::has_file "$peer_name" || continue
    local client_ip
    client_ip=$(peers::get_ip "$peer_name")
    [[ -z "$client_ip" ]] && continue
    while IFS="|" read -r bname btype target port proto; do
      [[ -z "$btype" ]] && continue