xref: /openbsd/regress/libexec/ftpd/Makefile (revision 20110d46)
1#	$OpenBSD: Makefile,v 1.12 2024/03/05 07:01:40 anton Exp $
2
3.PHONY: setup-ftpd
4
5REGRESS_TARGETS =	run-ftpd-get
6REGRESS_TARGETS +=	run-ftpd-get-active
7REGRESS_TARGETS +=	run-ftpd-put
8REGRESS_TARGETS +=	run-ftpd-put-active
9REGRESS_TARGETS +=	run-ftpd-ls
10REGRESS_TARGETS +=	run-ftpd-nlist
11REGRESS_TARGETS +=	run-ftpd-delete
12REGRESS_TARGETS +=	run-ftpd-mkdir
13REGRESS_TARGETS +=	run-ftpd-rename
14REGRESS_TARGETS +=	run-ftpd-size
15REGRESS_ROOT_TARGETS =	${REGRESS_TARGETS}
16REGRESS_CLEANUP =	cleanup-ftpd
17REGRESS_SETUP =		setup-ftpd
18CLEANFILES =		ftpd.regress ftpd.regress.local
19
20TCPSERVER =		/usr/local/bin/tcpserver
21FTPD ?=			/usr/libexec/ftpd
22
23FTPDIR != getent passwd ftp | cut -d: -f6
24
25.if empty(FTPDIR)
26regress:
27	@echo user ftp is required in /etc/passwd for this regress
28	@echo SKIPPED
29.elif ! exists(${FTPDIR})
30regress:
31	@echo user ftp needs existing home directory ${FTPDIR} for this regress
32	@echo SKIPPED
33.endif
34
35.if ! exists(${TCPSERVER})
36regress:
37	@echo package ucspi-tcp is required for this regress
38	@echo SKIPPED
39.endif
40
41setup-ftpd:
42	${SUDO} pkill tcpserver || true
43	${SUDO} pkill ftpd || true
44	nc 127.0.0.1 21 >/dev/null 2>&1 || true
45	# start ftpd
46	${SUDO} ${TCPSERVER} 127.0.0.1 21 ${KTRACE} ${FTPD} -A & \
47	    timeout=$$(($$(date +%s) + 5)); \
48	    while fstat -p $$! | ! grep -q 'tcp .* 127.0.0.1:21$$'; \
49		do test $$(date +%s) -lt $$timeout || exit 1; done
50	# prepare test files
51	${SUDO} dd if=/dev/random of="${FTPDIR}/ftpd.regress" count=1 bs=1m
52	${SUDO} chown ftp:ftp "${FTPDIR}/ftpd.regress"
53	dd if=/dev/random of="ftpd.regress.local" count=1 bs=1m
54
55run-ftpd-get:
56	ftp_proxy= ftp -a ftp://127.0.0.1/ftpd.regress
57	cmp ${FTPDIR}/ftpd.regress ftpd.regress
58	rm ftpd.regress
59
60run-ftpd-get-active:
61	ftp_proxy= ftp -a -A ftp://127.0.0.1/ftpd.regress
62	cmp ${FTPDIR}/ftpd.regress ftpd.regress
63	rm ftpd.regress
64
65run-ftpd-put:
66	echo put ftpd.regress.local | ftp -a 127.0.0.1
67	cmp ${FTPDIR}/ftpd.regress.local ftpd.regress.local
68	${SUDO} rm ${FTPDIR}/ftpd.regress.local
69
70run-ftpd-put-active:
71	echo put ftpd.regress.local | ftp -a -A 127.0.0.1
72	cmp ${FTPDIR}/ftpd.regress.local ftpd.regress.local
73	${SUDO} rm ${FTPDIR}/ftpd.regress.local
74
75run-ftpd-ls:
76	echo ls | ftp -a 127.0.0.1 | grep -q 'ftpd.regress'
77
78run-ftpd-nlist:
79	echo nlist | ftp -a 127.0.0.1 | grep -q 'ftpd.regress'
80
81run-ftpd-delete:
82	echo delete ftpd.regress | ftp -a 127.0.0.1
83	test ! -f ${FTPDIR}/ftpd.regress
84
85run-ftpd-mkdir:
86	echo mkdir ftpd.regress.dir.create | ftp -a 127.0.0.1
87	test -d ${FTPDIR}/ftpd.regress.dir.create
88	${SUDO} rm -r ${FTPDIR}/ftpd.regress.dir.create
89
90run-ftpd-rename:
91	echo rename ftpd.regress ftpd.regress.new | ftp -a 127.0.0.1
92	test ! -f ${FTPDIR}/ftpd.regress
93	test   -f ${FTPDIR}/ftpd.regress.new
94
95run-ftpd-size:
96	test $$(echo "binary\nsize ftpd.regress" | ftp -a 127.0.0.1 | cut -f 2)\
97	    -eq $$(stat -f %z ${FTPDIR}/ftpd.regress)
98
99cleanup-ftpd:
100	${SUDO} pkill tcpserver || true
101	${SUDO} pkill ftpd || true
102	${SUDO} rm -f ${FTPDIR}/ftpd.regress
103
104.include <bsd.regress.mk>
105