summaryrefslogtreecommitdiffstats
path: root/security/tripwire/Makefile
blob: 80c83071f0163b0c3f233cae38f33a568b30ee03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# New ports collection makefile for:	tripwire 2.3.1
# Date created:		Tue Mar  6 06:57:58 PST 2001
# Whom:			Cy Schubert <Cy.Schubert@uumail.gov.bc.ca>
#
# $FreeBSD$
#

PORTNAME=	tripwire
PORTVERSION=	2.4.2.2
PORTREVISION=	1
CATEGORIES=	security
MASTER_SITES=	SF/${PORTNAME}/${PORTNAME}-src/${PORTNAME}-${PORTVERSION}
DISTNAME=	${PORTNAME}-${PORTVERSION}-src

MAINTAINER=	cy@FreeBSD.org
COMMENT=	File system security and verification program

LICENSE=	GPLv2
NO_LICENSES_INSTALL=	yes
LATEST_LINK=	${PORTNAME}
MAN5=		twfiles.5 twconfig.5 twpolicy.5
MAN8=		siggen.8 tripwire.8 twadmin.8 twintro.8 twprint.8
WRKSRC=		${WRKDIR}/${PORTNAME}-${PORTVERSION}-src
USE_BZIP2=	yes
GNU_CONFIGURE=	yes
USE_GMAKE=	yes
MAKE_ARGS=	SYSPRE=${ARCH}-unknown-freebsd
IS_INTERACTIVE=	yes
M4=		/usr/bin/m4

# Tripwire database files are stored in TWDB.
TWDB?=		/var/db/tripwire

OPTIONS=	TWCFG_ETC "Put config files in ${ETCDIR}" on \
		TWCFG_TWDB "Put config files in ${TWDB}/etc" off

.include <bsd.port.pre.mk>

.if defined(WITH_TWCFG_ETC) && ${WITH_TWCFG_ETC} == "true" && defined(WITH_TWCFG_TWDB) && ${WITH_TWCFG_TWDB} == "true"
BROKEN=		Must select only one of WITH_TWCFG_ETC or WITH_TWCFG_TWDB
.endif

# Tripwire config files are stored in TWCFG
.if defined(WITH_TWCFG_ETC) && ${WITH_TWCFG_ETC} == "true"
TWCFG?=		${ETCDIR}
.endif
.if defined(WITH_TWCFG_TWDB) && ${WITH_TWCFG_TWDB} == "true"
TWCFG?=		${TWDB}/etc
.endif

.ifndef TWCFG
BROKEN=		TWCFG must be defined
.endif

# Tripwire policy files are stored in TWPOLICY.
TWPOLICY?=	${TWCFG}
# The Tripwire site key files are stored in TWSITEKEYDIR.
TWSITEKEYDIR?=	${TWPOLICY}
# The Tripwire local key files are stored in TWLOCALKEYDIR.
TWLOCALKEYDIR?=	${TWPOLICY}
# Tripwire report files are stored in TWREPORT.
TWREPORT?=	${TWDB}/report
# This sets the default text editor for Tripwire.
TWEDITOR?=	/usr/bin/vi
# This sets the location of the twpol.txt file that is to be installed
TWPOL_TXT?=	${FILESDIR}/twpol.m4
# Other variables that are used, when not package building:
TRIPWIRE_CLOBBER?=	false
TRIPWIRE_PROMPT?=	true
#	If TRIPWIRE_CLOBBER is set to YES, the install script clobbers
#	previously installed config files.
CONFIGURE_ARGS=	--prefix=${PREFIX} --program-transform-name='' --sysconfdir=${TWCFG}

PLIST_SUB+=	TWCFG=${TWCFG} TWDB=${TWDB}
PKGINSTALL=	${WRKDIR}/pkg-install
SUB_FILES=	pkg-deinstall
SUB_LIST=	TWCFG=${TWCFG} TWDB=${TWDB}

pre-configure:
	@ ${M4} -DFREEBSD_VERSION=`${ECHO_CMD} ${OSREL} | ${CUT} -d. -f1` < ${TWPOL_TXT} > ${WRKSRC}/policy/twpol-FreeBSD.txt
	@ ${MV} ${WRKSRC}/src/core/stdcore.h ${WRKSRC}/src/core/stdcore.h.orig
	@ ${SED} 's%^# define CONFIG_FILE_ROOT	"${TWCFG}"%# define CONFIG_FILE_ROOT	"${TWCFG}"%' ${WRKSRC}/src/core/stdcore.h.orig > ${WRKSRC}/src/core/stdcore.h
	@ ${MV} ${WRKSRC}/man/man4/twconfig.4 ${WRKSRC}/man/man5/twconfig.5
	@ ${MV} ${WRKSRC}/man/man4/twpolicy.4 ${WRKSRC}/man/man5/twpolicy.5
	@ ${LN} -s ${WRKSRC}/contrib ${WRKSRC}/install

install-config-files:
	@ ${ECHO_CMD} TWPOLICY=${TWPOLICY} >> ${WRKSRC}/install/install.cfg
	@ ${ECHO_CMD} TWSITEKEYDIR=${TWSITEKEYDIR} >> ${WRKSRC}/install/install.cfg
	@ ${ECHO_CMD} TWLOCALKEYDIR=${TWLOCALKEYDIR} >> ${WRKSRC}/install/install.cfg
	@ ${ECHO_CMD} TWDB=${TWDB} >> ${WRKSRC}/install/install.cfg
	@ ${ECHO_CMD} TWREPORT=${TWREPORT} >> ${WRKSRC}/install/install.cfg
	@ ${ECHO_CMD} TWEDITOR=${TWEDITOR} >> ${WRKSRC}/install/install.cfg
	@ cd ${WRKSRC} && ${LN} -sf install/install.cfg install/install.sh .
.ifdef PACKAGE_BUILDING
	@ cd ${WRKSRC} && PREFIX=${PREFIX} DO_NOT_CONFIG=yes TRIPWIRE_CLOBBER=${TRIPWIRE_CLOBBER} TRIPWIRE_PROMPT="false" ${GMAKE} install-data-hook
.else
	@ cd ${WRKSRC} && PREFIX=${PREFIX} TRIPWIRE_CLOBBER=${TRIPWIRE_CLOBBER} TRIPWIRE_PROMPT=${TRIPWIRE_PROMPT} ${GMAKE} install-data-hook
.endif

make-pkg-install:
	@ ${ECHO_CMD} '#!/bin/sh -' > ${PKGINSTALL}
	@ ${ECHO_CMD} '#' >> ${PKGINSTALL}
	@ ${ECHO_CMD} "# Generated by make-${PKGINSTALL} on `date`" >> ${PKGINSTALL}
	@ ${ECHO_CMD} '#' >> ${PKGINSTALL}
	@ ${ECHO_CMD} 'case $$2 in' >> ${PKGINSTALL}
	@ ${ECHO_CMD} 'POST-INSTALL)	;;' >> ${PKGINSTALL}
	@ ${ECHO_CMD} '*)	exit 0;;' >> ${PKGINSTALL}
	@ ${ECHO_CMD} 'esac' >> ${PKGINSTALL}
	@ ${ECHO_CMD} PACKAGE_INSTALLER=yes >> ${PKGINSTALL}
	@ ${ECHO_CMD} POLICYSRC=/tmp/$$$$.tmp >> ${PKGINSTALL}
	@ ${ECHO_CMD} PREFIX="$(PREFIX)" >> ${PKGINSTALL}
	@ ${ECHO_CMD} DO_NOT_CONFIG=yes >> ${PKGINSTALL}
	@ ${ECHO_CMD} TRIPWIRE_CLOBBER="false" >> ${PKGINSTALL}
	@ ${ECHO_CMD} TRIPWIRE_PROMPT="false" >> ${PKGINSTALL}
	@ ${ECHO_CMD} sysconfdir="$(sysconfdir)" >> ${PKGINSTALL}
	@ ${ECHO_CMD} prefix=${PREFIX} >> ${PKGINSTALL}
	@ ${ECHO_CMD} sysconfdir=${TWCFG} >> ${PKGINSTALL}
	@ ${ECHO_CMD} path_to_vi="/usr/bin/vi" >> ${PKGINSTALL}
	@ ${ECHO_CMD} path_to_sendmail="/usr/sbin/sendmail" >> ${PKGINSTALL}
	@ ${ECHO_CMD} BASE_DIR=${PREFIX}/ >> ${PKGINSTALL}
	@ ${ECHO_CMD} BIN_DIR=${PREFIX}/sbin >> ${PKGINSTALL}
	@ ${CAT} ${WRKSRC}/install/install.cfg >> ${PKGINSTALL}
	@ ${ECHO_CMD} ${CAT} "> /tmp/$$$$.tmp <<'EOF'" >> ${PKGINSTALL}
	@ ${M4} -DFREEBSD_VERSION=`${ECHO_CMD} ${OSREL} | ${CUT} -d. -f1` < ${TWPOL_TXT} >> ${PKGINSTALL}
	@ ${ECHO_CMD} EOF >> ${PKGINSTALL}
	@ ${SED} "/^\. /s/^/: /;/^BASE_DIR=/d;s/BIN_DIR=/: BIN_DIR=/;/^POLICYSRC/d" ${WRKSRC}/install/install.sh >> ${PKGINSTALL}

create-database:
.if !defined(NO_DB_BUILD) && !defined(PACKAGE_BUILDING)
	@ ${MKDIR} -p ${TWCFG} ${TWPOLICY} ${TWSITEKEYDIR} ${TWLOCALKEYDIR} \
		${TWDB} ${TWREPORT}
	@ ${ECHO} Creating tripwire database
	@ cd ${TWCFG} && ${PREFIX}/sbin/tripwire --init
	@ ${ECHO_CMD}
	@ ${ECHO} The tripwire database, configuration file and
	@ ${ECHO} policy file are signed using the local and site keys,
	@ ${ECHO} therefore according to the support staff at
	@ ${ECHO} tripwiresecurity.com, creating a floppy is not necessary.
	
.endif

post-install:	install-config-files create-database make-pkg-install
	
.include <bsd.port.post.mk>
OpenPOWER on IntegriCloud