aboutsummaryrefslogtreecommitdiffstats
path: root/security/bro/Makefile
blob: d48a7074f3e1fb3c3ecb110edb29968bcae65270 (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
# Created by: David O'Brien <obrien@FreeBSD.org>
# $FreeBSD$

PORTNAME=   bro
PORTVERSION=    2.6.3
CATEGORIES= security
MASTER_SITES=   https://www.zeek.org/downloads/
DISTFILES=  ${DISTNAME}${EXTRACT_SUFX}

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

LICENSE=    BSD3CLAUSE

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

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

CMAKE_ARGS+=    -DPYTHON_EXECUTABLE:PATH=${PYTHON_CMD}
CXXFLAGS+=  -std=c++11 -Wall

SHEBANG_FILES=  aux/broctl/aux/trace-summary/trace-summary

SUB_FILES=  pkg-message
NO_MTREE=   yes

CMAKE_ARGS+=    -GNinja \
        -D CMAKE_INSTALL_PREFIX:PATH=${PREFIX} \
        -D BRO_ROOT_DIR:PATH=${PREFIX} \
        -D PY_MOD_INSTALL_DIR:PATH=${PREFIX}/lib/broctl \
        -D BRO_SCRIPT_INSTALL_PATH:PATH=${PREFIX}/share/bro \
        -D BRO_ETC_INSTALL_DIR:PATH=${PREFIX}/etc \
        -D BRO_MAN_INSTALL_PATH=${MANPREFIX}/man \
        -D ENABLE_PERFTOOLS:BOOL=false \
        -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}"

BROUSER?=   bro
BROGROUP?=  bro
PLIST_SUB+= ARCH=${ARCH} \
        BROUSER=${BROUSER} \
        BROGROUP=${BROGROUP} \
        LCASE_OPSYS=${OPSYS:tl}

USERS=      ${BROUSER}
GROUPS=     ${BROGROUP}

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

BROCCOLI_DESC=  Build support for libbroccoli communications
BROCTL_DESC=    BroControl support (implies BROCCOLI and IPSUMDUMP)
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 Bro
PERFTOOLS_DESC= Use Perftools to improve memory & CPU usage

BROCTL_IMPLIES=     BROCCOLI IPSUMDUMP

BROCCOLI_LIB_DEPENDS=   libbroccoli.so:security/broccoli
BROCTL_BUILD_DEPENDS=   ${LOCALBASE}/bin/bash:shells/bash \
            ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \
            swig3.0:devel/swig30
BROCTL_RUN_DEPENDS= ${LOCALBASE}/bin/bash:shells/bash \
            ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR}
BROCTL_CMAKE_BOOL=  INSTALL_BROCTL
GEOIP2_LIB_DEPENDS= libmaxminddb.so:net/libmaxminddb
IPSUMDUMP_BUILD_DEPENDS=ipsumdump:net/ipsumdump
IPSUMDUMP_RUN_DEPENDS=  ipsumdump:net/ipsumdump
BROKER_BUILD_DEPENDS=   swig3.0:devel/swig30
BROKER_CMAKE_BOOL=  ENABLE_BROKER
DEBUG_CMAKE_BOOL=   ENABLE_DEBUG
LBL_HF_RUN_DEPENDS= ${LOCALBASE}/bin/hf:sysutils/lbl-hf
LBL_CF_RUN_DEPENDS= ${LOCALBASE}/bin/cf:sysutils/lbl-cf
NETMAP_GH_TUPLE=    bro:bro-netmap:cf88debf487b31ab30dc3b5bac64783b4e49997e:bro_netmap
NETMAP_USE=     GITHUB=nodefault
PERFTOOLS_CMAKE_BOOL=   ENABLE_PERFTOOLS
PERFTOOLS_RUN_DEPENDS=  ${LOCALBASE}/bin/perftools-pprof:devel/google-perftools
PYTHON_BUILD_DEPENDS=   swig3.0:devel/swig30

.include <bsd.port.options.mk>

.if ${PORT_OPTIONS:MBROCTL}
USE_RC_SUBR=    bro
.endif

post-install-BROCTL-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 broctl.cfg networks.cfg node.cfg
    ${MV} ${STAGEDIR}${PREFIX}/etc/${F} ${STAGEDIR}${PREFIX}/etc/${F}.example
.endfor
    ${RM} ${STAGEDIR}${PREFIX}/share/broctl/scripts/broctl-config.sh
    ${LN} -s ../../../spool/broctl-config.sh \
        ${STAGEDIR}${PREFIX}/share/broctl/scripts/broctl-config.sh

post-install:
    ${RM} -r ${STAGEDIR}${PREFIX}/share/bro/cmake

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

post-build-NETMAP-on:
    ${LN} -s ../.build ${WRKSRC}/build
    (cd ${WRKSRC_bro_netmap} && ./configure --bro-dist=${WRKSRC} \
        --install-root=${STAGEDIR}${PREFIX}/lib/bro/plugins && \
        make && make install)

.include <bsd.port.mk>