Initial commit
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
This commit is contained in:
99
package/network/services/unetd/files/unetd.sh
Normal file
99
package/network/services/unetd/files/unetd.sh
Normal file
@@ -0,0 +1,99 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ -x /usr/sbin/unetd ] || exit 0
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/network.sh
|
||||
. ../netifd-proto.sh
|
||||
|
||||
init_proto "$@"
|
||||
|
||||
proto_unet_init_config() {
|
||||
proto_config_add_string device
|
||||
proto_config_add_string type
|
||||
proto_config_add_string auth_key
|
||||
proto_config_add_string key
|
||||
proto_config_add_string file
|
||||
proto_config_add_int keepalive
|
||||
proto_config_add_string domain
|
||||
proto_config_add_boolean dht
|
||||
proto_config_add_array "tunnels:list(string)"
|
||||
proto_config_add_array "connect:list(string)"
|
||||
proto_config_add_array "peer_data:list(string)"
|
||||
no_device=1
|
||||
available=1
|
||||
no_proto_task=1
|
||||
}
|
||||
|
||||
proto_unet_setup() {
|
||||
local config="$1"
|
||||
|
||||
local device type key file keepalive domain tunnels
|
||||
json_get_vars device type auth_key key file keepalive domain dht
|
||||
json_get_values tunnels tunnels
|
||||
json_get_values connect connect
|
||||
json_get_values peer_data peer_data
|
||||
device="${device:-$config}"
|
||||
|
||||
[ -n "$auth_key" ] && type="${type:-dynamic}"
|
||||
[ -n "$file" ] && type="${type:-file}"
|
||||
|
||||
json_init
|
||||
json_add_string name "$device"
|
||||
json_add_string type "$type"
|
||||
json_add_string interface "$config"
|
||||
json_add_string auth_key "$auth_key"
|
||||
json_add_string key "$key"
|
||||
json_add_string file "$file"
|
||||
[ -n "$keepalive" ] && json_add_int keepalive "$keepalive"
|
||||
[ -n "$dht" ] && json_add_boolean dht "$dht"
|
||||
json_add_string domain "$domain"
|
||||
|
||||
json_add_object tunnels
|
||||
for t in $tunnels; do
|
||||
local ifname="${t%%=*}"
|
||||
local service="${t#*=}"
|
||||
[ -n "$ifname" -a -n "$service" -a "$ifname" != "$t" ] || continue
|
||||
json_add_string "$ifname" "$service"
|
||||
done
|
||||
json_close_object
|
||||
|
||||
json_add_array auth_connect
|
||||
for c in $connect; do
|
||||
json_add_string "" "$c"
|
||||
done
|
||||
json_close_array
|
||||
|
||||
json_add_array peer_data
|
||||
for c in $peer_data; do
|
||||
json_add_string "" "$c"
|
||||
done
|
||||
json_close_array
|
||||
|
||||
ip link del dev "$device" >/dev/null 2>&1
|
||||
ip link add dev "$device" type wireguard || {
|
||||
echo "Could not create wireguard device $device"
|
||||
proto_setup_failed "$config"
|
||||
exit 1
|
||||
}
|
||||
|
||||
ubus call unetd network_add "$(json_dump)"
|
||||
}
|
||||
|
||||
proto_unet_teardown() {
|
||||
local config="$1"
|
||||
local iface="$2"
|
||||
|
||||
local device
|
||||
json_get_vars device
|
||||
device="${device:-$iface}"
|
||||
|
||||
json_init
|
||||
json_add_string name "$device"
|
||||
|
||||
ip link del dev "$device"
|
||||
|
||||
ubus call unetd network_del "$(json_dump)"
|
||||
}
|
||||
|
||||
add_protocol unet
|
||||
Reference in New Issue
Block a user