From 979b9b0a6ed5c00d5c0935d41e258d0a22146f0d Mon Sep 17 00:00:00 2001
From: Arnaud Lier <arnaud@lier.link>
Date: Tue, 18 Feb 2025 12:57:41 +0100
Subject: [PATCH] enable passive mode for vsftpd and use secret for user
 password

---
 srcs/.env                                            | 4 ++--
 srcs/docker-compose.yml                              | 4 ++++
 srcs/requirements/bonus/vsftpd/Dockerfile            | 5 ++---
 srcs/requirements/bonus/vsftpd/conf/vsftpd.conf      | 5 ++++-
 srcs/requirements/bonus/vsftpd/tools/setup_vsftpd.sh | 7 +++++++
 5 files changed, 19 insertions(+), 6 deletions(-)
 create mode 100644 srcs/requirements/bonus/vsftpd/tools/setup_vsftpd.sh

diff --git a/srcs/.env b/srcs/.env
index 997a413..7c8c1ef 100644
--- a/srcs/.env
+++ b/srcs/.env
@@ -1,7 +1,7 @@
 DOMAIN_NAME=alier.42.fr
 TITLE=42 News
 ADMIN_EMAIL=alier@student.42mulhouse.fr
-ADMIN_USER=arnaudlier
+ADMIN_USER=alier
 DATA_PATH=/Users/arnaudlier/data
 DB_USER=wordpress
-DB_DB=wordpress
\ No newline at end of file
+DB_DB=wordpress
diff --git a/srcs/docker-compose.yml b/srcs/docker-compose.yml
index af25665..3726988 100644
--- a/srcs/docker-compose.yml
+++ b/srcs/docker-compose.yml
@@ -79,6 +79,10 @@ services:
     ports:
       - 21:21
       - 20:20
+      - 21100-21110:21100-21110
+    secrets:
+      - admin_password
+    env_file: .env
   adminer:
     restart: on-failure
     depends_on:
diff --git a/srcs/requirements/bonus/vsftpd/Dockerfile b/srcs/requirements/bonus/vsftpd/Dockerfile
index 45787a0..7a932df 100644
--- a/srcs/requirements/bonus/vsftpd/Dockerfile
+++ b/srcs/requirements/bonus/vsftpd/Dockerfile
@@ -4,13 +4,12 @@ LABEL org.opencontainers.image.authors="alier@student.42mulhouse.fr"
 
 RUN apk add vsftpd
 
-RUN printf 'Born2beroot\nBorn2beroot' | adduser arnaud -h /var/www/wordpress
-
 #HEALTHCHECK --start-period=5s \
 #    CMD cgi-fcgi -bind -connect 127.0.0.1:9001 || exit 1
 
 COPY conf/vsftpd.conf /etc/vsftpd/vsftpd.conf
+COPY tools/setup_vsftpd.sh /setup_vsftpd.sh
 
 EXPOSE 21
 
-ENTRYPOINT ["vsftpd", "/etc/vsftpd/vsftpd.conf"]
+ENTRYPOINT ["sh", "setup_vsftpd.sh"]
diff --git a/srcs/requirements/bonus/vsftpd/conf/vsftpd.conf b/srcs/requirements/bonus/vsftpd/conf/vsftpd.conf
index 7647e44..ca44124 100644
--- a/srcs/requirements/bonus/vsftpd/conf/vsftpd.conf
+++ b/srcs/requirements/bonus/vsftpd/conf/vsftpd.conf
@@ -117,4 +117,7 @@ listen=YES
 # Make sure, that one of the listen options is commented !!
 #listen_ipv6=YES
 
-pasv_enable=NO
+pasv_enable=YES
+pasv_address=127.0.0.1
+pasv_min_port=21100
+pasv_max_port=21110
diff --git a/srcs/requirements/bonus/vsftpd/tools/setup_vsftpd.sh b/srcs/requirements/bonus/vsftpd/tools/setup_vsftpd.sh
new file mode 100644
index 0000000..c989e56
--- /dev/null
+++ b/srcs/requirements/bonus/vsftpd/tools/setup_vsftpd.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+PASSWORD="$(cat /run/secrets/admin_password)"
+
+printf "$PASSWORD\n$PASSWORD" | adduser "$ADMIN_USER" -h /var/www/wordpress
+
+exec vsftpd /etc/vsftpd/vsftpd.conf