diff mbox

vsftpd: Add systemd services

Message ID 1443977143-21369-1-git-send-email-maxime.hadjinlian@gmail.com
State Changes Requested
Headers show

Commit Message

Maxime Hadjinlian Oct. 4, 2015, 4:45 p.m. UTC
The systemd services were taken from Arch Linux's repository:
https://projects.archlinux.org/svntogit/community.git/tree/trunk?h=packages/vsftpd

Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
---
 package/vsftpd/vsftpd-ssl.service  | 10 ++++++++++
 package/vsftpd/vsftpd-ssl.socket   |  9 +++++++++
 package/vsftpd/vsftpd-ssl@.service |  9 +++++++++
 package/vsftpd/vsftpd.mk           | 17 +++++++++++++++++
 package/vsftpd/vsftpd.service      | 11 +++++++++++
 package/vsftpd/vsftpd.socket       |  9 +++++++++
 package/vsftpd/vsftpd@.service     |  8 ++++++++
 7 files changed, 73 insertions(+)
 create mode 100644 package/vsftpd/vsftpd-ssl.service
 create mode 100644 package/vsftpd/vsftpd-ssl.socket
 create mode 100644 package/vsftpd/vsftpd-ssl@.service
 create mode 100644 package/vsftpd/vsftpd.service
 create mode 100644 package/vsftpd/vsftpd.socket
 create mode 100644 package/vsftpd/vsftpd@.service

Comments

Thomas Petazzoni Oct. 10, 2015, 8:46 p.m. UTC | #1
Dear Maxime Hadjinlian,

On Sun,  4 Oct 2015 18:45:43 +0200, Maxime Hadjinlian wrote:
> The systemd services were taken from Arch Linux's repository:
> https://projects.archlinux.org/svntogit/community.git/tree/trunk?h=packages/vsftpd

Can this support be submitted upstream?

> Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>

I've tested this, and it doesn't seem to work here:


         Starting Serial Getty on ttyAMA0...
         Starting Login Service...
systemd[1]: vsftpd@multi-user.service: Failed to run 'start' task: Invalid argument
[FAILED] Failed to start vsftpd per-connection server.
See 'systemctl status vsftpd@multi-user.service' for details.
systemd[1]: vsftpd@multi-user.service: Unit entered failed state.
systemd[1]: vsftpd@multi-user.service: Failed with result 'resources'.
         Starting vsftpd per-connection server...
[  OK  ] Started D-Bus System Message Bus.
         Starting D-Bus System Message Bus...
[  OK  ] Started vsftpd daemon (legacy implicit SSL).
         Starting vsftpd daemon (legacy implicit SSL)...
[FAILED] Failed to start vsftpd per-connection server (legacy implicit SSL).
See 'systemctl status vsftpd-ssl@multi-user.service' for details.
         Starting vsftpd per-connection server (legacy implicit SSL)...


> +define VSFTPD_INSTALL_INIT_SYSTEMD
> +	mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
> +	mkdir -p $(TARGET_DIR)/etc/systemd/system/sockets.target.wants
> +
> +	for f in vsftpd.service vsftpd.socket vsftpd@.service \
> +		vsftpd-ssl.service vsftpd-ssl.socket vsftpd-ssl@.service; do \
> +		$(INSTALL) -D -m 644 package/vsftpd/$$f \
> +			$(TARGET_DIR)/usr/lib/systemd/system/$$f; \
> +		wanted_by="multi-user.target.wants"; \
> +		if [ $${f##*.} = "socket" ]; then \
> +			wanted_by="sockets.target.wants"; \
> +		fi; \
> +		ln -sf ../../../../usr/lib/systemd/system/$$f \
> +			$(TARGET_DIR)/etc/systemd/system/$$wanted_by/$$f; \
> +	done

You could also write this in pure make, though I don't know if it's
really more readable:

	$(foreach f,$(wildcard package/vsftpd/*.service),\
		$(INSTALL) -D -m 644 $(f) $(TARGET_DIR)/usr/lib/systemd/system/$(notdir $(f)) && \
		ln -sf ../../../../usr/lib/systemd/system/$(notdir $(f)) \
			$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/$(notdir $(f))$(sep))
	$(foreach f,$(wildcard package/vsftpd/*.socket),\
		$(INSTALL) -D -m 644 $(f) $(TARGET_DIR)/usr/lib/systemd/system/$(notdir $(f)) && \
		ln -sf ../../../../usr/lib/systemd/system/$(notdir $(f)) \
			$(TARGET_DIR)/etc/systemd/system/sockets.target.wants/$(notdir $(f))$(sep))

Best regards,

Thomas
Maxime Hadjinlian Oct. 12, 2015, 9:28 a.m. UTC | #2
Hello Thomas, all

On Sat, Oct 10, 2015 at 10:46 PM, Thomas Petazzoni <
thomas.petazzoni@free-electrons.com> wrote:

> Dear Maxime Hadjinlian,
>
> On Sun,  4 Oct 2015 18:45:43 +0200, Maxime Hadjinlian wrote:
> > The systemd services were taken from Arch Linux's repository:
> >
> https://projects.archlinux.org/svntogit/community.git/tree/trunk?h=packages/vsftpd
>
> Can this support be submitted upstream?
>
I will try, I've asked how to do it on the IRC channel.

>
> > Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
>
> I've tested this, and it doesn't seem to work here:
>
>
>          Starting Serial Getty on ttyAMA0...
>          Starting Login Service...
> systemd[1]: vsftpd@multi-user.service: Failed to run 'start' task:
> Invalid argument
> [FAILED] Failed to start vsftpd per-connection server.
> See 'systemctl status vsftpd@multi-user.service' for details.
> systemd[1]: vsftpd@multi-user.service: Unit entered failed state.
> systemd[1]: vsftpd@multi-user.service: Failed with result 'resources'.
>          Starting vsftpd per-connection server...
> [  OK  ] Started D-Bus System Message Bus.
>          Starting D-Bus System Message Bus...
> [  OK  ] Started vsftpd daemon (legacy implicit SSL).
>          Starting vsftpd daemon (legacy implicit SSL)...
> [FAILED] Failed to start vsftpd per-connection server (legacy implicit
> SSL).
> See 'systemctl status vsftpd-ssl@multi-user.service' for details.
>          Starting vsftpd per-connection server (legacy implicit SSL)...
>
> I'll take a look at that.

>
> > +define VSFTPD_INSTALL_INIT_SYSTEMD
> > +     mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
> > +     mkdir -p $(TARGET_DIR)/etc/systemd/system/sockets.target.wants
> > +
> > +     for f in vsftpd.service vsftpd.socket vsftpd@.service \
> > +             vsftpd-ssl.service vsftpd-ssl.socket vsftpd-ssl@.service;
> do \
> > +             $(INSTALL) -D -m 644 package/vsftpd/$$f \
> > +                     $(TARGET_DIR)/usr/lib/systemd/system/$$f; \
> > +             wanted_by="multi-user.target.wants"; \
> > +             if [ $${f##*.} = "socket" ]; then \
> > +                     wanted_by="sockets.target.wants"; \
> > +             fi; \
> > +             ln -sf ../../../../usr/lib/systemd/system/$$f \
> > +                     $(TARGET_DIR)/etc/systemd/system/$$wanted_by/$$f; \
> > +     done
>
> You could also write this in pure make, though I don't know if it's
> really more readable:
>
>         $(foreach f,$(wildcard package/vsftpd/*.service),\
>                 $(INSTALL) -D -m 644 $(f)
> $(TARGET_DIR)/usr/lib/systemd/system/$(notdir $(f)) && \
>                 ln -sf ../../../../usr/lib/systemd/system/$(notdir $(f)) \
>
> $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/$(notdir
> $(f))$(sep))
>         $(foreach f,$(wildcard package/vsftpd/*.socket),\
>                 $(INSTALL) -D -m 644 $(f)
> $(TARGET_DIR)/usr/lib/systemd/system/$(notdir $(f)) && \
>                 ln -sf ../../../../usr/lib/systemd/system/$(notdir $(f)) \
>
> $(TARGET_DIR)/etc/systemd/system/sockets.target.wants/$(notdir $(f))$(sep))
>
> I am cleary more of a shel script guy, so I prefer the shell script way,
but if the make way is preferred, I'll adapt :).

> Best regards,
>
> Thomas
> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com
>
diff mbox

Patch

diff --git a/package/vsftpd/vsftpd-ssl.service b/package/vsftpd/vsftpd-ssl.service
new file mode 100644
index 0000000..3343bc9
--- /dev/null
+++ b/package/vsftpd/vsftpd-ssl.service
@@ -0,0 +1,10 @@ 
+[Unit]
+Description=vsftpd daemon (legacy implicit SSL)
+
+[Service]
+ExecStart=/usr/bin/vsftpd -oimplicit_ssl=yes
+ExecReload=/bin/kill -HUP $MAINPID
+KillMode=process
+
+[Install]
+WantedBy=multi-user.target
diff --git a/package/vsftpd/vsftpd-ssl.socket b/package/vsftpd/vsftpd-ssl.socket
new file mode 100644
index 0000000..b18b639
--- /dev/null
+++ b/package/vsftpd/vsftpd-ssl.socket
@@ -0,0 +1,9 @@ 
+[Unit]
+Conflicts=vsftpd.service
+
+[Socket]
+ListenStream=990
+Accept=yes
+
+[Install]
+WantedBy=sockets.target
diff --git a/package/vsftpd/vsftpd-ssl@.service b/package/vsftpd/vsftpd-ssl@.service
new file mode 100644
index 0000000..8bcf78e
--- /dev/null
+++ b/package/vsftpd/vsftpd-ssl@.service
@@ -0,0 +1,9 @@ 
+[Unit]
+Description=vsftpd per-connection server (legacy implicit SSL)
+
+[Service]
+ExecStart=-/usr/bin/vsftpd -oimplicit_ssl=yes
+ExecReload=/bin/kill -HUP $MAINPID
+StandardInput=socket
+StandardOutput=socket
+StandardError=syslog
diff --git a/package/vsftpd/vsftpd.mk b/package/vsftpd/vsftpd.mk
index 1e48264..823ad66 100644
--- a/package/vsftpd/vsftpd.mk
+++ b/package/vsftpd/vsftpd.mk
@@ -47,6 +47,23 @@  define VSFTPD_INSTALL_INIT_SYSV
 	$(INSTALL) -D -m 755 package/vsftpd/S70vsftpd $(TARGET_DIR)/etc/init.d/S70vsftpd
 endef
 
+define VSFTPD_INSTALL_INIT_SYSTEMD
+	mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
+	mkdir -p $(TARGET_DIR)/etc/systemd/system/sockets.target.wants
+
+	for f in vsftpd.service vsftpd.socket vsftpd@.service \
+		vsftpd-ssl.service vsftpd-ssl.socket vsftpd-ssl@.service; do \
+		$(INSTALL) -D -m 644 package/vsftpd/$$f \
+			$(TARGET_DIR)/usr/lib/systemd/system/$$f; \
+		wanted_by="multi-user.target.wants"; \
+		if [ $${f##*.} = "socket" ]; then \
+			wanted_by="sockets.target.wants"; \
+		fi; \
+		ln -sf ../../../../usr/lib/systemd/system/$$f \
+			$(TARGET_DIR)/etc/systemd/system/$$wanted_by/$$f; \
+	done
+endef
+
 define VSFTPD_INSTALL_TARGET_CMDS
 	$(INSTALL) -D -m 755 $(@D)/vsftpd $(TARGET_DIR)/usr/sbin/vsftpd
 	test -f $(TARGET_DIR)/etc/vsftpd.conf || \
diff --git a/package/vsftpd/vsftpd.service b/package/vsftpd/vsftpd.service
new file mode 100644
index 0000000..cc7645f
--- /dev/null
+++ b/package/vsftpd/vsftpd.service
@@ -0,0 +1,11 @@ 
+[Unit]
+Description=vsftpd daemon
+After=network.target
+
+[Service]
+ExecStart=/usr/bin/vsftpd
+ExecReload=/bin/kill -HUP $MAINPID
+KillMode=process
+
+[Install]
+WantedBy=multi-user.target
diff --git a/package/vsftpd/vsftpd.socket b/package/vsftpd/vsftpd.socket
new file mode 100644
index 0000000..cdc0d33
--- /dev/null
+++ b/package/vsftpd/vsftpd.socket
@@ -0,0 +1,9 @@ 
+[Unit]
+Conflicts=vsftpd.service
+
+[Socket]
+ListenStream=21
+Accept=yes
+
+[Install]
+WantedBy=sockets.target
diff --git a/package/vsftpd/vsftpd@.service b/package/vsftpd/vsftpd@.service
new file mode 100644
index 0000000..81e1429
--- /dev/null
+++ b/package/vsftpd/vsftpd@.service
@@ -0,0 +1,8 @@ 
+[Unit]
+Description=vsftpd per-connection server
+
+[Service]
+ExecStart=-/usr/bin/vsftpd
+ExecReload=/bin/kill -HUP $MAINPID
+StandardInput=socket
+StandardError=syslog