# -*- 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

github.setup            vanhauser-thc thc-hydra 9.6 v
github.tarball_from     archive
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  c579aa17038833664a94a4c4261849b4f2dd461f \
                        sha256  c839e5c64ef60185c69a07a9a59831bd2cfe9ac2eac0c4d9e87fdf38dbf04c40 \
                        size    837339

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


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

# _strndup
legacysupport.newest_darwin_requires_legacy \
                        10

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