Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 25 additions & 2 deletions src/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
#!/bin/sh
FTP_DATA=/home/$FTP_USER
FTP_GROUP=$( getent group "$GID" | awk -F ':' '{print $1}' )
VSFTPD_CONF=/etc/vsftpd.conf

if test -z "$FTP_GROUP"; then
FTP_GROUP=$FTP_USER
addgroup -g "$GID" -S "$FTP_GROUP"
FTP_GROUP=$FTP_USER
addgroup -g "$GID" -S "$FTP_GROUP"
fi

adduser -D -G "$FTP_GROUP" -h "$FTP_DATA" -s "/bin/false" -u "$UID" "$FTP_USER"
Expand All @@ -13,6 +14,28 @@ mkdir -p $FTP_DATA
chown -R "$FTP_USER:$FTP_GROUP" "$FTP_DATA"
echo "$FTP_USER:$FTP_PASS" | /usr/sbin/chpasswd

env | grep -q '^VSFTPD_' && echo "Updating ${VSFTPD_CONF} from environment"
env \
| grep '^VSFTPD_' \
| sed -e 's/^VSFTPD_//' \
| while read envvar; do
varname="$( echo "$envvar" | cut -d= -f 1 )"
value="$( echo "$envvar" | cut -d= -f 2- )"

if grep -q -e "^${varname}[[:space:]]*=" "$VSFTPD_CONF"; then
old_value="$(grep -e "^${varname}[[:space:]]*=" "$VSFTPD_CONF" | sed -re 's/^[^=]+=//' | head -1 )"
if [ "$old_value" = "$value" ]; then
echo "Unchanged $envvar, not updating"
else
echo "Updating $envvar"
sed -ri "s/^${varname}[[:space:]]*=.*/${varname}=${value}/" "$VSFTPD_CONF"
fi
else
echo "Adding $envvar"
echo "${varname}=${value}" >>"$VSFTPD_CONF"
fi
done

sed -i -r "s/0.0.0.0/$PUBLIC_IP/g" /etc/vsftpd.conf

touch /var/log/vsftpd.log
Expand Down