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

PortSystem          1.0

name                openvpn2
version             2.3.4
distname            openvpn-${version}
categories          net security
platforms           darwin
maintainers         yahoo.fr:jul_bsd openmaintainer
license             {GPL-2 OpenSSLException}

description         easy-to-use, robust, and highly configurable VPN
long_description    \
    OpenVPN is an easy-to-use, robust, and highly configurable VPN (Virtual \
    Private Network) daemon which can be used to securely link two or more \
    private networks using an encrypted tunnel over the internet.

homepage            http://www.openvpn.net
master_sites        http://swupdate.openvpn.net/community/releases/

checksums           rmd160  8b0cc785a8e025b5b77aabc3546e4295b96ea85a \
                    sha256  af506d5f48568fa8d2f2435cb3fad35f9a9a8f263999ea6df3ba296960cec85a

depends_build       port:pkgconfig
depends_lib         port:lzo2 \
                    port:openssl

configure.args      --program-suffix=2 \
                    --docdir=${prefix}/share/doc/${name}

post-destroot {
    set docdir ${destroot}${prefix}/share/doc/${name}
    set exdir ${destroot}${prefix}/share/examples/${name}
    xinstall -m 755 -d ${docdir}
    xinstall -m 755 -d ${exdir}
    foreach dir "sample/sample-config-files \
                sample/sample-keys \
                sample/sample-plugins \
                sample/sample-scripts"  {
        file copy ${worksrcpath}/${dir} ${exdir}/
    }
    file copy ${worksrcpath}/contrib ${docdir}/
    xinstall -m 644 -W ${worksrcpath} AUTHORS ${docdir}/
    reinplace "s|;user nobody|user nobody|;s|;group nobody|group nobody|;" \
        ${destroot}${prefix}/share/examples/${name}/sample-config-files/server.conf \
        ${destroot}${prefix}/share/examples/${name}/sample-config-files/client.conf \
        ${destroot}${prefix}/share/examples/${name}/sample-config-files/static-home.conf \
        ${destroot}${prefix}/share/examples/${name}/sample-config-files/static-office.conf \
        ${destroot}${prefix}/share/examples/${name}/sample-config-files/tls-home.conf \
        ${destroot}${prefix}/share/examples/${name}/sample-config-files/tls-office.conf
}

post-activate {
    if {![file exists ${prefix}/etc/${name}]} {
        xinstall -d ${prefix}/etc/${name}
    }
    foreach f { server.conf client.conf } {
        if {![file exists ${prefix}/etc/${name}/${f}]} {
                xinstall ${prefix}/share/examples/${name}/sample-config-files/${f} ${prefix}/etc/${name}/
        }
    }
}

notes "
If not existing, a default server.conf has been created in ${prefix}/etc/${name}/
Startup launch script is set to start with it.
Please adjust to your need, especially passphrase or certificates

For minimal configuration, you need to follow these steps

A) With a shared secret
    $ sudo openvpn --genkey --secret ${prefix}/etc/openvpn2/static.key
   Use 'secret static.key' in your config file

B) With self-signed certificates, follow
   https://openvpn.net/index.php/open-source/documentation/howto.html#pki

Alternate GUI: https://code.google.com/p/tunnelblick/

Openvpn uses a tun device to create its network interface. It could either be:
- utun device built into OSX 10.7+
- tun device from port tuntaposx
"

if {${os.platform} == "darwin" && ${os.major} <= 9} {
    post-patch {
        reinplace "s|security/pam_appl.h|pam/pam_appl.h|g" ${worksrcpath}/src/plugins/auth-pam/auth-pam.c
    }
}

startupitem.create      yes
startupitem.executable  "${prefix}/bin/openvpn2 --config ${prefix}/etc/${name}/server.conf"

livecheck.type      regex
livecheck.url       ${homepage}/index.php/open-source/downloads.html
livecheck.regex     "/openvpn-(\\d+(?:\\.\\d+)*).tar.gz\">"