mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 11:15: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
		
			
				
	
	
		
			120 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
BASE="/var/packages/mesh/target"
 | 
						|
CONFIG_DIR="/var/packages/mesh/etc"
 | 
						|
config_file="$CONFIG_DIR/mesh.conf"
 | 
						|
LOG_FILE="$BASE/var/log/mesh.log"
 | 
						|
export LD_LIBRARY_PATH="$BASE/lib"
 | 
						|
cd /
 | 
						|
 | 
						|
set_proxy()
 | 
						|
{
 | 
						|
	if [ -f /etc/proxy.conf ]; then
 | 
						|
		. /etc/proxy.conf
 | 
						|
		if [ "$proxy_enabled" = "yes" ]; then
 | 
						|
			export http_proxy="$https_host":"$https_port"
 | 
						|
		fi
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
start_service ()
 | 
						|
{
 | 
						|
 | 
						|
    set_proxy
 | 
						|
 | 
						|
    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}/bin/mesh -useconf -normaliseconf < /var/backups/mesh.conf.`date +%Y%m%d` > $config_file
 | 
						|
    else
 | 
						|
       echo "Generating initial configuration file $config_file"
 | 
						|
       echo "Please familiarise yourself with this file before starting RiV-mesh"
 | 
						|
       sh -c "umask 0027 && ${BASE}/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
 | 
						|
      insmod /lib/modules/tun.ko
 | 
						|
    fi
 | 
						|
    
 | 
						|
    #workaround for bin error:
 | 
						|
    #Not multicasting on eth0 due to error: listen tcp [xxxx]:0: bind: cannot assign requested address
 | 
						|
    sysctl net.ipv6.ip_nonlocal_bind=1
 | 
						|
 | 
						|
    # Launch the server in the background.
 | 
						|
    ${BASE}/bin/mesh -useconffile "$config_file" \
 | 
						|
    -httpaddress "http://[::]:19019" \
 | 
						|
    -wwwroot "$BASE/www" \
 | 
						|
    -logto "$BASE/var/log/mesh.log" &
 | 
						|
    
 | 
						|
    return $?
 | 
						|
}
 | 
						|
 | 
						|
stop_service ()
 | 
						|
{
 | 
						|
    pid=`pidof -s mesh`
 | 
						|
    if [ -z "$pid" ]; then
 | 
						|
      echo "mesh was not running"
 | 
						|
      exit 0
 | 
						|
    fi
 | 
						|
    kill "$pid"
 | 
						|
}
 | 
						|
 | 
						|
status_service ()
 | 
						|
{
 | 
						|
 | 
						|
    pid=`pidof -s mesh`
 | 
						|
 | 
						|
    if [[ ! -z "${pid}" ]] && [ -d /proc/${pid} ]; then
 | 
						|
        return 0
 | 
						|
    fi
 | 
						|
    if [[ ! -z "${pid}" ]]; then
 | 
						|
        return 1
 | 
						|
    fi
 | 
						|
    return 3
 | 
						|
}
 | 
						|
 | 
						|
case $1 in
 | 
						|
    start)
 | 
						|
        start_service
 | 
						|
        echo "Running RiV Mesh"
 | 
						|
        exit 0
 | 
						|
        ;;
 | 
						|
    stop)
 | 
						|
        stop_service
 | 
						|
        echo "Stopped RiV Mesh"
 | 
						|
        exit 0
 | 
						|
        ;;
 | 
						|
    status)
 | 
						|
	status_service
 | 
						|
        sts=$?
 | 
						|
        if [ $sts -eq 0 ]; then
 | 
						|
            echo "RiV Mesh is running"
 | 
						|
        else
 | 
						|
            echo "RiV Mesh is not running"
 | 
						|
        fi
 | 
						|
        exit $sts
 | 
						|
        ;;
 | 
						|
 | 
						|
    log)
 | 
						|
        if [ -f $LOG_FILE ];
 | 
						|
        then
 | 
						|
           echo $LOG_FILE
 | 
						|
        fi
 | 
						|
        exit 0
 | 
						|
        ;;
 | 
						|
    *)
 | 
						|
        exit 1
 | 
						|
        ;;
 | 
						|
esac
 |