mirror of https://github.com/OpenIPC/firmware.git
54 lines
1.7 KiB
Bash
Executable File
54 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# OpenIPC.org | v.20230212
|
|
# by Igor Zalatov, aka FlyRouter, aka ZigFisher
|
|
# Busybox applets: awk cat echo insmod ip modprobe sha1sum sleep tr tunctl udhcpc uptime
|
|
#
|
|
|
|
vtund_enable="true"
|
|
vtund_server=${1:-vtun.localhost}
|
|
vtund_port="5000"
|
|
vtund_iface="tunnel"
|
|
device_name="IPC-VTUND"
|
|
working_dir="/tmp"
|
|
|
|
identity() {
|
|
identity_src=$(ip r | awk '/default/ {print $5}' | head -n 1)
|
|
identity_mac=$(cat /sys/class/net/"$identity_src"/address | tr 'a-z' 'A-Z')
|
|
identity_pas=$(echo "$identity_mac" | sha1sum | awk '{print $1}')
|
|
identity_tid=$(echo "$identity_mac" | tr -d ':')
|
|
identity_cfg=$working_dir/vtund.conf
|
|
}
|
|
|
|
interface() {
|
|
[ -L /sys/class/net/$vtund_iface ] || (modprobe tun; tunctl -t $vtund_iface) >/dev/null 2>&1
|
|
[ -f $working_dir/udhcpc-$vtund_iface.pid ] && kill -9 "$(cat $working_dir/udhcpc-$vtund_iface.pid)" >/dev/null 2>&1
|
|
}
|
|
|
|
config() {
|
|
( echo "options {"
|
|
echo " port $vtund_port;"
|
|
echo " ifconfig /sbin/ifconfig;"
|
|
echo "}"
|
|
echo "$identity_tid {"
|
|
echo " password $identity_pas;"
|
|
echo " device $vtund_iface;"
|
|
echo " stat no;"
|
|
echo " persist yes;"
|
|
echo " keepalive 10:5;"
|
|
echo " timeout 10;"
|
|
echo " up {"
|
|
echo " ifconfig \"$vtund_iface hw ether $identity_mac mtu 1500 -multicast up\";"
|
|
echo " program \"udhcpc -T 1 -t 5 -R -b -O staticroutes -S -s tapip -p $working_dir/udhcpc-$vtund_iface.pid -i $vtund_iface -x hostname:$device_name-$identity_tid\";"
|
|
echo " };"
|
|
echo " down {"
|
|
echo " ifconfig \"$vtund_iface down\";"
|
|
echo " };"
|
|
echo "}"
|
|
) >$identity_cfg
|
|
}
|
|
|
|
if [ "$vtund_enable" = "true" ]; then
|
|
(while true; do identity; interface; config; vtund -n -f "$identity_cfg" "$identity_tid" "$vtund_server" >/dev/null 2>&1; done) &
|
|
fi
|