#!/bin/sh /etc/rc.common

START=99
USE_PROCD=1
PROG=/usr/bin/thunder

get_config() {
	config_get_bool enabled $1 enabled 0
	config_get_bool debug $1 debug 0
	config_get port $1 port "5055"
	config_get user $1 user "root"
	config_get auth_password $1 auth_password ''
	config_get config_path $1 config_path "/opt/thunder"
	config_get download_path $1 download_path "/opt/thunder/downloads"
	config_get mount_bind_download_path $1 mount_bind_download_path "/thunder"
}

start_service() {
	config_load thunder
	config_foreach get_config thunder
	[ $enabled -ne 1 ] && return 1

	if [ ! -d "/usr/share/thunder/target/var" ]; then
		path="/usr/share/thunder/target/host/etc"
		mkdir -p $path
		id=$(cat /proc/sys/kernel/random/uuid | cut -c1-7)
		echo "unique=\"synology_${id}_720+\"" >$path/synoinfo.conf
		chmod 755 $path/synoinfo.conf

		path="/usr/share/thunder/target/host/usr/syno/synoman/webman/modules"
		mkdir -p $path
		mkdir -p /usr/syno/synoman/webman/modules
		echo -e '#!/usr/bin/env sh\necho OK' >$path/authenticate.cgi
		chmod 755 $path/authenticate.cgi
	fi

	if [ -f /etc/synoinfo.conf ]; then
		rm /etc/synoinfo.conf
	fi

	if [ -f /usr/syno/synoman/webman/modules/authenticate.cgi ]; then
		rm /usr/syno/synoman/webman/modules/authenticate.cgi
	fi

	if [ ! -d "$config_path" ]; then
		mkdir -p $config_path
	fi

	if [ ! -d "$download_path" ]; then
		mkdir -p $download_path
	fi

	if [ ! -d "$mount_bind_download_path" ]; then
		mkdir -p $mount_bind_download_path
	fi

	if [  -f  "$config_path/packages/pan-xunlei-com/target/version"  ] ; then
		mv $config_path "${config_path}_bak"
	fi
	
	/bin/sh -c "$PROG uninstall  >>/var/log/thunder.log 2>&1"

	if [ ! -d  "$config_path/packages" ] ; then
		mkdir -p $config_path/packages
		chown -R $user:root $config_path
	fi

	if [ ! -d  "/var/packages" ] ; then
		ln -s $config_path/packages  /var/packages
	fi

	if [  ! -f  "/var/packages/pan-xunlei-com/target/version"  ] ; then
		/bin/sh -c "$PROG install --uid $(awk -F: '/'$user'/{print $3}' /etc/passwd)  --gid 0  --config-path $config_path --download-path $download_path --mount-bind-download-path $mount_bind_download_path  >>/var/log/thunder.log 2>&1"
	fi

	if [  -d  "${config_path}_bak" ] ; then
		rm -rf $config_path
		mv "${config_path}_bak" $config_path
	fi

	args="--bind 0.0.0.0:$port"

	if [ -n "$auth_password" ]; then
		args="$args --auth-password $auth_password"
	fi

	if [ $debug -ne 0 ]; then 
		args="$args --debug"
	fi
	
	procd_open_instance
	procd_set_param command /bin/sh -c "$PROG start $args >>/var/log/thunder.log 2>&1"
	procd_set_param stdout 0
	procd_set_param stderr 0
	procd_set_param pidfile /var/run/thunder.pid
	procd_close_instance
}

service_triggers() {
	procd_add_reload_trigger "thunder"
}

reload_service() {
	stop
	for i in $(seq 1 60); do
		if [ -z "$(ps -ef | grep thunder | grep -v grep | grep -v $$ | grep -v '/etc/rc.common' | grep -v '/sbin/service' | grep -v '/sbin/luci-reload')" ]; then
			break
		fi
		sleep 1
	done
	start
}

stop_service() {
	/bin/sh -c "$PROG stop"
}
