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