# $Id$ NAME = rcynic BIN = ${NAME} SRC = ${NAME}.c OBJ = ${NAME}.o GEN = defstack.h OBJS = ${OBJ} bio_f_linebreak.o CFLAGS = @CFLAGS@ -Wall -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror-implicit-function-declaration LDFLAGS = @LDFLAGS@ @LD_STATIC_FLAG@ LIBS = @LIBS@ AWK = @AWK@ SORT = @SORT@ PYTHON = @PYTHON@ RRDTOOL = @RRDTOOL@ INSTALL = @INSTALL@ abs_top_srcdir = @abs_top_srcdir@ abs_top_builddir = @abs_top_builddir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localstatedir = @localstatedir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ sysconfdir = @sysconfdir@ abs_builddir = @abs_builddir@ abs_top_srcdir = @abs_top_srcdir@ abs_top_builddir = @abs_top_builddir@ srcdir = @srcdir@ RCYNIC_BIN_RCYNIC = @RCYNIC_BIN_RCYNIC@ RCYNIC_CONF_DATA = @RCYNIC_CONF_DATA@ RCYNIC_CONF_FILE = @RCYNIC_CONF_FILE@ RCYNIC_CONF_RSYNC = @RCYNIC_CONF_RSYNC@ RCYNIC_CONF_TA_DIR = @RCYNIC_CONF_TA_DIR@ RCYNIC_CRON_USER = @RCYNIC_CRON_USER@ RCYNIC_DATA_DIR = ${RCYNIC_DIR}/data RCYNIC_DIR = @RCYNIC_DIR@ RCYNIC_DIRS = ${RCYNIC_TA_DIR} ${RCYNIC_JAIL_DIRS} ${RCYNIC_DATA_DIR} ${RPKIRTR_DIR} ${RPKIRTR_DIR}/sockets RCYNIC_GECOS = RPKI Validation System RCYNIC_GROUP = rcynic RCYNIC_HTML_DIR = @RCYNIC_HTML_DIR@ RCYNIC_INSTALL_TARGETS = @RCYNIC_INSTALL_TARGETS@ RCYNIC_JAIL_DIRS = @RCYNIC_JAIL_DIRS@ RCYNIC_STATIC_RSYNC = @RCYNIC_STATIC_RSYNC@ RCYNIC_TA_DIR = @RCYNIC_TA_DIR@ RCYNIC_USER = rcynic RPKIRTR_DIR = ${RCYNIC_DIR}/rpki-rtr RPKIRTR_GECOS = RPKI router server RPKIRTR_GROUP = rpkirtr RPKIRTR_MODE = 775 RPKIRTR_USER = rpkirtr SCRIPTS = rcynic-text rcynic-html rcynic-svn validation_status rcynic-cron all: ${BIN} ${RCYNIC_STATIC_RSYNC} clean: if test -r static-rsync/Makefile; then cd static-rsync; ${MAKE} $@; fi rm -f ${BIN} ${OBJS} ${OBJ}: ${SRC} ${GEN} ${BIN}: ${OBJS} ${CC} ${CFLAGS} -o $@ ${OBJS} ${LDFLAGS} ${LIBS} ${GEN}: ${SRC} ${PYTHON} ${abs_top_srcdir}/buildtools/defstack.py ${SRC} >$@.tmp mv $@.tmp $@ tags: TAGS TAGS: ${SRC} ${GEN} etags ${SRC} ${GEN} test: ${BIN} if test -r rcynic.conf; \ then \ ./${BIN} -j 0 && \ test -r rcynic.xml && \ echo && \ ./rcynic-text rcynic.xml; \ else \ echo No rcynic.conf, skipping test; \ fi uninstall deinstall: @echo Sorry, automated deinstallation of rcynic is not implemented yet distclean: clean if test -r static-rsync/Makefile; then cd static-rsync; ${MAKE} $@; fi rm -f Makefile static-rsync/rsync: @echo "Building static rsync for use in chroot jail" cd static-rsync; ${MAKE} all install: all ${RCYNIC_INSTALL_TARGETS} install-always: \ install-directories install-scripts install-rcynic install-rcynic-conf install-postconf: \ install-user-and-group install-directory-ownership install-crontab install-jailed: \ install-static-rsync install-shared-libraries install-rc-scripts install-directories: ${RCYNIC_DIRS} ${RCYNIC_DIRS} ${DESTDIR}${bindir} ${DESTDIR}${sysconfdir}: ${INSTALL} -v -d $@ install-directory-ownership: ${RCYNIC_DATA_DIR} ${RPKIRTR_DIR} ${RPKIRTR_DIR}/sockets chown ${RCYNIC_USER}:${RCYNIC_GROUP} ${RCYNIC_DATA_DIR} ${RPKIRTR_DIR} chown ${RPKIRTR_USER}:${RCYNIC_GROUP} ${RPKIRTR_DIR}/sockets chmod ${RPKIRTR_MODE} ${RPKIRTR_DIR}/sockets install-rcynic-conf: ${RCYNIC_CONF_FILE} ${RCYNIC_CONF_FILE}: @echo @echo Found no ${RCYNIC_CONF_FILE}, creating basic config and installing default trust anchor locators. @echo You might want to edit this. @echo ${INSTALL} -v -d ${RCYNIC_TA_DIR} ${INSTALL} -v -p -m 444 sample-trust-anchors/*.tal ${RCYNIC_TA_DIR} @echo > $@.tmp '# Basic rcynic configuration file with default trust anchors.' @echo >>$@.tmp '# See documentation for details.' @echo >>$@.tmp '' @echo >>$@.tmp '[rcynic]' @echo >>$@.tmp 'rsync-program = ${RCYNIC_CONF_RSYNC}' @echo >>$@.tmp 'authenticated = ${RCYNIC_CONF_DATA}/authenticated' @echo >>$@.tmp 'unauthenticated = ${RCYNIC_CONF_DATA}/unauthenticated' @echo >>$@.tmp 'xml-summary = ${RCYNIC_CONF_DATA}/rcynic.xml' @echo >>$@.tmp 'jitter = 600' @echo >>$@.tmp 'max-parallel-fetches = 8' @echo >>$@.tmp 'use-syslog = true' @echo >>$@.tmp 'log-level = log_usage_err' @echo >>$@.tmp 'trust-anchor-directory = ${RCYNIC_CONF_TA_DIR}' @chmod 444 $@.tmp @mv -f $@.tmp $@ install-rcynic: ${RCYNIC_BIN_RCYNIC} ${RCYNIC_BIN_RCYNIC}: ${BIN} ${INSTALL} -p -m 555 ${BIN} $@ install-static-rsync: ${RCYNIC_DIR}/bin/rsync ${RCYNIC_DIR}/bin/rsync: static-rsync/rsync ${INSTALL} -p -m 555 static-rsync/rsync $@ install-scripts: \ ${DESTDIR}${bindir} \ ${DESTDIR}${bindir}/rcynic-text \ ${DESTDIR}${bindir}/rcynic-html \ ${DESTDIR}${bindir}/rcynic-svn \ ${DESTDIR}${bindir}/rcynic-cron \ ${DESTDIR}${bindir}/validation_status ${DESTDIR}${bindir}/rcynic-text: rcynic-text ${INSTALL} -p -m 555 rcynic-text $@ ${DESTDIR}${bindir}/rcynic-html: rcynic-html ${INSTALL} -p -m 555 rcynic-html $@ ${DESTDIR}${bindir}/rcynic-svn: rcynic-svn ${INSTALL} -p -m 555 rcynic-svn $@ ${DESTDIR}${bindir}/rcynic-cron: rcynic-cron ${INSTALL} -p -m 555 rcynic-cron $@ ${DESTDIR}${bindir}/validation_status: validation_status ${INSTALL} -p -m 555 validation_status $@ .FORCE: install-crontab: .FORCE @if test "X`/usr/bin/crontab -l -u ${RCYNIC_CRON_USER} 2>/dev/null`" != "X"; \ then \ echo "${RCYNIC_CRON_USER} already has a crontab, leaving it alone"; \ else \ echo "Setting up ${RCYNIC_CRON_USER}'s crontab to run rcynic-cron script"; \ ${AWK} -v t=`hexdump -n 2 -e '"%u\n"' /dev/random` '\ BEGIN {printf "MAILTO=root\n%u * * * *\texec ${bindir}/rcynic-cron\n", t % 60}' | \ /usr/bin/crontab -u ${RCYNIC_CRON_USER} -; \ fi # Platform-specific rules below here. @RCYNIC_MAKE_RULES@