# $Id: Portfile 50055 2009-04-23 21:40:44Z markd@macports.org $ PortSystem 1.0 PortGroup perl5 1.0 name smokeping version 2.4.2 revision 2 categories net perl maintainers markd 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. platforms darwin homepage http://oss.oetiker.ch/smokeping/ master_sites http://oss.oetiker.ch/smokeping/pub/ checksums md5 eb8e7679fcad35e59d7c51f2328250a2 patchfiles patch-bin-smokeping.dist \ patch-bin-tSmoke.dist \ patch-etc-config.dist \ patch-htdocs-smokeping.cgi.dist depends_lib-append path:bin/perl:perl5 \ port:rrdtool \ port:p5-libwww-perl \ port:p5-cgi-speedycgi \ port:p5-socket6 \ port:p5-net-snmp \ port:p5-net-telnet \ port:p5-net-dns \ port:p5-net-radius \ port:p5-perl-ldap \ port:p5-io-socket-ssl \ port:p5-pathtools \ port:p5-snmp_session \ port:fping \ port:echoping \ port:curl set smokeroot ${prefix}/lib/smokeping set smokedata ${prefix}/var/smokeping set smokeetc ${prefix}/etc/smokeping set smokedoc ${prefix}/share/doc/smokeping set apple_apache_docroot /Library/WebServer/Documents set macports_apache_docroot ${prefix}/apache2/htdocs startupitem.create yes startupitem.name smokeping startupitem.executable ${prefix}/bin/smokeping variant apple_apache { # This variant is for using Smokeping with Apple's built-in Apache. The variant # doesn't do anything in the Smokeping port, but it triggers the same variant name # in p5-cgi-speedycgi, which is necessary for SpeedyCGI to work with Apache 1, and # therefore necessary for Smokeping to work with Apple's Apache. } use_configure no build {} post-patch { if { [variant_isset apple_apache] } { reinplace "s|__APACHE__DOCROOT__|${apple_apache_docroot}|g" \ ${worksrcpath}/etc/config.dist } else { reinplace "s|__APACHE__DOCROOT__|${macports_apache_docroot}|g" \ ${worksrcpath}/etc/config.dist } eval reinplace "s|__PREFIX__|${prefix}|g" \ [glob ${worksrcpath}/bin/*.dist] \ [glob ${worksrcpath}/etc/*.dist] \ [glob ${worksrcpath}/htdocs/*.dist] eval reinplace "s|__PERL5__ARCHLIB__|${perl5.archlib}|g" \ [glob ${worksrcpath}/bin/*.dist] \ [glob ${worksrcpath}/htdocs/*.dist] eval reinplace "s|/usr/bin/perl|${prefix}/bin/perl|g" \ [glob ${worksrcpath}/bin/*.dist] \ [glob ${worksrcpath}/etc/*.dist] \ [glob ${worksrcpath}/htdocs/*.dist] 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 } destroot { # bin xinstall -m 755 -d ${destroot}${prefix}/bin xinstall -m 755 ${worksrcpath}/bin/smokeping.dist ${destroot}${prefix}/bin/smokeping xinstall -m 755 ${worksrcpath}/bin/tSmoke.dist ${destroot}${prefix}/bin/tSmoke # doc xinstall -m 755 -d ${destroot}${smokedoc} system "cp -R ${worksrcpath}/doc/ ${destroot}${smokedoc}" file copy ${worksrcpath}/README ${destroot}${smokedoc} file copy ${worksrcpath}/TODO ${destroot}${smokedoc} # etc # Leave the config.dist filename for users to remove so upgrades won't destroy the config file. xinstall -m 755 -d ${destroot}${smokeetc} eval xinstall -m 640 [glob ${worksrcpath}/etc/*.dist] ${destroot}${smokeetc} # lib system "cp -R ${worksrcpath}/lib/ ${destroot}${smokeroot}" # Smokeping data directory that needs to be symlinked to Apache docroot xinstall -m 755 -d ${destroot}${smokedata} # Smokeping log directory xinstall -m 755 -d ${destroot}${smokedata}/log # htdocs xinstall -m 755 ${worksrcpath}/htdocs/smokeping.cgi.dist \ ${destroot}${smokedata}/smokeping.cgi xinstall -m 755 -d ${destroot}${smokedata}/cropper system "cp -R ${worksrcpath}/htdocs/cropper/ ${destroot}${smokedata}/cropper" # Retain these empty directories destroot.keepdirs ${destroot}${smokedata}/log } post-activate { ui_msg "\n #### To complete the Smokeping installation #### 1) Enable SpeedyCGI (installed as a dependency of Smokeping) for Apache. -For MacPorts Apache 2, add the line below to ${prefix}/apache2/conf/httpd.conf. LoadModule speedycgi_module modules/mod_speedycgi.so -For Apple's Apache 1, manually copy mod_speedycgi.so and smokeping.cgi into place ... sudo cp ${prefix}/share/doc/speedycgi/mod_speedycgi.so /usr/libexec/httpd sudo cp ${prefix}${smokedata}/smokeping.cgi /Library/WebServer/CGI-Executables ... and add the lines below to /etc/httpd/httpd.conf. LoadModule speedycgi_module libexec/mod_speedycgi.so AddModule mod_speedycgi.c 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\" Allow from all Options ExecCGI DirectoryIndex index.html smokeping.cgi 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 : ${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 mv config.dist config -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}/apache2/htdocs/smokeping/smokeping.cgi 1754 S 0:01.56 ${prefix}/bin/speedy_backend -w ${prefix}/apache2/htdocs/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 \n" }