#!/bin/sh /etc/rc.common
START=99

boot() {
	restart
	return 0
}

APP="ipfilter"
CONFIG_FILE="/etc/vsftpd.conf"

start() {
	enabled=`uci get ftp.config.enable 2>/dev/null`

	#Default Disable Passive Mode
	sed -i -e "s/pasv_enable.*/pasv_enable=NO/g" $CONFIG_FILE 2>/dev/null
	grep -q "pasv_enable=NO" $CONFIG_FILE 2>/dev/null || echo "pasv_enable=NO" >> $CONFIG_FILE 2>/dev/null

	if [[ "$enabled" == "1" ]]; then
		# Update Listen port
		port=`uci get ftp.config.port 2>/dev/null`
		sed -i -e "s/listen_port.*/listen_port=$port/g" $CONFIG_FILE 2>/dev/null
		grep -q "listen_port=$port" $CONFIG_FILE 2>/dev/null || echo "listen_port=$port" >> $CONFIG_FILE 2>/dev/null

		#update Data port
		dataport=`uci get ftp.config.dataport 2>/dev/null`
		sed -i -e "s/ftp_data_port.*/ftp_data_port=$dataport/g" $CONFIG_FILE 2>/dev/null
		grep -q "ftp_data_port=$dataport" $CONFIG_FILE 2>/dev/null || echo "ftp_data_port=$dataport" >> $CONFIG_FILE 2>/dev/null

		#Update Default Path
		default_path=`uci get ftp.config.default_path 2>/dev/null`
		sed -i -e "s#local_root.*#local_root=$default_path#g" $CONFIG_FILE 2>/dev/null
		grep -q "local_root=$default_path" $CONFIG_FILE 2>/dev/null || echo "local_root=$default_path" >> $CONFIG_FILE 2>/dev/null

		pasv_enable=`uci get ftp.config.pasv_enable 2>/dev/null`
		if [[ "$pasv_enable" == "1" ]]; then
			#Update Passive Enable
			sed -i -e "s/pasv_enable.*/pasv_enable=YES/g" $CONFIG_FILE 2>/dev/null
			grep -q "pasv_enable=YES" $CONFIG_FILE 2>/dev/null || echo "pasv_enable=YES" >> $CONFIG_FILE 2>/dev/null

			#Update Passive Min Port
			start_port=`uci get ftp.config.pasv_min_port 2>/dev/null`
			if [ "$start_port" == "<Random>" ] || [ "$start_port" == "" ]; then
				sed -i -e "/pasv_min_port.*/d" $CONFIG_FILE 2>/dev/null
			else
				sed -i -e "s/pasv_min_port.*/pasv_min_port=$start_port/g" $CONFIG_FILE 2>/dev/null
				grep -q "pasv_min_port=$start_port" $CONFIG_FILE 2>/dev/null || echo "pasv_min_port=$start_port" >> $CONFIG_FILE 2>/dev/null
			fi

			#Update Passive Max Port
			end_port=`uci get ftp.config.pasv_max_port 2>/dev/null`
			if [ "$end_port" == "<Random>" ] || [ "$end_port" == "" ]; then
				sed -i -e "/pasv_max_port.*/d" $CONFIG_FILE 2>/dev/null
			else
				sed -i -e "s/pasv_max_port.*/pasv_max_port=$end_port/g" $CONFIG_FILE 2>/dev/null
				grep -q "pasv_max_port=$end_port" $CONFIG_FILE 2>/dev/null || echo "pasv_max_port=$end_port" >> $CONFIG_FILE 2>/dev/null
			fi
		fi

		#Start vsftpd
		/etc/init.d/vsftpd start
	fi
}

stop() {
	#Stop vsftpd
	/etc/init.d/vsftpd stop
}

reload() {
	stop
	start
}
