require 'formula' class Openvpn < Formula homepage 'http://openvpn.net/index.php/download/community-downloads.html' url 'http://build.openvpn.net/downloads/releases/openvpn-2.3.2.tar.gz' mirror 'http://swupdate.openvpn.org/community/releases/openvpn-2.3.2.tar.gz' sha256 '20bda3f9debb9a52db262aecddfa4e814050a9404a9106136b7e3b6f7ef36ffc' depends_on 'lzo' depends_on 'tuntap' def install # pam_appl header is installed in a different location on Leopard # and older; reported upstream https://community.openvpn.net/openvpn/ticket/326 if MacOS.version < :snow_leopard %w[auth-pam.c pamdl.c].each do |file| inreplace "src/plugins/auth-pam/#{file}", "security/pam_appl.h", "pam/pam_appl.h" end end # Build and install binary system "./configure", "--disable-debug", "--disable-dependency-tracking", "--prefix=#{prefix}", "--enable-password-save" system "make install" # Adjust sample file paths inreplace "sample/sample-config-files/openvpn-startup.sh", "/etc/openvpn", "#{etc}/openvpn" # Install sample files (doc/"sample").install Dir["sample/sample-*"] # Create etc & var paths (etc + 'openvpn').mkpath (var + 'run/openvpn').mkpath end def caveats; <<-EOS.undent Make sure to follow the directions given by `brew info tuntap` before trying to use OpenVPN. For OpenVPN to work as a server, you will need to create configuration file in #{etc}/openvpn, samples can be found in #{share}/doc/openvpn EOS end plist_options :startup => true def plist; <<-EOS.undent Label #{plist_name} ProgramArguments #{opt_sbin}/openvpn --config #{etc}/openvpn/openvpn.conf OnDemand RunAtLoad TimeOut 90 WatchPaths #{etc}/openvpn WorkingDirectory #{etc}/openvpn EOS end end