mirror of
https://github.com/monlor/MIXBOX-ARCHIVE.git
synced 2026-03-11 07:51:54 +00:00
153 lines
3.7 KiB
Bash
153 lines
3.7 KiB
Bash
#!/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
|