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

PortSystem          1.0
PortGroup           perl5 1.0

name                smokeping
version             2.9.0
revision            0
license             GPL-2+
categories          net perl
maintainers         nomaintainer
description         A deluxe latency logging and graphing system.
long_description    SmokePing is a deluxe latency measurement tool. \
                    It can measure, store, and display latency, latency \
                    distribution, and packet loss. SmokePing uses RRDtool \
                    to maintain a longterm data-store and to draw pretty \
                    graphs, giving up to the minute information on the \
                    state of each network connection.

supported_archs     noarch
platforms           {darwin any}
homepage            https://oss.oetiker.ch/smokeping/
master_sites        ${homepage}pub/

checksums           rmd160  9e6d42c69913afea81d3916c2dadc6aa69b6b34d \
                    sha256  f1be35bfccc2ba1c9f75f76d222b29b57024efe89c5b564b86c1a37ce2d1ddb1 \
                    size    555734

patchfiles          patch-Makefile.in.diff \
                    patch-etc-config.dist.in.diff \
                    patch-bin-smokeping.diff \
                    patch-bin-smokeping_cgi.diff \
                    patch-bin-tSmoke.diff \
                    patch-bin-smokeinfo.diff

perl5.branches      5.34

depends_lib-append  port:perl${perl5.major} \
                    port:p${perl5.major}-authen-radius \
                    port:p${perl5.major}-cgi-fast \
                    port:p${perl5.major}-config-grammar \
                    port:p${perl5.major}-html-tagset \
                    port:p${perl5.major}-io-html \
                    port:p${perl5.major}-io-tty \
                    port:p${perl5.major}-libwww-perl \
                    port:p${perl5.major}-mozilla-ca \
                    port:p${perl5.major}-net-dns \
                    port:p${perl5.major}-net-ip \
                    port:p${perl5.major}-net-openssh \
                    port:p${perl5.major}-net-radius \
                    port:p${perl5.major}-net-snmp \
                    port:p${perl5.major}-net-telnet \
                    port:p${perl5.major}-perl-ldap \
                    port:p${perl5.major}-pathtools \
                    port:p${perl5.major}-snmp_session \
                    port:p${perl5.major}-xml-sax-base \
                    port:mod_fcgid \
                    port:apache2 \
                    port:rrdtool \
                    port:fping \
                    port:curl

set smokedata ${prefix}/var/smokeping
set smokeetc ${prefix}/etc/smokeping

configure.perl      ${perl5.bin}
configure.args-append \
                    --sysconfdir=${smokeetc} \
                    --with-htdocs-dir=${prefix}/www/smokeping

configure.env-append \
                    PERL5LIB=${perl5.lib}

startupitem.create  yes
startupitem.name    smokeping
startupitem.executable \
                    ${prefix}/bin/smokeping --nodaemon

post-patch {
    reinplace "s|__PREFIX__|${prefix}|g" \
        ${worksrcpath}/bin/smokeping \
        ${worksrcpath}/bin/tSmoke \
        ${worksrcpath}/bin/smokeinfo \
        ${worksrcpath}/bin/smokeping_cgi

    reinplace "s|__PERL5__ARCHLIB__|${perl5.archlib}|g" \
        ${worksrcpath}/bin/smokeping \
        ${worksrcpath}/bin/tSmoke \
        ${worksrcpath}/bin/smokeinfo \
        ${worksrcpath}/bin/smokeping_cgi

    reinplace "s|/usr/bin/|${prefix}/bin/|g" \
        ${worksrcpath}/lib/Smokeping.pm \
        ${worksrcpath}/lib/Smokeping/Examples.pm \
        ${worksrcpath}/lib/Smokeping/probes/Curl.pm \
        ${worksrcpath}/lib/Smokeping/probes/RemoteFPing.pm \
        ${worksrcpath}/lib/Smokeping/probes/SSH.pm \
        ${worksrcpath}/lib/Smokeping/probes/FPing6.pm \
        ${worksrcpath}/lib/Smokeping/probes/EchoPing.pm \
        ${worksrcpath}/lib/Smokeping/probes/FPing.pm

    reinplace "s|/usr/share/smokeping/etc|${smokeetc}|g" \
        ${worksrcpath}/lib/Smokeping/probes/passwordchecker.pm
}

post-destroot {
    # Create the configuration directory
    xinstall -m 755 -d ${destroot}${smokeetc}

    # Create and retain the data directory
    xinstall -m 755 -d ${destroot}${smokedata}/log
    destroot.keepdirs ${destroot}${smokedata}/log
}

notes \
"  #### To complete the Smokeping installation ####

1) Enable mod_fcgid (installed as a dependency of Smokeping) for MacPorts Apache 2.

    -Rdd the line below to ${prefix}/etc/apache2/httpd.conf.

    LoadModule fcgid_module modules/mod_fcgid.so


2)  Changes to httpd.conf for Smokeping.

   -Uncomment this line to enable the CGI script handler.

    AddHandler cgi-script .cgi

   -Add a directive for Smokeping's data directory and add
    smokeping.cgi to DirectoryIndex for a simple /smokeping url.

    Alias /smokeping \"${prefix}/var/smokeping\"
    <Directory \"${prefix}/var/smokeping\">
        Allow from all
        Options ExecCGI
    </Directory>

    <IfModule dir_module>
        DirectoryIndex index.html smokeping.cgi
    </IfModule>


3) Set Smokeping data directory permissions to the Apache user and group set
   in httpd.conf.  The default Apache user and group for OS X is www.

    sudo chown -R <smokeping-user>:<smokeping-group> ${smokedata}/


4) Setup Smokeping logging.

   -Add this statement to /etc/syslog.conf.

   local1.* ${smokedata}/log/smokeping.log

   -Create a logfile to receive the log messages.

    cd ${smokedata}/log
    sudo touch smokeping.log
    sudo chmod 600 smokeping.log
    sudo chown root:admin smokeping.log

   -Then restart the syslog facility.

    sudo kill -HUP `cat /var/run/syslog.pid`


5) Rename and edit the ${smokeetc}/config sample files, then test your config file.

   -Remove the .dist extension from all files; do not change the filenames.

    cd ${smokeetc}
    sudo cp basepage.html.dist basepage.html
    sudo cp config.dist config
    sudo cp smokemail.dist smokemail
    sudo cp smokeping_secrets.dist smokeping_secrets
    sudo cp tmail.dist stmail

   -Set the DNS names for the Smokeping config file url's \"imageurl\" and \"cgiurl\".
    But you should leave all file paths alone -they are set by MacPorts.

    imgurl   = http://myhost.mycompany.com/smokeping
    cgiurl   = http://myhost.mycompany.com/smokeping/smokeping.cgi

   -Customize variables.

     * General * - owner, contact, and mailhost
     * Alerts  * - to, from addresses

   -Then clear the examples \(they have a leading '+'\) in the *** Targets ***
    section and set your own.

        + My Web Server
           menu = MyWebServer
           title = My Web Server
           host = mywebserver.mydomain.com
           alerts = bigloss,someloss,startloss

    -See sample configurations and examples in ${prefix}/share/doc/smokeping/.

    -Perform a config file test from a terminal window and correct any errors that
     are reported.

    smokeping --check


6) Start Smokeping and verify it is running.  (Give it a minute to start)

    sudo launchctl load -w /Library/LaunchDaemons/org.macports.smokeping.plist
    ps -ax |grep smoke

 1713  Ss 0:00.16 ${prefix}/bin/smokeping \[FPing\]
 1753  Ss 0:00.18 ${prefix}/bin/speedy_backend -w ${prefix}/www/smokeping/smokeping.cgi
 1754  S  0:01.56 ${prefix}/bin/speedy_backend -w ${prefix}/www/smokeping/smokeping.cgi


7) Check the Smokeping graphs with a web browser.

   Go to http://localhost/smokeping


8) Add or remove targets from Smokeping.

   After adding or removing targets from ${smokeetc}/config, you must reload
   Smokeping from a terminal window.

    sudo smokeping --reload"
