1#! /bin/sh
2#
3#  This script builds the SnortSam release and debug versions
4#  with the OPSEC libraries from Checkpoint. These have to reside
5#  in the OPSEC subdirectory. You can always adjust the directory
6#  by editing the lines below.
7#
8#  Note: On Linux, the pthread stuff is in the libpthread library.
9#        On FreeBSD, it is in the libc_r library. Now switchable.
10#
11#        Under Solaris, the OPSEC stuff is linked dynamically.
12#        On other platforms, statically.
13
14# *BSD only: uncomment to build with '-lc_r', default is '-lpthread'
15#BSDTHREADLIB='-lc_r'
16
17# OpenBSD only: Default is now the new pf2 plugin.
18# To build the old pf plugin uncomment PFPLUGIN
19#PFPLUGIN="-DUSE_SSP_PF"
20
21
22# ========================
23# snortsam
24SSP_GENERIC_SRC="snortsam.c twofish.c ssp_ciscoacl.c ssp_cisco_nullroute.c ssp_cisco_nullroute2.c ssp_email.c ssp_forward.c ssp_fwexec.c ssp_fwsam.c ssp_netscreen.c ssp_opsec.c ssp_pix.c ssp_snmp_interface_down.c ssp_wgrd.c"
25
26#systype=`uname`
27systype=FreeBSD
28SNORTSAM=../snortsam
29SAMTOOL=../samtool
30
31# samtool
32SAMTOOL_SRC="samtool.c twofish.c"
33
34# OS specific stuff compiles only on these platforms (need headers/libs)
35SSP_LINUX_SRC="ssp_ipchains.c ssp_iptables.c ssp_ebtables.c"
36SSP_OBSD_SRC="ssp_pf.c ssp_pf2.c"
37SSP_BSD_SRC="ssp_ipf.c ssp_ipfw2.c ssp_pf2.c"
38SSP_SUNOS_SRC="ssp_ipf.c"
39
40CFLAGS="-O2 -D${systype}"
41LDFLAGS=
42
43# OS specific flags
44LINUX_CFLAGS=
45LINUX_LDFLAGS="-lpthread"
46OBSD_CFLAGS="-DBSD ${PFPLUGIN}"
47OBSD_LDFLAGS="-lpthread"
48BSD_CFLAGS="-DBSD"
49BSD_LDFLAGS=${BSDTHREADLIB:-"-lpthread"}
50SUNOS_CFLAGS="-DSOLARIS"
51SUNOS_LDFLAGS="-lpthread -lnsl -lsocket -lresolv"
52
53# OPSEC 22 SDK
54OPSEC_CFLAGS="-Iopsec/include/opsec -Iopsec/include -DENABLE_OPSEC"
55OPSEC_LDFLAGS="-lnsl"
56OPSEC_SUNOS_CFLAGS="-I/usr/local/pkg_rel/include -DENABLE_OPSEC"
57OPSEC_SUNOS_LDFLAGS="-L/usr/local/pkg_rel/lib/release.dynamic -lopsec"
58
59
60case "$1" in
61	[oO][pP][sS][eE][cC])
62
63	OPSEC_LIBS="opsec/lib/release.static/libcpcert.a opsec/lib/release.static/libckpssl.a opsec/lib/release.static/libopsec.a opsec/lib/release.static/libckpssl.a opsec/lib/release.static/libasn1cpp.a opsec/lib/release.static/libcpopenssl.a opsec/lib/release.static/libDataStruct.a opsec/lib/release.static/libskey.a opsec/lib/release.static/libDataStruct.a opsec/lib/release.static/libcpcert.a opsec/lib/release.static/liblogfilter.a opsec/lib/release.static/libCPSrvIS.a opsec/lib/release.static/libEncode.a opsec/lib/release.static/libResolver.a opsec/lib/release.static/libAppUtils.a opsec/lib/release.static/libcpca.a opsec/lib/release.static/libCPMIBase501.a opsec/lib/release.static/libCPMIClient501.a opsec/lib/release.static/libcp_policy.a opsec/lib/release.static/libComUtils.a opsec/lib/release.static/libsicauth.a opsec/lib/release.static/libndb.a opsec/lib/release.static/libcpopenssl.a opsec/lib/release.static/libOS.a opsec/lib/release.static/libcpcryptutil.a opsec/lib/release.static/libcpbcrypt.a opsec/lib/release.static/libopsecext.a opsec/lib/release.static/libcpprod50.a opsec/lib/release.static/libckpssl.a opsec/lib/release.static/libEventUtils.a opsec/lib/release.static/libsic.a opsec/lib/release.static/libResolve.a opsec/lib/release.static/libcpprng.a opsec/lib/release.static/libobjlibclient.a opsec/lib/release.static/libasn1cpp.a opsec/lib/release.static/libopsec.a opsec/lib/release.static/libDataStruct.a opsec/lib/release.static/libcpbcrypt.a opsec/lib/release.static/libOS.a opsec/lib/release.static/libcpcert.a opsec/lib/release.static/libcpbcrypt.a opsec/lib/release.static/libComUtils.a opsec/lib/release.static/libOS.a opsec/lib/release.static/libcpca.a opsec/lib/release.static/libcpcert.a opsec/lib/release.static/libcpcryptutil.a opsec/lib/release.static/libskey.a opsec/lib/lib/static/libcpc++-3-libc6.1-2-2.10.0.a"
64
65		echo "-------------------------------------------------------------------------------"
66		echo "Building SnortSam (release) with OPSEC libraries"
67		echo "-------------------------------------------------------------------------------"
68
69		cd src
70		rm -f ${SNORTSAM}
71		rm -f ${SNORTSAM}-debug
72		rm -f *.o
73
74		case "${systype}" in
75			Linux*)
76				gcc ${CFLAGS} ${LINUX_CFLAGS} ${OPSEC_CFLAGS} ${LDFLAGS} ${LINUX_LDFLAGS} ${OPSEC_LDFLAGS} ${OPSEC_LIBS} \
77					${SSP_GENERIC_SRC} ${SSP_LINUX_SRC} -o ${SNORTSAM}
78				;;
79
80			OpenBSD*)
81				#gcc ${CFLAGS} ${OBSD_CFLAGS} ${OPSEC_CFLAGS} ${LDFLAGS} ${OBSD_LDFLAGS} ${OPSEC_LIBS} /usr/lib/libnsl.a -o ${SNORTSAM}
82				gcc ${CFLAGS} ${OBSD_CFLAGS} ${OPSEC_CFLAGS} ${LDFLAGS} ${OBSD_LDFLAGS} ${OPSEC_LDFLAGS} ${OPSEC_LIBS} \
83					${SSP_GENERIC_SRC} ${SSP_OBSD_SRC} -o ${SNORTSAM}
84				;;
85
86			*BSD*)
87				gcc ${CFLAGS} ${BSD_CFLAGS} ${OPSEC_CFLAGS} ${LDFLAGS} ${BSD_LDFLAGS} ${OPSEC_LDFLAGS} ${OPSEC_LIBS} \
88					${SSP_GENERIC_SRC} ${SSP_BSD_SRC} -o ${SNORTSAM}
89				;;
90
91			SunOS*)
92				gcc ${CFLAGS} ${SUNOS_CFLAGS} ${OPSEC_SUNOS_CFLAGS} ${LDFLAGS} ${SUNOS_LDFLAGS} ${OPSEC_SUNOS_LDFLAGS} \
93					${SSP_GENERIC_SRC} ${SSP_SUNOS_SRC} -o ${SNORTSAM}
94				;;
95		esac
96
97
98		echo "-------------------------------------------------------------------------------"
99		echo "Building SnortSam (debug) with OPSEC libraries"
100		echo "-------------------------------------------------------------------------------"
101
102		rm -f *.o
103		CFLAGS="${CFLAGS} -DFWSAMDEBUG"
104		SNORTSAM="${SNORTSAM}-debug"
105
106		case "${systype}" in
107			Linux*)
108				gcc ${CFLAGS} ${LINUX_CFLAGS} ${OPSEC_CFLAGS} ${LDFLAGS} ${LINUX_LDFLAGS} ${OPSEC_LDFLAGS} ${OPSEC_LIBS} \
109					${SSP_GENERIC_SRC} ${SSP_LINUX_SRC} -o ${SNORTSAM}
110				;;
111
112			OpenBSD*)
113				#gcc ${CFLAGS} ${OBSD_CFLAGS} ${OPSEC_CFLAGS} ${LDFLAGS} ${OBSD_LDFLAGS} ${OPSEC_LIBS} /usr/lib/libnsl.a -o ${SNORTSAM}
114				gcc ${CFLAGS} ${OBSD_CFLAGS} ${OPSEC_CFLAGS} ${LDFLAGS} ${OBSD_LDFLAGS} ${OPSEC_LDFLAGS} ${OPSEC_LIBS} \
115					${SSP_GENERIC_SRC} ${SSP_OBSD_SRC} -o ${SNORTSAM}
116				;;
117
118			*BSD*)
119				gcc ${CFLAGS} ${BSD_CFLAGS} ${OPSEC_CFLAGS} ${LDFLAGS} ${BSD_LDFLAGS} ${OPSEC_LDFLAGS} ${OPSEC_LIBS} \
120					${SSP_GENERIC_SRC} ${SSP_BSD_SRC} -o ${SNORTSAM}
121				;;
122
123			SunOS*)
124				gcc ${CFLAGS} ${SUNOS_CFLAGS} ${OPSEC_SUNOS_CFLAGS} ${LDFLAGS} ${SUNOS_LDFLAGS} ${OPSEC_SUNOS_LDFLAGS} \
125					${SSP_GENERIC_SRC} ${SSP_SUNOS_SRC} -o ${SNORTSAM}
126				;;
127		esac
128		cd ..
129		;;
130
131	[Cc][Ll][Ee][Aa][Nn])
132		echo "-------------------------------------------------------------------------------"
133		echo "Cleanup ..."
134		echo "-------------------------------------------------------------------------------"
135
136		cd src
137		rm -f *.o
138		rm -f ${SNORTSAM}
139		rm -f ${SNORTSAM}-debug
140		rm -f ${SAMTOOL}
141		rm -f ${SAMTOOL}-debug
142		cd ..
143	;;
144
145	[Ss][Aa][Mm][Tt][Oo][Oo][Ll])
146		echo "-------------------------------------------------------------------------------"
147		echo "Building samtool (release)"
148		echo "-------------------------------------------------------------------------------"
149
150		cd src
151		rm -f *.o
152		rm -f ${SAMTOOL}
153		rm -f ${SAMTOOL}-debug
154
155		case "${systype}" in
156			Linux*)   gcc ${CFLAGS} ${LINUX_CFLAGS} ${LDFLAGS} ${LINUX_LDFLAGS} ${SAMTOOL_SRC} -o ${SAMTOOL} ;;
157			OpenBSD*) gcc ${CFLAGS} ${OBSD_CFLAGS}  ${LDFLAGS} ${OBSD_LDFLAGS}  ${SAMTOOL_SRC} -o ${SAMTOOL} ;;
158			*BSD*)    gcc ${CFLAGS} ${BSD_CFLAGS}   ${LDFLAGS} ${BSD_LDFLAGS}   ${SAMTOOL_SRC} -o ${SAMTOOL} ;;
159			SunOS)    gcc ${CFLAGS} ${SUNOS_CFLAGS} ${LDFLAGS} ${SUNOS_LDFLAGS} ${SAMTOOL_SRC} -o ${SAMTOOL} ;;
160		esac
161
162		echo "-------------------------------------------------------------------------------"
163		echo "Building samtool (debug)"
164		echo "-------------------------------------------------------------------------------"
165
166		rm -f *.o
167		CFLAGS="${CFLAGS} -DFWSAMDEBUG"
168		SAMTOOL="${SAMTOOL}-debug"
169
170		case "${systype}" in
171			Linux*)   gcc ${CFLAGS} ${LINUX_CFLAGS} ${LDFLAGS} ${LINUX_LDFLAGS} ${SAMTOOL_SRC} -o ${SAMTOOL} ;;
172			OpenBSD*) gcc ${CFLAGS} ${OBSD_CFLAGS}  ${LDFLAGS} ${OBSD_LDFLAGS}  ${SAMTOOL_SRC} -o ${SAMTOOL} ;;
173			*BSD*)    gcc ${CFLAGS} ${BSD_CFLAGS}   ${LDFLAGS} ${BSD_LDFLAGS}   ${SAMTOOL_SRC} -o ${SAMTOOL} ;;
174			SunOS)    gcc ${CFLAGS} ${SUNOS_CFLAGS} ${LDFLAGS} ${SUNOS_LDFLAGS} ${SAMTOOL_SRC} -o ${SAMTOOL} ;;
175		esac
176		cd ..
177	;;
178
179	*)
180		echo "-------------------------------------------------------------------------------"
181		echo "Building SnortSam (release)"
182		echo "-------------------------------------------------------------------------------"
183
184		cd src
185		rm -f *.o
186		rm -f ${SNORTSAM}
187		rm -f ${SNORTSAM}-debug
188
189		case "${systype}" in
190			Linux*)   gcc ${CFLAGS} ${LINUX_CFLAGS} ${LDFLAGS} ${LINUX_LDFLAGS} ${SSP_GENERIC_SRC} ${SSP_LINUX_SRC} -o ${SNORTSAM} ;;
191			OpenBSD*) gcc ${CFLAGS} ${OBSD_CFLAGS}  ${LDFLAGS} ${OBSD_LDFLAGS}  ${SSP_GENERIC_SRC} ${SSP_OBSD_SRC}  -o ${SNORTSAM} ;;
192			*BSD*)    gcc ${CFLAGS} ${BSD_CFLAGS}   ${LDFLAGS} ${BSD_LDFLAGS}   ${SSP_GENERIC_SRC} ${SSP_BSD_SRC}   -o ${SNORTSAM} ;;
193			SunOS*)   gcc ${CFLAGS} ${SUNOS_CFLAGS} ${LDFLAGS} ${SUNOS_LDFLAGS} ${SSP_GENERIC_SRC} ${SSP_SUNOS_SRC} -o ${SNORTSAM} ;;
194		esac
195
196
197		echo "-------------------------------------------------------------------------------"
198		echo "Building SnortSam (debug)"
199		echo "-------------------------------------------------------------------------------"
200
201		rm -f *.o
202		CFLAGS="${CFLAGS} -DFWSAMDEBUG"
203		SNORTSAM="${SNORTSAM}-debug"
204
205		case "${systype}" in
206			Linux*)   gcc ${CFLAGS} ${LINUX_CFLAGS} ${LDFLAGS} ${LINUX_LDFLAGS} ${SSP_GENERIC_SRC} ${SSP_LINUX_SRC} -o ${SNORTSAM} ;;
207			OpenBSD*) gcc ${CFLAGS} ${OBSD_CFLAGS}  ${LDFLAGS} ${OBSD_LDFLAGS}  ${SSP_GENERIC_SRC} ${SSP_OBSD_SRC}  -o ${SNORTSAM} ;;
208			*BSD*)    gcc ${CFLAGS} ${BSD_CFLAGS}   ${LDFLAGS} ${BSD_LDFLAGS}   ${SSP_GENERIC_SRC} ${SSP_BSD_SRC}   -o ${SNORTSAM} ;;
209			SunOS*)   gcc ${CFLAGS} ${SUNOS_CFLAGS} ${LDFLAGS} ${SUNOS_LDFLAGS} ${SSP_GENERIC_SRC} ${SSP_SUNOS_SRC} -o ${SNORTSAM} ;;
210
211		esac
212		cd ..
213		;;
214esac
215
216echo "Done."
217
218