Files
MIXBOX-ARCHIVE/apps/vsftpd/scripts/vsftpd.sh
2020-04-27 09:29:13 +08:00

153 lines
3.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
source /etc/mixbox/bin/base
eval `mbdb export vsftpd`
port=21
FTPUSER=${mbroot}/apps/vsftpd/config/ftpuser.conf
# binname="${appname} ${appname}-ext"
userpath=/etc/mixbox/apps/vsftpd/config/vsftpd.users
configpath=/etc/vsftpd.conf
BINPATH=${mbroot}/apps/${appname}/bin/${appname}
if [ "$entware" = '1' ]; then
configpath=/opt/etc/vsftpd/vsftpd.conf
BINPATH=/opt/sbin/vsftpd
fi
[ ! -d /var/run/vsftpd ] && mkdir -p /var/run/vsftpd
[ -z "$port" ] && port=21
[ -z "$anon_root" ] && anon_root=/var/ftp
add(){
sed -i "/$1/"d /etc/passwd
sed -i "/$1/"d /etc/shadow
#if [ "$4" == '0' ]; then
sshlogin=/bin/false;
#else
# sshlogin=/bin/ash;
#fi
if [ ! -d "$3" ]; then
mkdir -p $3
fi
echo "$1:*:10086:10086:$1:$3:$sshlogin" >> /etc/passwd
echo "$1:*:0:0:99999:7:::" >> /etc/shadow
echo -e "$2\n$2" | passwd $1 > /dev/null 2>&1
}
del(){
sed -i "/^$1/"d /etc/passwd
sed -i "/^$1/"d /etc/shadow
sed -i "/^$1/"d ${userpath} &> /dev/null
}
# init_mount() {
# [ ! -f "${mbroot}/apps/${appname}/config/passwd" ] && cp -rf /etc/passwd ${mbroot}/apps/${appname}/config/passwd
# [ ! -f "${mbroot}/apps/${appname}/config/shadow" ] && cp -rf /etc/shadow ${mbroot}/apps/${appname}/config/shadow
# umountsh /etc/passwd
# umountsh /etc/shadow
# mount --bind ${mbroot}/apps/${appname}/config/passwd /etc/passwd
# mount --bind ${mbroot}/apps/${appname}/config/shadow /etc/shadow
# }
set_config() {
logsh "$service" "加载${appname}设置... "
[ ! -f $FTPUSER ] && logsh "$service" "未配置ftp用户" && exit
cat ${userpath} 2> /dev/null | while read line
do
[ ! -z "${line}" ] && del ${line}
done
cat $FTPUSER | while read line
do
username=`cutsh ${line} 1`
passwd=`cutsh ${line} 2`
ftppath=`cutsh ${line} 3`
echo $username >> ${userpath}
[ ! -z $username ] && add $username $passwd $ftppath
done
if [ "$anon_enable" = "1" ]; then
anon_enable=YES
[ ! -d $anon_root ] && mkdir -p $anon_root
[ ! -d $anon_root/Share ] && mkdir -p $anon_root/Share
chmod 755 $anon_root
dirmod=$(ls -ld $anon_root | cut -d' ' -f1)
[ "$dirmod" == "drwxrwxrwx" ] && logsh "$service" "匿名访问开启失败,此目录不支持!"
chmod 777 $anon_root/Share
del ftp && add ftp 123 $anon_root
else
anon_enable=NO
fi
cp -rf ${mbroot}/apps/${appname}/config/${appname}.conf ${configpath}
echo -e "anonymous_enable=$anon_enable\nanon_root=$anon_root\nlisten_port=${port}" >> ${configpath}
}
start () {
result=$(ps | grep ${mbroot}/apps/${appname}/bin/${appname} | grep -v grep | wc -l)
if [ "$result" != '0' ];then
logsh "$service" "${appname}已经在运行!"
exit 1
fi
logsh "$service" "正在启动${appname}服务... "
if [ ! -f ${mbroot}/apps/${appname}/bin/${appname} ]; then
bincheck ${binname}
if [ $? -eq 0 ]; then
logsh "$service" "安装程序成功!"
else
logsh "$service" "程序安装失败!"
end
fi
fi
# init_mount
set_config
open_port
write_firewall_start
daemon $BINPATH
if [ $? -ne 0 ]; then
logsh "$service" "启动${appname}服务失败!"
else
logsh "$service" "启动${appname}服务完成!"
fi
}
stop () {
logsh "$service" "正在停止${appname}服务... "
close_port
remove_firewall_start
# 删除用户
cat ${userpath} 2> /dev/null | while read line
do
[ ! -z "${line}" ] && del ${line}
done
killall -9 ${appname} &> /dev/null
rm -rf ${configpath}
}
status() {
if [ -n "$(pidof "${BINPATH}")" ]; then
status="运行端口号: ${port}|1"
else
status="未运行|0"
fi
mbdb set $appname.main.status="$status"
}
case "$1" in
start) start ;;
stop) stop ;;
restart) stop; start ;;
reload) close_port && open_port ;;
status) status ;;
esac