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