aboutsummaryrefslogtreecommitdiff
path: root/security/zeek/Makefile
blob: cdb4f82d46bda74aa184dca066cb064e6535813c (plain) (blame)
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
# Created by: David O'Brien <obrien@FreeBSD.org>
# $FreeBSD$

PORTNAME=	zeek
PORTVERSION=	4.0.0
CATEGORIES=	security
MASTER_SITES=	https://old.zeek.org/downloads/
DISTFILES=	${DISTNAME}${EXTRACT_SUFX}

MAINTAINER=	leres@FreeBSD.org
COMMENT=	System for detecting network intruders in real-time

LICENSE=	BSD3CLAUSE

BROKEN_FreeBSD_11_powerpc64=	Does not build: error: zero-size array 'names'
BROKEN_FreeBSD_12_powerpc64=	Does not build: error: zero-size array 'names'

USES=		bison cmake compiler:c++11-lang gettext-runtime ninja perl5 python shebangfix ssl
USE_LDCONFIG=	yes

PORTSCOUT=	limit:0,even

CXXFLAGS_powerpc64=	-mpower8-vector
CMAKE_ARGS+=	-DPYTHON_EXECUTABLE:PATH=${PYTHON_CMD}

SHEBANG_FILES=	auxil/zeekctl/auxil/trace-summary/trace-summary

SUB_FILES=	pkg-message
NO_MTREE=	yes

CMAKE_ARGS+=	-GNinja \
		-D CMAKE_INSTALL_PREFIX:PATH=${PREFIX} \
		-D ZEEK_ROOT_DIR:PATH=${PREFIX} \
		-D PY_MOD_INSTALL_DIR:PATH=${PREFIX}/lib/zeekctl \
		-D ZEEK_SCRIPT_INSTALL_PATH:PATH=${PREFIX}/share/zeek \
		-D ZEEK_ETC_INSTALL_DIR:PATH=${PREFIX}/etc \
		-D ZEEK_MAN_INSTALL_PATH=${MANPREFIX}/man \
		-D ENABLE_PERFTOOLS_DEBUG:BOOL=false \
		-D BinPAC_SKIP_INSTALL:BOOL=true \
		-D INSTALL_AUX_TOOLS:BOOL=true \
		-D BUILD_SHARED_LIBS:BOOL=true \
		-D BUILD_STATIC_BROKER:BOOL=true \
		-D CMAKE_EXE_LINKER_FLAGS="${OPENSSL_LDFLAGS}"

ZEEKUSER?=	zeek
ZEEKGROUP?=	zeek
PLIST_SUB+=	ARCH=${UNAME_M} \
		ZEEKUSER=${ZEEKUSER} \
		ZEEKGROUP=${ZEEKGROUP} \
		LCASE_OPSYS=${OPSYS:tl}

USERS=		${ZEEKUSER}
GROUPS=		${ZEEKGROUP}

OPTIONS_DEFINE= BROKER DEBUG GEOIP2 IPSUMDUMP LBL_CF LBL_HF NETMAP \
		PERFTOOLS ZEEKCTL
OPTIONS_DEFAULT=BROKER GEOIP2 IPSUMDUMP LBL_CF LBL_HF NETMAP ZEEKCTL
OPTIONS_SUB=	yes

BROKER_DESC=	Enable the Broker communication library
GEOIP2_DESC=	Build with GeoIP2 (MaxMindDB) support
IPSUMDUMP_DESC=	Enables traffic summaries
LBL_CF_DESC=	Unix time to formated time/date filter support
LBL_HF_DESC=	Address to hostname filter support
NETMAP_DESC=	Native Netmap Packet IOSource for Zeek
PERFTOOLS_DESC=	Use Perftools to improve memory & CPU usage
ZEEKCTL_DESC=	ZeekControl support (implies BROKER and IPSUMDUMP)

ZEEKCTL_IMPLIES=		BROKER IPSUMDUMP

BROKER_BUILD_DEPENDS=	swig:devel/swig
BROKER_CMAKE_BOOL=	ENABLE_BROKER
DEBUG_CMAKE_BOOL=	ENABLE_DEBUG
GEOIP2_LIB_DEPENDS=	libmaxminddb.so:net/libmaxminddb
IPSUMDUMP_BUILD_DEPENDS=ipsumdump:net/ipsumdump
IPSUMDUMP_RUN_DEPENDS=	ipsumdump:net/ipsumdump
LBL_CF_RUN_DEPENDS=	${LOCALBASE}/bin/cf:sysutils/lbl-cf
LBL_HF_RUN_DEPENDS=	${LOCALBASE}/bin/hf:sysutils/lbl-hf
NETMAP_GH_TUPLE=	zeek:zeek-netmap:v2.0.0:zeek_netmap
NETMAP_USE=		GITHUB=nodefault
PERFTOOLS_BUILD_DEPENDS=${LOCALBASE}/bin/perftools-pprof:devel/google-perftools
PERFTOOLS_CMAKE_BOOL=	ENABLE_PERFTOOLS
PERFTOOLS_RUN_DEPENDS=${LOCALBASE}/bin/perftools-pprof:devel/google-perftools
PYTHON_BUILD_DEPENDS=	swig:devel/swig
ZEEKCTL_BUILD_DEPENDS=	${LOCALBASE}/bin/bash:shells/bash \
			${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \
			swig:devel/swig
ZEEKCTL_CMAKE_BOOL=	INSTALL_ZEEKCTL
ZEEKCTL_RUN_DEPENDS=	${LOCALBASE}/bin/bash:shells/bash \
			${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR}

.include <bsd.port.options.mk>

.if ${PORT_OPTIONS:MZEEKCTL}
USE_RC_SUBR=	zeek
.endif

post-patch:
	${REINPLACE_CMD} -e '\|/usr/local/|s|$$| ${STAGEDIR}${PREFIX}/|' \
	    ${WRKSRC_zeek_netmap}/cmake/FindNetmap.cmake
	

#	# Silence the "use ZeekControl.plugin instead of BroControl.plugin" nag
#	@${REINPLACE_CMD} -e 's/^print/#&/' \
#	    ${WRKSRC}/auxil/zeekctl/BroControl/__init__.py

post-install-ZEEKCTL-on:
	${MKDIR} ${STAGEDIR}${PREFIX}/logs
	${MKDIR} ${STAGEDIR}${PREFIX}/spool/tmp
	${MKDIR} ${STAGEDIR}${PREFIX}/spool/installed-scripts-do-not-touch/auto
	${MKDIR} ${STAGEDIR}${PREFIX}/spool/installed-scripts-do-not-touch/site
.for F in zeekctl.cfg networks.cfg node.cfg
	${MV} ${STAGEDIR}${PREFIX}/etc/${F} ${STAGEDIR}${PREFIX}/etc/${F}.sample
.endfor
	${RM} ${STAGEDIR}${PREFIX}/share/zeekctl/scripts/zeekctl-config.sh
	${LN} -s ../../../spool/zeekctl-config.sh \
	    ${STAGEDIR}${PREFIX}/share/zeekctl/scripts/zeekctl-config.sh

post-install:
	${MV} ${STAGEDIR}${DATADIR}/site/local.zeek \
	    ${STAGEDIR}${DATADIR}/site/local.zeek.sample

pre-install-ZEEKCTL-on:
	${MKDIR} ${STAGEDIR}${PREFIX}/etc/rc.d

post-install-NETMAP-on:
	${MKDIR} ${WRKDIR}/zeek-bin
	${CP} ${STAGEDIR}${PREFIX}/bin/zeek-config ${WRKDIR}/zeek-bin
	${REINPLACE_CMD} -e 's|=/usr/local|=${STAGEDIR}${PREFIX}|' \
	    -e '/^include_dir=/s|:/usr/local|:${STAGEDIR}${PREFIX}|' \
	    ${WRKDIR}/zeek-bin/zeek-config
	cd ${WRKSRC_zeek_netmap} && env PATH=${WRKDIR}/zeek-bin:${PATH} \
	    ./configure --with-netmap=/usr \
	    --install-root=${STAGEDIR}${PREFIX}/lib/zeek/plugins
	cd ${WRKSRC_zeek_netmap}/build && make && make install


.include <bsd.port.pre.mk>

UNAME_M!=	${UNAME} -m

.include <bsd.port.post.mk>