|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +FTP_USER=${FTP_USER:-user} |
| 4 | +FTP_PASS=${FTP_PASS:-pass} |
| 5 | +FTP_LOGGING=${FTP_LOGGING:-NO} |
| 6 | + |
| 7 | +# Prepare user and directory |
| 8 | +addgroup -g 1212 $FTP_USER |
| 9 | +adduser -D -h /home/vsftpd/$FTP_USER -s /bin/false -G $FTP_USER -u 1212 $FTP_USER |
| 10 | +echo "$FTP_USER:$FTP_PASS" | /usr/sbin/chpasswd |
| 11 | +chown -R $FTP_USER:$FTP_USER /home/vsftpd/$FTP_USER |
| 12 | + |
| 13 | +# Prepare config file |
| 14 | +CONFIG_FILE=/etc/vsftpd/vsftpd.conf |
| 15 | + |
| 16 | +# Disable logging if FTP_LOGGING is not YES |
| 17 | +if [ "$FTP_LOGGING" != "YES" ]; then |
| 18 | + sed -i 's/^xferlog_enable=.*/xferlog_enable=NO/' "$CONFIG_FILE" |
| 19 | + sed -i 's/^log_ftp_protocol=.*/log_ftp_protocol=NO/' "$CONFIG_FILE" |
| 20 | +fi |
| 21 | + |
| 22 | +# Copy environment variables starting with VSFTPD_ and append them to CONFIG_FILE file |
| 23 | +for var in $(env | grep '^VSFTPD_'); do |
| 24 | + name=$(echo "$var" | awk -F= '{print $1}') |
| 25 | + value=$(echo "$var" | awk -F= '{print $2}') |
| 26 | + |
| 27 | + echo "${name#VSFTPD_}=$value" >> "$CONFIG_FILE" |
| 28 | +done |
| 29 | + |
| 30 | +cat << TXT |
| 31 | +******************************************************* |
| 32 | +* Server configuration * |
| 33 | +******************************************************* |
| 34 | +TXT |
| 35 | +cat "$CONFIG_FILE" |
| 36 | +cat << TXT |
| 37 | +******************************************************* |
| 38 | +TXT |
| 39 | + |
| 40 | +# Start logging if FTP_LOGGING is YES |
| 41 | +if [ "$FTP_LOGGING" = "YES" ]; then |
| 42 | + echo "Enabling logging" |
| 43 | + |
| 44 | + LOG_FILE=`grep ^vsftpd_log_file $CONFIG_FILE | cut -d= -f2` |
| 45 | + touch $LOG_FILE |
| 46 | + tail -f $LOG_FILE >> /dev/stdout & |
| 47 | +fi |
| 48 | + |
| 49 | +# Run vsftpd |
| 50 | +exec /usr/sbin/vsftpd $CONFIG_FILE |
0 commit comments