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