homebrew-core/Formula/bind.rb

166 lines
4.5 KiB
Ruby
Raw Normal View History

2014-08-25 08:49:26 +00:00
require "formula"
class Bind < Formula
2014-08-25 08:49:26 +00:00
homepage "http://www.isc.org/software/bind/"
url "http://ftp.isc.org/isc/bind9/9.10.1/bind-9.10.1.tar.gz"
sha1 "96aa28c6112c6a8c33a19efeac98c715f03b35ca"
bottle do
2014-09-23 18:22:08 +00:00
sha1 "acbc3d6c023a81a8521d1e7f3734390a405b986e" => :mavericks
sha1 "89accfff4961c1425a1b6b29c6a9f78cc451ace3" => :mountain_lion
sha1 "45af0b2a7ab9c38751a18b2901ce3670a9e93d4a" => :lion
end
head "https://source.isc.org/git/bind9.git"
2014-03-30 02:20:26 +00:00
depends_on "openssl"
def install
ENV.libxml2
# libxml2 appends one inc dir to CPPFLAGS but bind ignores CPPFLAGS
2014-08-25 08:49:26 +00:00
ENV.append "CFLAGS", ENV.cppflags
2014-03-30 02:20:26 +00:00
system "./configure", "--prefix=#{prefix}",
"--enable-threads",
"--enable-ipv6",
2014-08-25 08:49:26 +00:00
"--with-ssl-dir=#{Formula["openssl"].opt_prefix}"
2014-08-25 08:49:26 +00:00
# From the bind9 README: "Do not use a parallel "make"."
ENV.deparallelize
system "make"
2014-08-25 08:49:26 +00:00
system "make", "install"
(buildpath+"named.conf").write named_conf
system "#{sbin}/rndc-confgen", "-a", "-c", "#{buildpath}/rndc.key"
etc.install "named.conf", "rndc.key"
end
def post_install
2014-08-25 08:49:26 +00:00
(var+"log/named").mkpath
# Create initial configuration/zone/ca files.
# (Mirrors Apple system install from 10.8)
unless (var+"named").exist?
(var+"named").mkpath
(var+"named/localhost.zone").write localhost_zone
(var+"named/named.local").write named_local
end
end
def named_conf; <<-EOS.undent
//
// Include keys file
//
include "#{etc}/rndc.key";
// Declares control channels to be used by the rndc utility.
//
// It is recommended that 127.0.0.1 be the only address used.
// This also allows non-privileged users on the local host to manage
// your name server.
//
// Default controls
//
controls {
inet 127.0.0.1 port 54 allow { any; }
keys { "rndc-key"; };
};
options {
directory "#{var}/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
//
// a caching only nameserver config
//
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
logging {
category default {
_default_log;
};
channel _default_log {
file "#{var}/log/named/named.log";
severity info;
print-time yes;
};
};
EOS
end
def localhost_zone; <<-EOS.undent
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
1D IN NS @
1D IN A 127.0.0.1
EOS
end
def named_local; <<-EOS.undent
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
EOS
end
plist_options :startup => true
def plist; <<-EOS.undent
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnableTransactions</key>
<true/>
<key>Label</key>
<string>#{plist_name}</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
2014-03-06 05:28:31 +00:00
<string>#{opt_sbin}/named</string>
<string>-f</string>
<string>-c</string>
<string>#{etc}/named.conf</string>
</array>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
EOS
end
end