# -*- coding: utf-8; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4

PortSystem              1.0
PortGroup               github 1.0
PortGroup               legacysupport 1.1

# _strndup
legacysupport.newest_darwin_requires_legacy 10

github.setup            vanhauser-thc thc-hydra 9.5 v
# Change github.tarball_from to 'releases' or 'archive' next update
github.tarball_from     tarball
name                    hydra
revision                0
categories              security net
maintainers             {i0ntempest @i0ntempest} openmaintainer
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.

checksums               rmd160  b6a90e8e2c216c29eb479fbd7ccff54da59762af \
                        sha256  11b7f9dd692e4ff1d4218ab9b836e86158679db98ed04ece902c180247b3983b \
                        size    833928

depends_lib-append      port:libssh \
                        port:libidn \
                        port:ncurses \
                        path:lib/libssl.dylib:openssl \
                        port:pcre2


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
    reinplace "s|-L/usr/lib -L/usr/local/lib||g" ${worksrcpath}/configure

    if {[variant_isset mysql57] || [variant_isset mariadb]} {
        reinplace "s|MYSQL_IPATH=\"\$i/mysql\"|MYSQL_IPATH=\"\$i\"|" ${worksrcpath}/configure
    }

    reinplace "s|OPTS=-I|OPTS=[get_canonical_archflags cc] -I|" ${worksrcpath}/Makefile.am
    
    if {${os.platform} eq "darwin" && ${os.major} < 11} {
        # _strndup
        reinplace "s|LIBS=-lm|LIBS=-lm -lMacportsLegacySupport|" ${worksrcpath}/Makefile.am
    }
}

configure.args          --disable-xhydra
build.env-append        CC=${configure.cc}

pre-destroot {
    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} {
    PortGroup               app 1.0

    depends_build-append    port:pkgconfig
    depends_lib-append      path:lib/pkgconfig/gtk+-2.0.pc:gtk2
    configure.args-delete   --disable-xhydra
    post-patch {
        reinplace "s|-Wl,--allow-multiple-definition|-W|g" ${worksrcpath}/hydra-gtk/configure
    }
    patchfiles-append       patch-hydra-gtk__make_xhydra.sh-fail-if-xhydra-fails.diff

    app.name        xHydra
    app.executable  ${filespath}/xHydra
    app.icon        ${worksrcpath}/xhydra.png
    app.identifier  com.vanhauser-thc.xhydra
    post-destroot {
        reinplace "s|@PREFIX@|${prefix}|g" ${destroot}${applications_dir}/xHydra.app/Contents/MacOS/xHydra
    }
}

variant postgresql96 conflicts postgresql12 postgresql13 postgresql14 \
description {Add support for PostgreSQL 9.6} {
    depends_lib-append    port:postgresql96
    set incdir "${incdir} ${prefix}/include/postgresql96"
    set libdir "${libdir} ${prefix}/lib/postgresql96"
}

variant postgresql12 conflicts postgresql96 postgresql13 postgresql14 \
description {Add support for PostgreSQL 12} {
    depends_lib-append    port:postgresql12
    set incdir "${incdir} ${prefix}/include/postgresql12"
    set libdir "${libdir} ${prefix}/lib/postgresql12"
}

variant postgresql13 conflicts postgresql96 postgresql12 postgresql14 \
description {Add support for PostgreSQL 13} {
    depends_lib-append    port:postgresql13
    set incdir "${incdir} ${prefix}/include/postgresql13"
    set libdir "${libdir} ${prefix}/lib/postgresql13"
}

variant postgresql14 conflicts postgresql96 postgresql12 postgresql13 \
description {Add support for PostgreSQL 14} {
    depends_lib-append    port:postgresql14
    set incdir "${incdir} ${prefix}/include/postgresql14"
    set libdir "${libdir} ${prefix}/lib/postgresql14"
}

variant mysql57 conflicts mariadb description {Add support for MySQL 5.7} {
    depends_lib-append    port:mysql57
    set incdir "${incdir} ${prefix}/include/mysql57"
    set libdir "${libdir} ${prefix}/lib/mysql57/mysql"
}

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

variant smb2 description {Add support for SMB 2 and 3} {
    depends_lib-append    port:samba3
    set libdir "${libdir} ${prefix}/lib/samba3"
}

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: (.*)"