#! /bin/sh

INSTASLL_FLAG=`ls /usr/sbin | grep "lighttpd" |grep -v "lighttpd-arpping" |grep -v "lighttpd-monitor"`
if [ "$INSTASLL_FLAG" == "lighttpd" ];then
exit 1
fi

is_arm_machine=`uname -m |grep arm`

APP_UCLIBC_VERSION=0.9.28

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/opt/bin

APPS_MOUNTED_PATH=`nvram get apps_mounted_path`
APPS_INSTALL_FOLDER=`nvram get apps_install_folder`
APPS_INSTALL_PATH=$APPS_MOUNTED_PATH/$APPS_INSTALL_FOLDER
APPS_DEV=`nvram get apps_dev`
APPS_PATH=${APPS_MOUNTED_PATH:9}

LANGUAGE_R=`nvram get preferred_lang`

PRODUCTID=`nvram get productid`
LAN_IP=`nvram get lan_ipaddr`
MISCR_HTTPPORT_X=`nvram get misc_httpport_x`
MISCR_HTTP_X=`nvram get misc_http_x`
HTTP_PASSWD=`nvram get http_passwd`
WAN_IP=`nvram get wan0_ipaddr`
DDNS_ENABLE_X=`nvram get ddns_enable_x`
DDNS_HOSTNAME_X=`nvram get ddns_hostname_x`
RFW_ENABLE_X=`nvram get fw_enable_x`

ST_WEBDAV_MODE=`nvram get st_webdav_mode`
WEBDAV_HTTP_PORT=`nvram get webdav_http_port`
WEBDAV_HTTPS_PORT=`nvram get webdav_https_port`


DDNS_ENANBLE_X=`nvram get ddns_enable_x`
DDNS_SERVER_X=`nvram get ddns_server_x`
DDNS_HOST_NAME_X=`nvram get ddns_hostname_x`
WEBDAV_SMB_PC=`nvram get webdav_smb_pc`
COMPUTER_NAME=`nvram get computer_name`
ACC_LIST=`nvram get acc_list`
ACC_WEBDAVPROXY=`nvram get acc_webdavproxy`
ST_SAMBA_MODE=`nvram get st_samba_mode`
HTTP_USERNAME=`nvram get http_username`
HTTP_PASSWD=`nvram get http_passwd`
WEBDAVAIDISK=`nvram get webdav_aidisk`
WEBDAVPROXY=`nvram get webdav_proxy`
SHARELINK=`nvram get share_link`
ETHMACADDR=`nvram get et0macaddr`
FIRMVER=`nvram get firmver`
BUILDNO=`nvram get buildno`
MISC_HTTP_X=`nvram get misc_http_x`
MISC_HTTP_PORT=`nvram get misc_httpport_x`
ENABLE_WEBDAV_CAPTCHA=`nvram get enable_webdav_captcha`
ENABLE_WEBDAV_LOCK=`nvram get enable_webdav_lock`
WEBDAV_ACC_LOCK=`nvram get webdav_acc_lock`
WEBDAV_LOCK_INTERVAL=`nvram get webdav_lock_interval`
WEBDAV_LOCK_TIMES=`nvram get webdav_lock_times`
WEBDAV_LAST_LOGININFO=`nvram get webdav_last_login_info`
WEBS_STATE_INFO=`nvram get webs_state_info`
WEBS_STATE_ERROR=`nvram get webs_state_error`

TIME_ZONE_X=`nvram get time_zone_x`
MISC_HTTPS_PORT=`nvram get misc_httpsport_x`
HTTP_ENABLE=`nvram get http_enable`

WEBDAV_PROXY=`nvram get webdav_proxy`
WEBDAV_AIDISK=`nvram get webdav_aidisk`

SHARE_LINK_PARAM=`nvram get share_link_param`
SHARE_LINK_RESULT=`nvram get share_link_result`

SWPJVERNO=`nvram get swpjverno`
EXTENDNO=`nvram get extendno`
ODMPID=`nvram get odmpid`
chmod -R 777 $APPS_INSTALL_PATH/bin/

chmod -R 777 $APPS_INSTALL_PATH/etc

if [ ! -d "/tmp/lighttpd" ]; then
mkdir -p /tmp/lighttpd
fi

if [ ! -d "/tmp/lighttpd/compress" ]; then
mkdir -p /tmp/lighttpd/compress
fi

if [ ! -d "/tmp/lighttpd/uploads" ]; then
mkdir -p /tmp/lighttpd/uploads
fi

if [ ! -d "/tmp/lighttpd/www" ]; then
mkdir -p /tmp/lighttpd/www
fi

chmod -R 777 /tmp/lighttpd
chmod -R 777 /tmp/lighttpd/compress
chmod -R 777 /tmp/lighttpd/uploads
chmod -R 777 /tmp/lighttpd/www

if [ -f "/etc/smb.conf" ];then
cp -f /etc/smb.conf /opt/etc/samba/
fi

case "$1" in
  start)
    #echo -n "Starting DM: "

		#asuslighttpdnum=`ps | grep "asus_lighttpd" | grep -v "$0" | grep -v "grep" | awk '{printf $5}'`
	if [ $WEBDAV_PROXY == 1 ] || [ $WEBDAV_AIDISK == 1 ]; then
		cp -rf /opt/etc/apps_asus_script/smartsync_remove /tmp
		cp -f /opt/etc/samba/openssl.cnf /etc/
		#sh /opt/etc/apps_asus_script/gencert.sh 0x123123
		#cp -f /opt/etc/samba/server.pem /tmp/lighttpd/

		if [ -z "$APPS_MOUNTED_PATH" ]; then
			nvram set apps_state_error=2
			exit 1
		fi

		nvram set webdav_extend_cap=1
		nvram commit
		APP_BIN=$APPS_INSTALL_PATH/bin
		APP_LIB=$APPS_INSTALL_PATH/lib
		APP_ETC=$APPS_INSTALL_PATH/etc

		APP_LINK_DIR=/tmp/opt
		APP_LINK_BIN=$APP_LINK_DIR/bin
		APP_LINK_LIB=$APP_LINK_DIR/lib


		APPS_MOUNTED_TYPE=`mount |grep "/dev/$APPS_DEV on " |awk '{print $5}'`
		if [ "$APPS_MOUNTED_TYPE" != "vfat" ]; then
			if [ ! -L "$APP_LINK_DIR" ]; then
                rm -rf $APP_LINK_DIR
                ln -sf $APPS_INSTALL_PATH $APP_LINK_DIR
        	fi

			if [ ! -f "$APP_LIB/libpcre.so.1" ] && [ ! -f "$APP_LIB/libpcre.so.1.*" ]; then
				ln -sf 	$APP_LIB/libpcre.so.0.0.1 $APP_LIB/libpcre.so.1
			fi
			if [ ! -f "$APP_LIB/libpcre.so.0" ] && [ ! -f "$APP_LIB/libpcre.so.0.0.1" ]; then
				PCER_VER=`ls $APP_LIB/libpcre.so.1.* |awk '{FS=".so.1.";print $2}'`
				ln -sf 	$APP_LIB/libpcre.so.1.$PCER_VER $APP_LIB/libpcre.so.0
			fi
	    	#echo -n "Stopping DM: "
		
			#sqlite3
			ln -sf $APP_LIB/libsqlite3.so.0.8.6 $APP_LIB/libsqlite3.so.0
			ln -sf $APP_LIB/libsqlite3.so.0.8.6 $APP_LIB/libsqlite3.so

			#libsmbclient
			ln -sf $APP_LIB/libsmbclient.so.0 $APP_LIB/libsmbclient.so
		
			# openssl
			#OPENSSL_VER=`ls $APP_LIB/libcrypto.so.* |awk '{FS="libcrypto.so.";print $2}'`
			ln -sf $APP_LIB/libcrypto.so.1.0.0 $APP_LINK_LIB/libcrypto.so.1
			ln -sf $APP_LIB/libcrypto.so.1.0.0 $APP_LINK_LIB/libcrypto.so
			ln -sf $APP_LIB/libssl.so.1.0.0 $APP_LINK_LIB/libssl.so.1
			ln -sf $APP_LIB/libssl.so.1.0.0 $APP_LINK_LIB/libssl.so

			#libcurl
			ln -sf $APP_LIB/libcurl.so.4.2.0 $APP_LINK_LIB/libcurl.so.4
			ln -sf $APP_LIB/libcurl.so.4.2.0 $APP_LINK_LIB/libcurl.so

			killall -9 lighttpd-monitor&
			killall -9 lighttpd&
			killall -9 lighttpd-arpping&
			rm -rf /tmp/lighttpd/lighttpd*

	    	#echo "DM2.0 firewall-start: "
			iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTP_PORT -j ACCEPT
			iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTP_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTP_PORT
			iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTPS_PORT -j ACCEPT
			iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTPS_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTPS_PORT		
		
			iptables -I INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTP_PORT -j ACCEPT
			iptables -t nat -I VSERVER -p tcp -m tcp --dport $WEBDAV_HTTP_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTP_PORT
			iptables -I INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTPS_PORT -j ACCEPT
			iptables -t nat -I VSERVER -p tcp -m tcp --dport $WEBDAV_HTTPS_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTPS_PORT


			#nvram set dm_http_port=$DM_PORT
			#nvram commit

			cd  /opt/bin
		
			./write_webdav_conf
			./lighttpd -Df /tmp/lighttpd.conf &
			sleep 5
			./lighttpd-arpping -f br0 &
			./lighttpd-monitor &
			exit 0
		fi

		# Others files or directories
		objs=`ls -a $APPS_INSTALL_PATH |grep -v ^\.__*`
		for obj in $objs; do
			if [ "$obj" == "." ] || [ "$obj" == ".." ]; then
				continue
			fi

			if [ "$obj" != "bin" ] && [ "$obj" != "lib" ]; then
			ln -sf $APPS_INSTALL_PATH/$obj $APP_LINK_DIR/$obj 
			fi
		done


		# BIN
		objs=`ls -a $APP_BIN`
		# ncurses
		ln -sf $APP_BIN/tic $APP_LINK_BIN/captoinfo
		ln -sf $APP_BIN/tic $APP_LINK_BIN/infotocap
		ln -sf $APP_BIN/tset $APP_LINK_BIN/reset

		for obj in $objs; do
			if [ "$obj" == "." ] || [ "$obj" == ".." ]; then
				continue
			fi

			ln -sf $APP_BIN/$obj $APP_LINK_BIN/$obj 
		done


		# LIB
		objs=`ls -a $APP_LIB`
		# first find the other objs and then do uclibc.
		for obj in $objs; do
			if [ "$obj" == "." ] || [ "$obj" == ".." ]; then
				continue
			fi

			ln -sf $APP_LIB/$obj $APP_LINK_LIB/$obj 
		done

		# openssl
		#OPENSSL_VER=`ls $APP_LIB/libcrypto.so.* |awk '{FS="libcrypto.so.";print $2}'`
		ln -sf $APP_LIB/libcrypto.so.1.0.0 $APP_LINK_LIB/libcrypto.so.1
		ln -sf $APP_LIB/libcrypto.so.1.0.0 $APP_LINK_LIB/libcrypto.so
		ln -sf $APP_LIB/libssl.so.1.0.0 $APP_LINK_LIB/libssl.so.1
		ln -sf $APP_LIB/libssl.so.1.0.0 $APP_LINK_LIB/libssl.so
	
		# libz
		LIBZ_VER=`ls $APP_LIB/libz.so.* |awk '{FS="libz.so.";print $2}'`
		ln -sf $APP_LIB/libz.so.$LIBZ_VER $APP_LINK_LIB/libz.so.1
		ln -sf $APP_LIB/libz.so.$LIBZ_VER $APP_LINK_LIB/libz.so	

		# libxml2
		LIBXML2_VER=`ls $APP_LIB/libxml2.so.* |awk '{FS="libxml2.so.";print $2}'`
		ln -sf $APP_LIB/libxml2.so.$LIBXML2_VER $APP_LINK_LIB/libxml2.so.2
		ln -sf $APP_LIB/libxml2.so.$LIBXML2_VER $APP_LINK_LIB/libxml2.so

		if [ -z "$is_arm_machine" ]; then
			# libuclibc++
			LIBCPLUS_VER=`ls $APP_LIB/libuClibc++-* |awk '{FS="-";print $2}' |awk '{FS=".so";print $1}'`
			ln -sf $APP_LIB/libuClibc++-$LIBCPLUS_VER.so $APP_LINK_LIB/libuClibc++.so.0
			ln -sf $APP_LIB/libuClibc++-$LIBCPLUS_VER.so $APP_LINK_LIB/libuClibc++.so
		fi

		# pcre
		PCRE1_VER=`ls $APP_LIB/libpcre.so.* |awk '{FS="libpcre.so.";print $2}'`
		ln -sf $APP_LIB/libpcre.so.$PCRE1_VER $APP_LINK_LIB/libpcre.so.1
		ln -sf $APP_LIB/libpcre.so.$PCRE1_VER $APP_LINK_LIB/libpcre.so.0
		ln -sf $APP_LIB/libpcre.so.$PCRE1_VER $APP_LINK_LIB/libpcre.so
		PCRE2_VER=`ls $APP_LIB/libpcrecpp.so.* |awk '{FS="libpcrecpp.so.";print $2}'`
		ln -sf $APP_LIB/libpcrecpp.so.$PCRE2_VER $APP_LINK_LIB/libpcrecpp.so.1
		ln -sf $APP_LIB/libpcrecpp.so.$PCRE2_VER $APP_LINK_LIB/libpcrecpp.so.0
		ln -sf $APP_LIB/libpcrecpp.so.$PCRE2_VER $APP_LINK_LIB/libpcrecpp.so
		PCRE3_VER=`ls $APP_LIB/libpcreposix.so.* |awk '{FS="libpcreposix.so.";print $2}'`
		ln -sf $APP_LIB/libpcreposix.so.$PCRE3_VER $APP_LINK_LIB/libpcreposix.so.1
		ln -sf $APP_LIB/libpcreposix.so.$PCRE3_VER $APP_LINK_LIB/libpcreposix.so.0
		ln -sf $APP_LIB/libpcreposix.so.$PCRE3_VER $APP_LINK_LIB/libpcreposix.so

		#sqlite3
		SQLITE_VER=`ls $APP_LIB/libsqlite3.so.* |awk '{FS="libsqlite3.so.";print $2}'`
		ln -sf $APP_LIB/libsqlite3.so.$SQLITE_VER $APP_LINK_LIB/libsqlite3.so.0
		ln -sf $APP_LIB/libsqlite3.so.$SQLITE_VER $APP_LINK_LIB/libsqlite3.so

		#libsmbclient
		ln -sf $APP_LIB/libsmbclient.so.0 $APP_LINK_LIB/libsmbclient.so

		#libcurl
		ln -sf $APP_LIB/libcurl.so.4.2.0 $APP_LINK_LIB/libcurl.so.4
		ln -sf $APP_LIB/libcurl.so.4.2.0 $APP_LINK_LIB/libcurl.so

		killall -9 lighttpd-monitor&
		killall -9 lighttpd&
		killall -9 lighttpd-arpping&
		rm -rf /tmp/lighttpd/lighttpd*

		iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTP_PORT -j ACCEPT
		iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTP_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTP_PORT
		iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTPS_PORT -j ACCEPT
		iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTPS_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTPS_PORT	
		#echo "DM2.0 firewall-start: "
		iptables -I INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTP_PORT -j ACCEPT
		iptables -t nat -I VSERVER -p tcp -m tcp --dport $WEBDAV_HTTP_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTP_PORT
		iptables -I INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTPS_PORT -j ACCEPT
		iptables -t nat -I VSERVER -p tcp -m tcp --dport $WEBDAV_HTTPS_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTPS_PORT
		#nvram set dm_http_port=$DM_PORT
		#nvram commit
		cd  /opt/bin	
		./write_webdav_conf
		./lighttpd -Df /tmp/lighttpd.conf &
		sleep 5
		./lighttpd-arpping -f br0 &
		./lighttpd-monitor &
    	#echo "DM2.0."
	fi
    ;;
  stop)
    #echo -n "Stopping DM: "
	nvram set webdav_extend_cap=0
	nvram commit
	killall -9 lighttpd-monitor&
	killall -9 lighttpd&
	killall -9 lighttpd-arpping&
	rm -rf /tmp/lighttpd/lighttpd*
	iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTP_PORT -j ACCEPT
	iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTP_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTP_PORT
	iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTPS_PORT -j ACCEPT
	iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTPS_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTPS_PORT	
    #echo "DM2.0."
    ;;
  scan)
	if [ $WEBDAV_PROXY == 0 ] && [ $WEBDAV_AIDISK == 0 ]; then
		echo "1+2"
		nvram set webdav_extend_cap=0
		nvram commit
		killall -9 lighttpd-monitor&
		killall -9 lighttpd&
		killall -9 lighttpd-arpping&
		rm -rf /tmp/lighttpd/lighttpd*
		iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTP_PORT -j ACCEPT
		iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTP_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTP_PORT
		iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTPS_PORT -j ACCEPT
		iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTPS_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTPS_PORT
	else
		sh /opt/etc/init.d/S50aicloud start;
		exit;
		lighttpd=`ps | grep "lighttpd" |grep -v "lighttpd-arpping" |grep -v "lighttpd-monitor"|grep -v "asus_lighttpd"|grep -v "grep" |awk '{printf $5}'`
		echo $lighttpd
		if [ "$lighttpd" == "./lighttpd" ]; then
			echo "2"
		else
			echo "3"
			sh /opt/etc/init.d/S50aicloud start;
		fi
	fi
	;;
  force-reload|restart)
    #echo "Restarting DM: "
    sh /opt/etc/init.d/S50aicloud start
    ;;

  firewall-start)
    #echo "DM2.0 firewall-start: "
	iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTP_PORT -j ACCEPT
	iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTP_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTP_PORT
	iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTPS_PORT -j ACCEPT
	iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTPS_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTPS_PORT		

	iptables -I INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTP_PORT -j ACCEPT
	iptables -t nat -I VSERVER -p tcp -m tcp --dport $WEBDAV_HTTP_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTP_PORT
	iptables -I INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTPS_PORT -j ACCEPT
	iptables -t nat -I VSERVER -p tcp -m tcp --dport $WEBDAV_HTTPS_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTPS_PORT
	;;
  firewall-restart)
	iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTP_PORT -j ACCEPT
	iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTP_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTP_PORT
	iptables -D INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTPS_PORT -j ACCEPT
	iptables -t nat -D VSERVER -p tcp -m tcp --dport $WEBDAV_HTTPS_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTPS_PORT	
	
	iptables -I INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTP_PORT -j ACCEPT
	iptables -t nat -I VSERVER -p tcp -m tcp --dport $WEBDAV_HTTP_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTP_PORT
	iptables -I INPUT -p tcp -m tcp -d $LAN_IP --dport $WEBDAV_HTTPS_PORT -j ACCEPT
	iptables -t nat -I VSERVER -p tcp -m tcp --dport $WEBDAV_HTTPS_PORT -j DNAT --to-destination $LAN_IP:$WEBDAV_HTTPS_PORT
    ;;
  lighttpd-restart)
    #echo "Restarting DM firewall: "
	killall -9 lighttpd&

	sleep 2

	cd /opt/bin && ./lighttpd -Df /tmp/lighttpd.conf &
    ;;
esac
