summaryrefslogtreecommitdiff
path: root/network/modsecurity-apache/modsecurity-apache.SlackBuild
blob: 807071a71ea4c5ec340d8d3155572ae5b56f179a (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
#!/bin/sh

# Slackware build script for ModSecurity

# Written by pyllyukko

PRGNAM=modsecurity-apache
VERSION=${VERSION:-2.6.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}

CRS_VERSION="2.2.4"

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i486 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
  LIBDIRSUFFIX="64"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

# The package can be verified with Breno Silva Pinto's PGP key (0x6980F8B0)
# If we have GPG installed, we try to verify the signature.
if [ -x "/usr/bin/gpg" -a -x "/usr/bin/gpgv" ]
then
  set +e
  # This will check if we have the correct key in our keyring.
  # For the trustedkeys.gpg, see "man 1 gpgv".
  /usr/bin/gpg --keyring trustedkeys.gpg --no-default-keyring --list-keys 0x6980F8B0 &>/dev/null
  GPG_RET=${?}
  # 2 means we don't have his key, 0 means we do.
  set -e
  # If we have the key and the signature file, we verify the package with GPG
  if [ ${GPG_RET} -eq 0 -a \
       -f "${CWD}/${PRGNAM}_${VERSION}.tar.gz.asc" ]
  then
    /usr/bin/gpgv "${CWD}/${PRGNAM}_${VERSION}.tar.gz.asc"
  fi

  # Verify the Core Rule Set package.
  set +e
  /usr/bin/gpg --keyring trustedkeys.gpg --no-default-keyring --list-keys 0x9624FCD2 &>/dev/null
  GPG_RET=${?}
  set -e
  if [ ${GPG_RET} -eq 0 -a \
       -f "${CWD}/modsecurity-crs_${CRS_VERSION}.tar.gz.asc" ]
  then
    /usr/bin/gpgv "${CWD}/modsecurity-crs_${CRS_VERSION}.tar.gz.asc"
  fi
fi

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf ${PRGNAM}_${VERSION}
tar xvf $CWD/${PRGNAM}_${VERSION}.tar.gz
cd ${PRGNAM}_${VERSION}
tar xvf $CWD/modsecurity-crs_${CRS_VERSION}.tar.gz
chown -R root:root .
find . \
 \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;

# Fix location of http module.
#   It's messy, actually, as the Makefile has a hardcoded libdir and also copies
#   the lib to the httpd/modules directory without using the DESTDIR, really
#   INSTALLing the library even when we only want to create a package :(
sed \
  -e "/^pkglibdir/s|/lib|/lib${LIBDIRSUFFIX}|" \
  -e "s|\$(APXS_MODULES)|\$(DESTDIR)\$(APXS_MODULES)|" \
  -i apache2/Makefile.in
# oh, and since it wanted to install locally, we need to manually create the
#   directory in the package...
mkdir -p $PKG/$(apxs -q LIBEXECDIR)

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --build=$ARCH-slackware-linux

make
make install-strip DESTDIR=$PKG

# It leaves two copies of the library, we'll only need one
rm $PKG/usr/lib${LIBDIRSUFFIX}/*.so

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
  CHANGES LICENSE NOTICE README.TXT README_WINDOWS.TXT authors.txt doc/Reference_Manual.html \
  $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

mkdir -p $PKG/etc/httpd/extra
cat modsecurity.conf-recommended > $PKG/etc/httpd/extra/modsecurity-recommended.conf.new

# The Core Rule Set
mkdir -p ${PKG}/etc/httpd/crs
cp -Rv modsecurity-crs_${CRS_VERSION}/* ${PKG}/etc/httpd/crs
cat modsecurity-crs_${CRS_VERSION}/modsecurity_crs_10_config.conf.example > \
  ${PKG}/etc/httpd/crs/modsecurity_crs_10_config.conf.new

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}