142 lines
5.2 KiB
Bash
142 lines
5.2 KiB
Bash
#!/usr/bin/env bash
|
|
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
|
|
|
# Check if user is root
|
|
if [ $(id -u) != "0" ]; then
|
|
echo "Error: You must be root to run this script!"
|
|
exit 1
|
|
fi
|
|
clear
|
|
echo "+----------------------------------------------------------+"
|
|
echo "| Pureftpd for LNMP, Written by Licess |"
|
|
echo "+----------------------------------------------------------+"
|
|
echo "|This script is a tool to install pureftpd for LNMP |"
|
|
echo "+----------------------------------------------------------+"
|
|
echo "|For more information please visit https://lnmp.org |"
|
|
echo "+----------------------------------------------------------+"
|
|
echo "|Usage: ./pureftpd.sh |"
|
|
echo "+----------------------------------------------------------+"
|
|
cur_dir=$(pwd)
|
|
action=$1
|
|
|
|
. lnmp.conf
|
|
. include/main.sh
|
|
. include/init.sh
|
|
|
|
Get_Dist_Name
|
|
|
|
Install_Pureftpd()
|
|
{
|
|
Press_Install
|
|
|
|
Echo_Blue "Installing dependent packages..."
|
|
if [ "$PM" = "yum" ]; then
|
|
for packages in make gcc gcc-c++ gcc-g77 openssl openssl-devel bzip2;
|
|
do yum -y install $packages; done
|
|
elif [ "$PM" = "apt" ]; then
|
|
apt-get update -y
|
|
for packages in build-essential gcc g++ make openssl libssl-dev bzip2;
|
|
do apt-get --no-install-recommends install -y $packages; done
|
|
fi
|
|
Echo_Blue "Download files..."
|
|
cd ${cur_dir}/src
|
|
Download_Files ${Download_Mirror}/ftp/pure-ftpd/${Pureftpd_Ver}.tar.bz2 ${Pureftpd_Ver}.tar.bz2
|
|
if [ $? -eq 0 ]; then
|
|
echo "Download ${Pureftpd_Ver}.tar.bz2 successfully!"
|
|
else
|
|
Download_Files https://download.pureftpd.org/pub/pure-ftpd/releases/${Pureftpd_Ver}.tar.bz2 ${Pureftpd_Ver}.tar.bz2
|
|
fi
|
|
|
|
Echo_Blue "Installing pure-ftpd..."
|
|
Tarj_Cd ${Pureftpd_Ver}.tar.bz2 ${Pureftpd_Ver}
|
|
./configure --prefix=/usr/local/pureftpd CFLAGS=-O2 --with-puredb --with-quotas --with-cookie --with-virtualhosts --with-diraliases --with-sysquotas --with-ratios --with-altlog --with-paranoidmsg --with-shadow --with-welcomemsg --with-throttling --with-uploadscript --with-language=english --with-rfc2640 --with-ftpwho --with-tls
|
|
|
|
Make_Install
|
|
|
|
Echo_Blue "Copy configure files..."
|
|
mkdir /usr/local/pureftpd/etc
|
|
\cp ${cur_dir}/conf/pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf
|
|
if [ -L /etc/init.d/pureftpd ]; then
|
|
rm -f /etc/init.d/pureftpd
|
|
fi
|
|
\cp ${cur_dir}/init.d/init.d.pureftpd /etc/init.d/pureftpd
|
|
\cp ${cur_dir}/init.d/pureftpd.service /etc/systemd/system/pureftpd.service
|
|
chmod +x /etc/init.d/pureftpd
|
|
touch /usr/local/pureftpd/etc/pureftpd.passwd
|
|
touch /usr/local/pureftpd/etc/pureftpd.pdb
|
|
|
|
StartUp pureftpd
|
|
|
|
cd ..
|
|
rm -rf ${cur_dir}/src/${Pureftpd_Ver}
|
|
|
|
if command -v iptables >/dev/null 2>&1; then
|
|
if [ -s /bin/lnmp ]; then
|
|
iptables -I INPUT 7 -p tcp --dport 20 -j ACCEPT
|
|
iptables -I INPUT 8 -p tcp --dport 21 -j ACCEPT
|
|
iptables -I INPUT 9 -p tcp --dport 20000:30000 -j ACCEPT
|
|
else
|
|
iptables -I INPUT -p tcp --dport 20 -j ACCEPT
|
|
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
|
|
iptables -I INPUT -p tcp --dport 20000:30000 -j ACCEPT
|
|
fi
|
|
if [ "${PM}" = "yum" ]; then
|
|
service iptables save
|
|
service iptables reload
|
|
elif [ "${PM}" = "apt" ]; then
|
|
if [ -s /etc/init.d/netfilter-persistent ]; then
|
|
/etc/init.d/netfilter-persistent save
|
|
/etc/init.d/netfilter-persistent reload
|
|
else
|
|
/etc/init.d/iptables-persistent save
|
|
/etc/init.d/iptables-persistent reload
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if [ ! -s /bin/lnmp ]; then
|
|
\cp ${cur_dir}/conf/lnmp /bin/lnmp
|
|
chmod +x /bin/lnmp
|
|
fi
|
|
id -u www
|
|
if [ $? -ne 0 ]; then
|
|
groupadd www
|
|
useradd -s /sbin/nologin -g www www
|
|
fi
|
|
|
|
if [[ -s /usr/local/pureftpd/sbin/pure-ftpd && -s /usr/local/pureftpd/etc/pure-ftpd.conf && -s /etc/init.d/pureftpd ]]; then
|
|
Echo_Blue "Starting pureftpd..."
|
|
/etc/init.d/pureftpd start
|
|
Echo_Green "+----------------------------------------------------------------------+"
|
|
Echo_Green "| Install Pure-FTPd completed,enjoy it!"
|
|
Echo_Green "| =>use command: lnmp ftp {add|list|del|show} to manage FTP users."
|
|
Echo_Green "+----------------------------------------------------------------------+"
|
|
Echo_Green "| For more information please visit https://lnmp.org"
|
|
Echo_Green "+----------------------------------------------------------------------+"
|
|
else
|
|
Echo_Red "Pureftpd install failed!"
|
|
fi
|
|
}
|
|
|
|
Uninstall_Pureftpd()
|
|
{
|
|
if [ ! -f /usr/local/pureftpd/sbin/pure-ftpd ]; then
|
|
Echo_Red "Pureftpd was not installed!"
|
|
exit 1
|
|
fi
|
|
echo "Stop pureftpd..."
|
|
/etc/init.d/pureftpd stop
|
|
echo "Remove service..."
|
|
Remove_StartUp pureftpd
|
|
echo "Delete files..."
|
|
rm -f /etc/init.d/pureftpd
|
|
rm -rf /usr/local/pureftpd
|
|
echo "Pureftpd uninstall completed."
|
|
}
|
|
|
|
if [ "${action}" = "uninstall" ]; then
|
|
Uninstall_Pureftpd
|
|
else
|
|
Install_Pureftpd 2>&1 | tee /root/pureftpd-install.log
|
|
fi
|