From 05fb603324ea769ed1d1a3a6e3a5fe4749f1c791 Mon Sep 17 00:00:00 2001 From: "Glenn Y. Rolland" Date: Mon, 11 Sep 2017 18:39:02 +0200 Subject: [PATCH] Initial import --- Dockerfile | 8 +++----- Makefile | 21 +++++++++++++++++++++ run.sh | 52 +++++++++++++++++++++++++++++++++++++++++++++------- 3 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 Makefile diff --git a/Dockerfile b/Dockerfile index cb77a75..8b5be67 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,6 @@ -FROM stilliard/pure-ftpd +FROM vimagick/vsftpd -RUN mv run.sh /run-pure-ftpd.sh +# RUN adduser --help --help ADD run.sh /run.sh - - - +CMD /run.sh diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..131e7a0 --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ + +all: build run + +# --build-arg "BUNDLE_BITBUCKET__ORG=$(BUNDLE_BITBUCKET__ORG)" \ + +build: + docker build -t dt-service-ftp . + +run: + docker stop dt-service-ftp || true + docker run --rm \ + --name dt-service-ftp \ + -p 21:21 \ + -p 30000-30009:30000-30009 \ + -e "PUBLICHOST=localhost" \ + -e "VSFTP_USER_1_USERNAME=dt-site" \ + -e "VSFTP_USER_1_PASSWORD=random" \ + -t dt-service-ftp + + + diff --git a/run.sh b/run.sh index c5c8e4a..2a18643 100755 --- a/run.sh +++ b/run.sh @@ -1,11 +1,49 @@ #!/bin/sh -pure-pw useradd dt-site \ - -u 1001 \ - -g 1001 \ - -f /etc/pure-ftpd/passwd/pureftpd.passwd \ - -m \ - -d /sites/dt-site +## Mount directories into /ftp -exec /run-pure-ftpd.sh -c 30 -C 10 -l puredb:/etc/pure-ftpd/pureftpd.pdb -E -j -R -P $PUBLICHOST -p 30000:30059 +vsftp_add_user() { + local username="$1" + local password="$2" + echo "Adding user:$username with password:******" + mkdir -p "/home/$username" + # UID 33 is for www-data in WP + adduser \ + -h "/home/$username" \ + -s /bin/sh \ + -D \ + "$username" + echo "$username:$password" | chpasswd + # GID 33 is for www-data in WP + sed -i "s/^$username:x:[0-9]*:[0-9]*:/$username:x:33:33:/" /etc/passwd + sed -i "s/^$username:x:[0-9]*:/$username:x:33:/" /etc/group + chown "$username:$username" "/home/$username" +} + +vsftp_main() { + + # Create users + idx=0 + while true ; do + idx=$((idx + 1 )) + eval "username=\${VSFTP_USER_${idx}_USERNAME:-}" + eval "password=\${VSFTP_USER_${idx}_PASSWORD:-}" + if [ -z "$username" ]; then break ; fi + vsftp_add_user "$username" "$password" + done + + echo "Starting VSFTP" + exec vsftpd /etc/vsftpd/vsftpd.conf +} + +sed -i \ + "s/^pasv_address=.*$/pasv_address=${VSFTP_HOSTNAME:-}/" \ + "s/^anonymous_enable=.*$/anonymous_enable=NO/" \ + /etc/vsftpd/vsftpd.conf + +{ + echo "log_ftp_protocol=YES" ; +} >> /etc/vsftpd/vsftpd.conf + +vsftp_main