Ticket #42531: Portfile-snort.diff

File Portfile-snort.diff, 11.1 KB (added by Schamschula (Marius Schamschula), 10 years ago)
  • Portfile

    old new  
     1# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
    12# $Id: Portfile 125738 2014-09-25 14:43:03Z mf2k@macports.org $
    23
    34PortSystem 1.0
    45
    56name             snort
    6 version          2.9.1.2
     7version          2.9.6.2
    78categories       net
    89maintainers      nomaintainer
    910license          GPL-2
     
    1718    attacks, SMB probes, OS fingerprinting attempts, and much more.
    1819homepage         http://www.snort.org/
    1920platforms        darwin freebsd
    20 master_sites     ${homepage}dl/snort-current/
     21master_sites     ${homepage}/downloads/snort/
    2122
    22 checksums        rmd160  a28ebd59df80884e1554fb75a4279e97b1dd8b32 \
    23                  sha256  eac98be8138f9debdcc8f77061dab1950e88fa40c18311ddbab0a329852375f5
     23checksums           rmd160  3c98ec1464e969a78207b85466f95a40d1021764 \
     24                    sha256  8e1d7fc5e1523a786d845ca0102cc474abfcebfcc7e964a1653680034b5b5d77
    2425
    2526depends_lib      port:daq
    2627
    27 startupitem.create  yes
    28 startupitem.start   "${prefix}/share/${name}/snort.sh"
    29 startupitem.stop    "/bin/kill \$(cat /var/run/snort_*.pid)"
     28patchfiles       patch-src-strlcatu.h.diff patch-src-strlcpyu.h.diff
    3029
    31 variant mysql5 description {mysql 5 support} {
    32     depends_lib-append    path:bin/mysql_config5:mysql5
    33     configure.args-append   --with-mysql-includes=${prefix}/include/mysql5/mysql \
    34                             --with-mysql-libraries=${prefix}/lib/mysql5/mysql
    35 }
     30add_users snort group=snort home=${prefix}/var/snort shell=/sbin/nologin realname=Snort\ user
    3631
    37 variant mysql4 description {mysql 4 support} {
    38     depends_lib-append    port:mysql4
    39     configure.args-append --with-mysql=${prefix}
    40 }
    4132
     33set if en1
     34startupitem.create  yes
     35startupitem.executable ${prefix}/bin/${name} -i ${if} -c ${prefix}/etc/snort/snort.conf -l ${prefix}/var/log/snort -u snort -g snort --pid-path ${prefix}/var/run
     36startupitem.pidfile "${prefix}/var/run/snort_${if}.pid"
     37#startupitem.start   "${prefix}/share/${name}/snort.sh"
     38#startupitem.stop    "/bin/kill \$(cat ${prefix}/var/run/snort_*.pid)"
     39
     40destroot.asroot     yes
    4241post-destroot {
    4342# Copy the Snort database schemas
    44     xinstall -d -m 755 ${destroot}${prefix}/share/${name}/schemas
    45     eval xinstall -m 755 [glob ${worksrcpath}/schemas/create*] ${destroot}${prefix}/share/${name}/schemas
     43#    xinstall -d -m 755 ${destroot}${prefix}/share/${name}/schemas
     44#    eval xinstall -m 755 [glob ${worksrcpath}/schemas/create*] ${destroot}${prefix}/share/${name}/schemas
    4645
    4746# Copy Snort's etc/ files
    4847    xinstall -d -m 755 ${destroot}${prefix}/etc/${name}
    4948    eval xinstall [glob ${worksrcpath}/etc/*.map] ${destroot}${prefix}/etc/${name}
    5049    eval xinstall [glob ${worksrcpath}/etc/*.conf*] ${destroot}${prefix}/etc/${name}
    51     file rename ${destroot}${prefix}/etc/${name}/snort.conf ${destroot}${prefix}/etc/${name}/snort.conf.dist
     50    xinstall -d -m 755 ${destroot}${prefix}/share/examples/${name}
     51    file rename ${destroot}${prefix}/etc/${name}/snort.conf ${destroot}${prefix}/share/examples/${name}/snort.conf.dist
    5252
    5353# fix snort.conf.dist
    54     reinplace "s|dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/|dynamicpreprocessor directory ${prefix}/lib/snort_dynamicpreprocessor/|g" ${destroot}${prefix}/etc/${name}/snort.conf.dist
    55     reinplace "s|dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so|dynamicengine ${prefix}/lib/snort_dynamicengine/libsf_engine.dylib|g" ${destroot}${prefix}/etc/${name}/snort.conf.dist
    56     reinplace "s|dynamicdetection directory /usr/local/lib/snort_dynamicrule/|dynamicdetection directory ${prefix}/lib/snort_dynamicrule/|g" ${destroot}${prefix}/etc/${name}/snort.conf.dist
    57     reinplace "s|dynamicdetection file /usr/local/lib/snort_dynamicrule/libdynamicexamplerule.so|dynamicdetection file ${prefix}/lib/snort_dynamicrule/libdynamicexamplerule.dylib|g" ${destroot}${prefix}/etc/${name}/snort.conf.dist
     54    reinplace "s|dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/|dynamicpreprocessor directory ${prefix}/lib/snort_dynamicpreprocessor/|g" ${destroot}${prefix}/share/examples/${name}/snort.conf.dist
     55    reinplace "s|dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so|dynamicengine ${prefix}/lib/snort_dynamicengine/libsf_engine.dylib|g" ${destroot}${prefix}/share/examples/${name}/snort.conf.dist
     56    reinplace "s|dynamicdetection directory /usr/local/lib/snort_dynamicrule/|dynamicdetection directory ${prefix}/lib/snort_dynamicrule/|g" ${destroot}${prefix}/share/examples/${name}/snort.conf.dist
     57    reinplace "s|dynamicdetection file /usr/local/lib/snort_dynamicrule/libdynamicexamplerule.so|dynamicdetection file ${prefix}/lib/snort_dynamicrule/libdynamicexamplerule.dylib|g" ${destroot}${prefix}/share/examples/${name}/snort.conf.dist
    5858
     59    xinstall -d ${destroot}${prefix}/share/${name}
    5960    xinstall -m 755 ${filespath}/snort.sh \
    6061        ${destroot}${prefix}/share/${name}/snort.sh
    6162    reinplace "s|__PREFIX__|${prefix}|g" \
    6263        ${destroot}${prefix}/share/${name}/snort.sh
     64
     65    xinstall -d ${destroot}${prefix}/lib/snort_dynamicrules
     66    destroot.keepdirs-append ${destroot}${prefix}/lib/snort_dynamicrules
     67    reinplace "s|/usr/local/lib/snort_dynamicrules|${prefix}/lib/snort_dynamicrules|" \
     68        ${destroot}${prefix}/share/examples/${name}/snort.conf.dist
     69    reinplace "s|dynamicengine ${prefix}/lib/snort_dynamicengine/libsf_engine.dylib|dynamicengine ${prefix}/lib/snort_dynamicengine/libsf_engine.so|" \
     70        ${destroot}${prefix}/share/examples/${name}/snort.conf.dist
     71    xinstall -d ${destroot}${prefix}/etc/snort/rules
     72    destroot.keepdirs-append ${destroot}${prefix}/etc/snort/rules
     73    reinplace "s|var RULE_PATH ../rules|var RULE_PATH /rules|" \
     74        ${destroot}${prefix}/share/examples/${name}/snort.conf.dist
     75    xinstall -d -o snort ${destroot}${prefix}/var/log/snort
     76    destroot.keepdirs-append ${destroot}${prefix}/var/log/snort
     77}
     78
     79post-activate {
     80    if ![file exists ${prefix}/etc/snort/snort.conf ] {
     81        copy ${prefix}/share/examples/${name}/snort.conf.dist ${prefix}/etc/snort/snort.conf
     82    }
    6383}
    6484
    6585notes "
    6686            ***** File locations *****
    6787
    6888The Snort database schemas -> ${prefix}/share/${name}/schemas
    69 The snort.conf sample file -> ${prefix}/etc/${name}/snort.conf.dist (copy to snort.conf)
     89The snort.conf sample file -> ${prefix}/share/examples/${name}/snort.conf.dist
     90If it doesn't exist before, the sample config is copied to ${prefix}/etc/snort.conf
    7091
    7192NOTE: Make sure you do not change the location of the snort.conf file\
    7293or the startup scripts will not be able to find it.
     94
     95Please download rules from https://www.snort.org/snort-rules/#rules either
     96manually or with oinkmaster.
     97
     98Change at least your HOME_NET in snort.conf and Validate your config with
     99    $ snort -T -c ${prefix}/etc/snort/snort.conf
     100
     101By default snort.sh is configured to listen only on en0 interface.
     102If you want to listen multiple interface, you need to start one snort
     103instance per interface (or bond them)
     104
     105    $ grep 'Snort rules read' /var/log/system.log
     106    $ egrep '^output' ${prefix}/etc/snort/snort.conf
     107If you get empty touched logs, try also to set:
     108    ipvar EXTERNAL_NET !\$HOME_NET
     109instead of any
     110
     111You can test that snort is functionning by using those tool:
     112ftp http://\$EXTERNAL_HOST/cmd.exe
     113ftp http://lteo.net/cmd.exe
     114http://testmyids.com
     115nmap, IDSWakeup, pytbull, metasploit
     116
     117To use blacklist/whitelist, see
     118http://blog.securitymonks.com/2009/07/19/blacklisting-with-snort/
     119http://systemnoise.com/wordpress/?p=89
     120http://labs.snort.org/iplists/
     121
    73122"
    74123
     124if {![variant_isset mysql5] && ![variant_isset mysql51] && ![variant_isset mysql55] && ![variant_isset mariadb] && ![variant_isset percona] && ![variant_isset mysql4] } {
     125    default_variants +mysql56
     126}
     127
     128variant mysql4 \
     129    conflicts mysql5 mysql51 mysql55 mysql56 mariadb percona \
     130    description "Enable MySQL 4 support" {
     131
     132    depends_lib-append          port:mysql4
     133    configure.args-append       --with-mysql=${prefix}
     134}
     135
     136variant mysql5 \
     137    conflicts mysql4 mysql51 mysql55 mysql56 mariadb percona \
     138    description "Enable MySQL 5.1 support" {
     139
     140    depends_lib-append          port:mysql5
     141    configure.env-append        MYSQL_CONFIG=${prefix}/lib/mysql5/bin/mysql_config
     142    configure.args-append   --with-mysql-includes=${prefix}/include/mysql5/mysql \
     143                            --with-mysql-libraries=${prefix}/lib/mysql5/mysql
     144    configure.env               CFLAGS="-L${prefix}/lib/mysql5/mysql"
     145}
     146
     147variant mysql51 \
     148    conflicts mysql4 mysql5 mysql55 mysql56 mariadb percona \
     149    description "Enable MySQL 5.1 support" {
     150
     151    depends_lib-append          port:mysql51
     152    configure.env-append        MYSQL_CONFIG=${prefix}/lib/mysql51/bin/mysql_config
     153    configure.args-append   --with-mysql-includes=${prefix}/include/mysql51/mysql \
     154                            --with-mysql-libraries=${prefix}/lib/mysql51/mysql
     155    configure.env               CFLAGS="-L${prefix}/lib/mysql51/mysql"
     156}
     157
     158variant mysql55 \
     159    conflicts mysql4 mysql5 mysql51 mysql56 mariadb percona \
     160    description "Enable MySQL 5.5 support" {
     161
     162    depends_lib-append          port:mysql55
     163    configure.env-append        MYSQL_CONFIG=${prefix}/lib/mysql55/bin/mysql_config
     164    configure.args-append   --with-mysql-includes=${prefix}/include/mysql55/mysql \
     165                            --with-mysql-libraries=${prefix}/lib/mysql55/mysql
     166    configure.env               CFLAGS="-L${prefix}/lib/mysql55/mysql"
     167}
     168
     169variant mysql56 \
     170    conflicts mysql4 mysql5 mysql51 mysql55 mariadb percona \
     171    description "Enable MySQL 5.6 support" {
     172
     173    depends_lib-append          port:mysql56
     174    configure.env-append        MYSQL_CONFIG=${prefix}/lib/mysql56/bin/mysql_config
     175    configure.args-append   --with-mysql-includes=${prefix}/include/mysql56/mysql \
     176                            --with-mysql-libraries=${prefix}/lib/mysql56/mysql
     177    configure.env               CFLAGS="-L${prefix}/lib/mysql56/mysql"
     178}
     179
     180variant mariadb \
     181    conflicts mysql4 mysql5 mysql51 mysql55 mysql56 percona \
     182    description "Enable MariaDB (MySQL) support" {
     183
     184    depends_lib-append          port:mariadb
     185    configure.env-append        MYSQL_CONFIG=${prefix}/lib/mariadb/bin/mysql_config
     186    configure.args-append   --with-mysql-includes=${prefix}/include/mariadb/mysql \
     187                            --with-mysql-libraries=${prefix}/lib/mariadb/mysql
     188    configure.env               CFLAGS="-L${prefix}/lib/mariadb/mysql"
     189}
     190
     191variant percona \
     192    conflicts mysql4 mysql5 mysql51 mysql55 mysql56 mariadb \
     193    description "Enable Percona (MySQL) support" {
     194    depends_lib-append          port:percona
     195    configure.env-append        MYSQL_CONFIG=${prefix}/lib/percona/bin/mysql_config
     196    configure.args-append   --with-mysql-includes=${prefix}/include/percona/mysql \
     197                            --with-mysql-libraries=${prefix}/lib/percona/mysql
     198    configure.env               CFLAGS="-L${prefix}/lib/percona/mysql"
     199}
     200
    75201livecheck.type      regex
    76 livecheck.url       ${homepage}snort-downloads
     202livecheck.url       ${homepage}/downloads
    77203livecheck.regex     >${name}-(\[0-9.\]+)${extract.suffix}<