gistfile1.txt
· 1.3 KiB · Text
Исходник
function cmd::rule::add() {
local name="" desc=""
local allow_ips=() block_ips=() block_ports=()
local dns_redirect=false
while [[ $# -gt 0 ]]; do
case "$1" in
--name) name="$2"; shift 2 ;;
--desc) desc="$2"; shift 2 ;;
--allow-ip) allow_ips+=("$2"); shift 2 ;;
--block-ip) block_ips+=("$2"); shift 2 ;;
--block-port) block_ports+=("$2"); shift 2 ;;
--dns-redirect) dns_redirect=true; shift ;;
--help) cmd::rule::help; return ;;
*)
log::error "Unknown flag: $1"
return 1
;;
esac
done
if [[ -z "$name" ]]; then
log::error "Missing required flag: --name"
return 1
fi
if rule::exists "$name"; then
log::error "Rule already exists: ${name}"
return 1
fi
local rule_file
rule_file="$(ctx::rule::path "${name}.rule")"
local allow_str block_str port_str
allow_str=$(IFS=','; echo "${allow_ips[*]}")
block_str=$(IFS=','; echo "${block_ips[*]}")
port_str=$(IFS=','; echo "${block_ports[*]}")
json::create_rule "$rule_file" "$name" "$desc" \
"$($dns_redirect && echo true || echo false)" \
"$allow_str" "$block_str" "$port_str" || return 1
log::wg_success "Rule created: ${name}"
}
| 1 | function cmd::rule::add() { |
| 2 | local name="" desc="" |
| 3 | local allow_ips=() block_ips=() block_ports=() |
| 4 | local dns_redirect=false |
| 5 | |
| 6 | while [[ $# -gt 0 ]]; do |
| 7 | case "$1" in |
| 8 | --name) name="$2"; shift 2 ;; |
| 9 | --desc) desc="$2"; shift 2 ;; |
| 10 | --allow-ip) allow_ips+=("$2"); shift 2 ;; |
| 11 | --block-ip) block_ips+=("$2"); shift 2 ;; |
| 12 | --block-port) block_ports+=("$2"); shift 2 ;; |
| 13 | --dns-redirect) dns_redirect=true; shift ;; |
| 14 | --help) cmd::rule::help; return ;; |
| 15 | *) |
| 16 | log::error "Unknown flag: $1" |
| 17 | return 1 |
| 18 | ;; |
| 19 | esac |
| 20 | done |
| 21 | |
| 22 | if [[ -z "$name" ]]; then |
| 23 | log::error "Missing required flag: --name" |
| 24 | return 1 |
| 25 | fi |
| 26 | |
| 27 | if rule::exists "$name"; then |
| 28 | log::error "Rule already exists: ${name}" |
| 29 | return 1 |
| 30 | fi |
| 31 | |
| 32 | local rule_file |
| 33 | rule_file="$(ctx::rule::path "${name}.rule")" |
| 34 | |
| 35 | local allow_str block_str port_str |
| 36 | |
| 37 | allow_str=$(IFS=','; echo "${allow_ips[*]}") |
| 38 | block_str=$(IFS=','; echo "${block_ips[*]}") |
| 39 | port_str=$(IFS=','; echo "${block_ports[*]}") |
| 40 | |
| 41 | json::create_rule "$rule_file" "$name" "$desc" \ |
| 42 | "$($dns_redirect && echo true || echo false)" \ |
| 43 | "$allow_str" "$block_str" "$port_str" || return 1 |
| 44 | |
| 45 | log::wg_success "Rule created: ${name}" |
| 46 | } |