mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2025-04-29 06:35:07 +03:00

2. added SCTP protocol and schema support 3. added set of NAS models support (Asustor, ReadyNAS, Drobo, QNAP, WD, Synology, Terramaster) 4. moved to fc00::/7 private segment 5. added Windows, MacOS and Linux UI for peers edit and current status
121 lines
2.8 KiB
Bash
121 lines
2.8 KiB
Bash
#!/bin/sh
|
|
#
|
|
|
|
##!!
|
|
. /etc/service.subr
|
|
|
|
prog_dir=`dirname \`realpath $0\``
|
|
base_dir=/mnt/DroboFS/Shares/DroboApps/mesh
|
|
config_dir="$base_dir/config"
|
|
config_file="$config_dir/mesh.conf"
|
|
|
|
name="mesh"
|
|
framework_version="2.1"
|
|
description="RiV-mesh is an implementation of a fully end-to-end encrypted IPv6 network"
|
|
depends=""
|
|
webui="WebUI"
|
|
|
|
errorfile=/tmp/DroboApps/mesh/error.txt
|
|
pidfile=/tmp/DroboApps/mesh/pid.txt
|
|
statusfile=/tmp/DroboApps/mesh/status.txt
|
|
edstatusfile=$base_dir/var/lib/mesh/status
|
|
|
|
start()
|
|
{
|
|
mkdir -p /tmp/DroboApps/mesh
|
|
# delete edstatufile before starting daemon to delete previous status
|
|
rm -f $edstatusfile
|
|
rm -f $errorfile
|
|
|
|
if [ -f $config_file ]; then
|
|
mkdir -p /var/backups
|
|
echo "Backing up configuration file to /var/backups/mesh.conf.`date +%Y%m%d`"
|
|
cp $config_file /var/backups/mesh.conf.`date +%Y%m%d`
|
|
echo "Normalising and updating /etc/mesh.conf"
|
|
$base_dir/bin/mesh -useconf -normaliseconf < /var/backups/mesh.conf.`date +%Y%m%d` > $config_file
|
|
else
|
|
mkdir -p $config_dir
|
|
echo "Generating initial configuration file $config_file"
|
|
echo "Please familiarise yourself with this file before starting RiV-mesh"
|
|
sh -c "umask 0027 && $base_dir/bin/mesh -genconf > '$config_file'"
|
|
fi
|
|
|
|
# Create the necessary file structure for /dev/net/tun
|
|
if ( [ ! -c /dev/net/tun ] ); then
|
|
if ( [ ! -d /dev/net ] ); then
|
|
mkdir -m 755 /dev/net
|
|
fi
|
|
mknod /dev/net/tun c 10 200
|
|
chmod 0755 /dev/net/tun
|
|
fi
|
|
|
|
# Load the tun module if not already loaded
|
|
if ( !(lsmod | grep -q "^tun\s") ); then
|
|
KERNEL_VERSION=$(/bin/uname -r)
|
|
insmod $base_dir/lib/modules/$KERNEL_VERSION/tun.ko
|
|
fi
|
|
|
|
# Launch the mesh in the background.
|
|
${base_dir}/bin/mesh -useconffile "$config_file" \
|
|
-httpaddress "http://localhost:19019" \
|
|
-wwwroot "$base_dir/www" \
|
|
-logto "$base_dir/var/log/mesh.log" &
|
|
|
|
sleep 1
|
|
update_status
|
|
}
|
|
|
|
update_status()
|
|
{
|
|
|
|
# wait until file appears
|
|
i=30
|
|
|
|
while [ -z $(pidof -s mesh) ]
|
|
do
|
|
sleep 1
|
|
i=$((i-1))
|
|
|
|
if [ $i -eq 0 ]
|
|
then
|
|
break
|
|
fi
|
|
done
|
|
|
|
# if we don't have file here. throw error into status and return
|
|
if [ -z $(pidof -s mesh) ]
|
|
then
|
|
echo "" > "$pidfile"
|
|
echo 1 > "${errorfile}"
|
|
echo "Configuration required" > $statusfile
|
|
else
|
|
echo $(pidof -s mesh) > "$pidfile"
|
|
echo 0 > "${errorfile}"
|
|
echo "Application is running" > $statusfile
|
|
fi
|
|
|
|
}
|
|
|
|
stop()
|
|
{
|
|
pid=`pidof -s mesh`
|
|
if [ -z "$pid" ]; then
|
|
echo 1 > "${errorfile}"
|
|
echo "mesh was not running" > $statusfile
|
|
else
|
|
kill "$pid"
|
|
echo 0 > "${errorfile}"
|
|
echo "Application is stopped" > $statusfile
|
|
fi
|
|
echo "" > "$pidfile"
|
|
|
|
}
|
|
|
|
case "$1" in
|
|
update_status)
|
|
update_status
|
|
exit $?
|
|
;;
|
|
esac
|
|
|
|
main "$@"
|