# $Id: Portfile 118760 2014-04-10 19:58:43Z cal@macports.org $

PortSystem              1.0

name                    hydra
version                 7.5
revision                1
categories              security net
platforms               darwin
maintainers             nomaintainer
license                 {AGPL-3 OpenSSLException}

description \
    A very fast network logon cracker which support many services

long_description \
    Hydra is a parallelized logon cracker utility. Hydra can \
    brute force attack on FTP, POP3, IMAP, Telnet, HTTP Auth, \
    NNTP, VNC, ICQ, Socks5, PCNFS and more services within SSL \
    support.

homepage                https://www.thc.org/thc-hydra
master_sites            https://www.thc.org/releases
fetch.ignore_sslcert    yes

checksums               rmd160  f5edc8473889ab90ef971226f4276683b193a466 \
                        sha256  7293e7c32198219688e5bf5308f7e8eab37ad78d49701c9860a6b22aecda0ab6

depends_lib             port:openssl \
                        port:libssh \
                        port:libidn \
                        port:ncurses \
                        port:pcre

# place cut-markers and fix xhydra_support setting in line 957
patchfiles              patch-configure.diff

set incdir "${prefix}/include"
set libdir "${prefix}/lib"

post-patch {
    # Look only in Macports directories
    reinplace "s|^INCDIRS=.*$|INCDIRS=\"${incdir}\"|g" ${worksrcpath}/configure
    reinplace "s|^LIBDIRS=.*$|LIBDIRS=\"${libdir}\"|g" ${worksrcpath}/configure
    reinplace "s|XLIBPATHS=\"-L/usr/lib -L/usr/local/lib -L/lib\"|XLIBPATHS=\"\"|g" ${worksrcpath}/configure

    # Disable searching for libs/headers for any module NOT set as variant
    if {![variant_isset postgresql80] && ![variant_isset postgresql81] && \
        ![variant_isset postgresql82] && ![variant_isset postgresql83] && \
        ![variant_isset postgresql84] && ![variant_isset postgresql90] && \
        ![variant_isset postgresql91] && ![variant_isset postgresql92]} {
        reinplace -E "/#@@CUT_POSTGRES/,/#CUT_POSTGRES@@/d" ${worksrcpath}/configure
    }

    if {![variant_isset mysql5] && ![variant_isset mysql51] && [variant_isset mysql55] && \
        ![variant_isset mariadb] && ![variant_isset percona]} {
        reinplace -E "/#@@CUT_MYSQLA/,/#CUT_MYSQLA@@/d" ${worksrcpath}/configure
        reinplace -E "/#@@CUT_MYSQLB/,/#CUT_MYSQLB@@/d" ${worksrcpath}/configure
    } else {
        # Fix include path
        reinplace "s|MYSQL_IPATH=\"\$i/mysql\"|MYSQL_IPATH=\"\$i\"|" ${worksrcpath}/configure
    }

    if {![variant_isset oracle]} {
        reinplace -E "/#@@CUT_ORACLE/,/#CUT_ORACLE@@/d" ${worksrcpath}/configure
    } else {
        # Async I/O is compiled into libSystem.B.dylib
        reinplace "s|LIBAIO=\"\"|LIBAIO=\"YES_WE_HAVE\"|g" ${worksrcpath}/configure
    }

    if {![variant_isset subversion]} {
        reinplace -E "/#@@CUT_SVN/,/#CUT_SVN@@/d" ${worksrcpath}/configure
    }
    
    # These are not in variants, because they do not exist as ports (yet)
    reinplace -E "/#@@CUT_FB/,/#CUT_FB@@/d" ${worksrcpath}/configure
    reinplace -E "/#@@CUT_AFP/,/#CUT_AFP@@/d" ${worksrcpath}/configure
    reinplace -E "/#@@CUT_NCP/,/#CUT_NCP@@/d" ${worksrcpath}/configure
    reinplace -E "/#@@CUT_SAP/,/#CUT_SAP@@/d" ${worksrcpath}/configure
        
    # This one is very strange, it adds /usr/kerberos/include to the path
    # but I cannot find that it's being used anywhere. At the same time,
    # krb5.h is in /opt/local/include, so it's found from the default search path
    # if installed. We delete it here, because it we do not want anything from /usr,
    # but I don't know how to otherwise disable kerberos, or that it even matters.
    reinplace -E "/#@@CUT_KRB/,/CUT_KRB@@/d" ${worksrcpath}/configure
}

configure.args          --disable-xhydra

post-configure {
    reinplace "s|CC=gcc|CC=${configure.cc}|" ${worksrcpath}/Makefile
    reinplace "s|^OPTS=.*$|OPTS=-I. -Wall ${configure.cflags}|" ${worksrcpath}/Makefile
}

pre-destroot {
    reinplace "s|PREFIX=${prefix}|PREFIX=${destroot}${prefix}|" ${worksrcpath}/Makefile
    reinplace "s|/man/man1|/share/man/man1|g" ${worksrcpath}/Makefile
    set docdir ${destroot}${prefix}/share/doc/${name}-${version}
    xinstall -d ${docdir}
    xinstall -m 644 -W ${worksrcpath} \
        CHANGES \
        LICENSE \
        LICENSE.OPENSSL \
        README \
        ${docdir}
}

variant xhydra description {Add xhydra GUI} {
    patchfiles-append       patch-Makefile.am-fail-if-xhydra-fails.diff \
                            patch-hydra-gtk__make_xhydra.sh-fial-if-xhydra-fails.diff
    depends_build-append    port:pkgconfig
    depends_lib-append      port:gtk2
    configure.args-delete   --disable-xhydra
    build.env-append        CC=${configure.cc}
}

variant postgresql80 \
conflicts postgresql81 postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 \
description {Add support for PostgreSQL 8.0} {
    depends_lib-append    port:postgresql80
    set incdir "${incdir} ${prefix}/include/postgresql80"
    set libdir "${libdir} ${prefix}/lib/postgresql80"
}

variant postgresql81 \
conflicts postgresql80 postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 \
description {Add support for PostgreSQL 8.1} {
    depends_lib-append    port:postgresql81
    set incdir "${incdir} ${prefix}/include/postgresql81"
    set libdir "${libdir} ${prefix}/lib/postgresql81"
}

variant postgresql82 \
conflicts postgresql80 postgresql81 postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 \
description {Add support for PostgreSQL 8.2} {
    depends_lib-append    port:postgresql82
    set incdir "${incdir} ${prefix}/include/postgresql82"
    set libdir "${libdir} ${prefix}/lib/postgresql82"
}

variant postgresql83 \
conflicts postgresql80 postgresql81 postgresql82 postgresql84 postgresql90 postgresql91 postgresql92 \
description {Add support for PostgreSQL 8.3} {
    depends_lib-append    port:postgresql83
    set incdir "${incdir} ${prefix}/include/postgresql83"
    set libdir "${libdir} ${prefix}/lib/postgresql83"
}

variant postgresql84 \
conflicts postgresql80 postgresql81 postgresql82 postgresql83 postgresql90 postgresql91 postgresql92 \
description {Add support for PostgreSQL 8.4} {
    depends_lib-append    port:postgresql84
    set incdir "${incdir} ${prefix}/include/postgresql84"
    set libdir "${libdir} ${prefix}/lib/postgresql84"
}

variant postgresql90 \
conflicts postgresql80 postgresql81 postgresql82 postgresql83 postgresql84 postgresql91 postgresql92 \
description {Add support for PostgreSQL 9.0} {
    depends_lib-append    port:postgresql90
    set incdir "${incdir} ${prefix}/include/postgresql90"
    set libdir "${libdir} ${prefix}/lib/postgresql90"
}

variant postgresql91 \
conflicts postgresql80 postgresql81 postgresql82 postgresql83 postgresql84 postgresql90 postgresql92 \
description {Add support for PostgreSQL 9.1} {
    depends_lib-append    port:postgresql91
    set incdir "${incdir} ${prefix}/include/postgresql91"
    set libdir "${libdir} ${prefix}/lib/postgresql91"
}

variant postgresql92 \
conflicts postgresql80 postgresql81 postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 \
description {Add support for PostgreSQL 9.2} {
    depends_lib-append    port:postgresql92
    set incdir "${incdir} ${prefix}/include/postgresql92"
    set libdir "${libdir} ${prefix}/lib/postgresql92"
}

variant mysql5 conflicts mysql51 mysql55 mariadb percona description {Add support for MySQL5} {
    depends_lib-append    port:mysql5
    set incdir "${incdir} ${prefix}/include/mysql5"
    set libdir "${incdir} ${prefix}/lib/mysql5/mysql"
}

variant mysql51 conflicts mysql5 mysql55 mariadb percona description {Add support for MySQL 5.1} {
    depends_lib-append    port:mysql51
    set incdir "${incdir} ${prefix}/include/mysql51"
    set libdir "${libdir} ${prefix}/lib/mysql51/mysql"
}

variant mysql55 conflicts mysql5 mysql51 mariadb percona description {Add support for MySQL 5.5} {
    depends_lib-append    port:mysql55
    set incdir "${incdir} ${prefix}/include/mysql55"
    set libdir "${libdir} ${prefix}/lib/mysql55/mysql"
}

variant mariadb conflicts mysql5 mysql51 mysql55 percona description {Add support for MariaDB} {
    depends_lib-append    port:mariadb
    set incdir "${incdir} ${prefix}/include/mariadb"
    set libdir "${libdir} ${prefix}/lib/mariadb/mysql"
}

variant percona conflicts mysql5 mysql51 mysql55 mariadb description {Add support for Percona} {
    depends_lib-append    port:percona
    set incdir "${incdir} ${prefix}/include/percona"
    set libdir "${libdir} ${prefix}/lib/percona/mysql"
}

variant oracle description {Add support for Oracle} {
    depends_lib-append    port:oracle-instantclient
    configure.args-append --with-oracle=${prefix}/lib/oracle/sdk/include \
                          --with-oracle-lib=${prefix}/lib/oracle
}

variant subversion description {Add support for Subversion} {
    depends_lib-append    port:subversion
}

# Add this variant once someone creates a port for FirebirdSQL.
# See: http://www.firebirdsql.org/
# variant firebird description {Add support for FirebirdSQL} {}

# Add this variant once someone creates a port for AFP-fs, the FUSE filesystem for Apple Filing Protocol
# See: https://sites.google.com/site/alexthepuffin/
# variant afp description {Add support for Apple Filing Protocol} {}

# Add this variant once someone creates a port for ncpfs, an implementation of the Netware Core Protocol
# See: http://prope.insa-lyon.fr/~ppollet/ncpfs/
# variant ncp description {Add support for Netware Core Protocol} {}

livecheck.type          regex
livecheck.url           ${homepage}
livecheck.regex         "Current Version: (.*)"
