* add bind
This commit is contained in:
parent
ef1800450f
commit
6c979c9218
10
bind/127.0.0.zone
Normal file
10
bind/127.0.0.zone
Normal file
@ -0,0 +1,10 @@
|
||||
@ 1D IN SOA localhost. root.localhost. (
|
||||
42 ; serial (yyyymmdd##)
|
||||
3H ; refresh
|
||||
15M ; retry
|
||||
1W ; expiry
|
||||
1D ) ; minimum ttl
|
||||
|
||||
1D IN NS localhost.
|
||||
|
||||
1.0.0.127.in-addr.arpa. 1D IN PTR localhost.
|
131
bind/PKGBUILD
Normal file
131
bind/PKGBUILD
Normal file
@ -0,0 +1,131 @@
|
||||
# POWER Maintainer: Alexander Baldeck <alex.bldck@gmail.com>
|
||||
# Maintainer: Sébastien Luttringer
|
||||
# Contributor: Gaetan Bisson <bisson@archlinux.org>
|
||||
# Contributor: judd <jvinet@zeroflux.org>
|
||||
# Contributor: Mario Vazquez <mario_vazq@hotmail.com>
|
||||
|
||||
pkgbase=bind
|
||||
pkgname=(bind bind-tools)
|
||||
_pkgver=9.13.7
|
||||
pkgver=${_pkgver//-/.}
|
||||
pkgrel=1
|
||||
url='https://www.isc.org/software/bind/'
|
||||
license=('MPL2')
|
||||
arch=(x86_64 powerpc64le)
|
||||
options=('!emptydirs')
|
||||
makedepends=('libcap' 'libxml2' 'zlib' 'krb5' 'e2fsprogs' 'openssl' 'readline'
|
||||
'libidn2' 'dnssec-anchors' 'python' 'json-c' 'python-ply' 'lmdb'
|
||||
'zlib' 'icu' 'xz')
|
||||
validpgpkeys=('AE3FAC796711EC59FC007AA474BB6B9A4CBB3D38') #ISC Code Signing Key 2019 – 2020 (codesign@isc.org)
|
||||
source=("https://ftp.isc.org/isc/bind9/${_pkgver}/bind-${_pkgver}.tar.gz"{,.asc}
|
||||
'tmpfiles.conf'
|
||||
'sysusers.conf'
|
||||
'named.conf'
|
||||
'named.service'
|
||||
'localhost.zone'
|
||||
'localhost.ip6.zone'
|
||||
'127.0.0.zone'
|
||||
'empty.zone')
|
||||
sha1sums=('63632f6e930bdcbbb46214aeb09e8430aa9eef16'
|
||||
'SKIP'
|
||||
'c5a2bcd9b0f009ae71f3a03fbdbe012196962a11'
|
||||
'9537f4835a1f736788d0733c7996a10db2d4eee4'
|
||||
'c017aae379c32c7cb1aa1ad84776b83e3a5c139f'
|
||||
'62b06487323dd0d515a4dc659b8ecd193c29107b'
|
||||
'6704303a6ed431a29b1d8fe7b12decd4d1f2f50f'
|
||||
'52da8f1c0247a11b16daa4e03d920e8f09315cbe'
|
||||
'9c33726088342207ad06d33b2c13408290a0c8ad'
|
||||
'4f4457b310cbbeadca2272eced062a9c2b2b42fe')
|
||||
|
||||
prepare() {
|
||||
msg2 'Getting a fresh version of root DNS'
|
||||
# no more using source array, lack of versioning.
|
||||
curl -o root.hint https://www.internic.net/zones/named.root
|
||||
[[ -s root.hint ]]
|
||||
cd bind-$_pkgver
|
||||
# apply patch from the source array (should be a pacman feature)
|
||||
local filename
|
||||
for filename in "${source[@]}"; do
|
||||
if [[ "$filename" =~ \.patch$ ]]; then
|
||||
msg2 "Applying patch ${filename##*/}"
|
||||
patch -p1 -N -i "$srcdir/${filename##*/}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
build() {
|
||||
cd bind-$_pkgver
|
||||
|
||||
export CFLAGS+=' -DDIG_SIGCHASE'
|
||||
./configure \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--sbindir=/usr/bin \
|
||||
--localstatedir=/var \
|
||||
--disable-static \
|
||||
--enable-fixed-rrset \
|
||||
--enable-full-report \
|
||||
--enable-dnsrps \
|
||||
--with-python=/usr/bin/python \
|
||||
--without-geoip \
|
||||
--with-openssl \
|
||||
--with-libidn2 \
|
||||
--with-libjson \
|
||||
--with-libxml2 \
|
||||
--with-lmdb \
|
||||
--with-libtool
|
||||
make
|
||||
}
|
||||
|
||||
package_bind() {
|
||||
pkgdesc='The ISC DNS Server'
|
||||
provides=('dns-server')
|
||||
depends=('glibc' 'libxml2' 'libcap' 'openssl' 'json-c' 'bind-tools'
|
||||
'zlib' 'lmdb')
|
||||
backup=('etc/named.conf'
|
||||
'var/named/127.0.0.zone'
|
||||
'var/named/localhost.zone'
|
||||
'var/named/localhost.ip6.zone'
|
||||
'var/named/empty.zone')
|
||||
|
||||
cd "bind-$_pkgver"
|
||||
install -dm755 "$pkgdir/usr/share/licenses/$pkgname/"
|
||||
install -Dm644 LICENSE COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/"
|
||||
for _d in bin/{check,named,rndc}; do
|
||||
(cd "$_d" && make DESTDIR="$pkgdir" install)
|
||||
done
|
||||
|
||||
cd "$srcdir"
|
||||
install -D -m644 tmpfiles.conf "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf"
|
||||
install -D -m644 sysusers.conf "$pkgdir/usr/lib/sysusers.d/$pkgname.conf"
|
||||
|
||||
install -D -m644 named.service "$pkgdir/usr/lib/systemd/system/named.service"
|
||||
install -D -m640 -o 0 -g 40 named.conf "$pkgdir/etc/named.conf"
|
||||
|
||||
install -d -m770 -o 0 -g 40 "$pkgdir/var/named"
|
||||
install -m640 -o 0 -g 40 root.hint "$pkgdir/var/named"
|
||||
install -m640 -o 0 -g 40 localhost.zone "$pkgdir/var/named"
|
||||
install -m640 -o 0 -g 40 localhost.ip6.zone "$pkgdir/var/named"
|
||||
install -m640 -o 0 -g 40 127.0.0.zone "$pkgdir/var/named"
|
||||
install -m640 -o 0 -g 40 empty.zone "$pkgdir/var/named"
|
||||
}
|
||||
|
||||
package_bind-tools() {
|
||||
pkgdesc='The ISC DNS tools'
|
||||
depends=('glibc' 'libcap' 'libxml2' 'zlib' 'krb5' 'e2fsprogs' 'python' 'bash'
|
||||
'openssl' 'readline' 'libidn2' 'dnssec-anchors' 'json-c'
|
||||
'lmdb' 'xz' 'icu')
|
||||
conflicts=('dnsutils')
|
||||
replaces=('dnsutils' 'host')
|
||||
provides=("dnsutils=$pkgver")
|
||||
|
||||
cd "bind-$_pkgver"
|
||||
install -Dm644 COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
make DESTDIR="$pkgdir" SUBDIRS="" install
|
||||
(cd lib && make DESTDIR="$pkgdir" install)
|
||||
for _d in bin/{confgen,dig,dnssec,delv,nsupdate,python,tools}; do
|
||||
(cd "$_d" && make DESTDIR="$pkgdir" install)
|
||||
done
|
||||
}
|
||||
|
||||
# vim:set ts=2 sw=2 et:
|
8
bind/empty.zone
Normal file
8
bind/empty.zone
Normal file
@ -0,0 +1,8 @@
|
||||
@ 1D IN SOA localhost. root.localhost. (
|
||||
42 ; serial (yyyymmdd##)
|
||||
3H ; refresh
|
||||
15M ; retry
|
||||
1W ; expiry
|
||||
1D ) ; minimum ttl
|
||||
|
||||
1D IN NS localhost.
|
129
bind/fix-FS#60286.patch
Normal file
129
bind/fix-FS#60286.patch
Normal file
@ -0,0 +1,129 @@
|
||||
diff --git a/lib/irs/getaddrinfo.c b/lib/irs/getaddrinfo.c
|
||||
index 1b2df6d71c9a3df0e75c1f336833a136e0d6a06c..d5481c7afa605880b7c9e5ca17815d5f80e6ea5a 100644
|
||||
--- a/lib/irs/getaddrinfo.c
|
||||
+++ b/lib/irs/getaddrinfo.c
|
||||
@@ -181,6 +181,47 @@ static void _freeaddrinfo(struct addrinfo *ai);
|
||||
#define FOUND_IPV6 0x2
|
||||
#define FOUND_MAX 2
|
||||
|
||||
+/*%
|
||||
+ * Try converting the scope identifier in 'src' to a network interface index.
|
||||
+ * Upon success, return true and store the resulting index in 'dst'. Upon
|
||||
+ * failure, return false.
|
||||
+ */
|
||||
+static bool
|
||||
+parse_scopeid(const char *src, uint32_t *dst) {
|
||||
+ uint32_t scopeid = 0;
|
||||
+
|
||||
+ REQUIRE(src != NULL);
|
||||
+ REQUIRE(dst != NULL);
|
||||
+
|
||||
+#ifdef HAVE_IF_NAMETOINDEX
|
||||
+ /*
|
||||
+ * Try using if_nametoindex() first if it is available. As it does not
|
||||
+ * handle numeric scopes, we do not simply return if it fails.
|
||||
+ */
|
||||
+ scopeid = (uint32_t)if_nametoindex(src);
|
||||
+#endif
|
||||
+
|
||||
+ /*
|
||||
+ * Fall back to numeric scope processing if if_nametoindex() either
|
||||
+ * fails or is unavailable.
|
||||
+ */
|
||||
+ if (scopeid == 0) {
|
||||
+ char *endptr = NULL;
|
||||
+ scopeid = (uint32_t)strtoul(src, &endptr, 10);
|
||||
+ /*
|
||||
+ * The scope identifier must not be empty and no trailing
|
||||
+ * characters are allowed after it.
|
||||
+ */
|
||||
+ if (src == endptr || endptr == NULL || *endptr != '\0') {
|
||||
+ return (false);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ *dst = scopeid;
|
||||
+
|
||||
+ return (true);
|
||||
+}
|
||||
+
|
||||
#define ISC_AI_MASK (AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST)
|
||||
/*%
|
||||
* Get a list of IP addresses and port numbers for host hostname and
|
||||
@@ -365,39 +406,24 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||
char abuf[sizeof(struct in6_addr)];
|
||||
char nbuf[NI_MAXHOST];
|
||||
int addrsize, addroff;
|
||||
-#ifdef IRS_HAVE_SIN6_SCOPE_ID
|
||||
- char *p, *ep;
|
||||
char ntmp[NI_MAXHOST];
|
||||
- uint32_t scopeid;
|
||||
-#endif
|
||||
+ uint32_t scopeid = 0;
|
||||
|
||||
-#ifdef IRS_HAVE_SIN6_SCOPE_ID
|
||||
/*
|
||||
* Scope identifier portion.
|
||||
*/
|
||||
ntmp[0] = '\0';
|
||||
if (strchr(hostname, '%') != NULL) {
|
||||
+ char *p;
|
||||
strlcpy(ntmp, hostname, sizeof(ntmp));
|
||||
p = strchr(ntmp, '%');
|
||||
- ep = NULL;
|
||||
-
|
||||
- /*
|
||||
- * Vendors may want to support non-numeric
|
||||
- * scopeid around here.
|
||||
- */
|
||||
|
||||
- if (p != NULL)
|
||||
- scopeid = (uint32_t)strtoul(p + 1,
|
||||
- &ep, 10);
|
||||
- if (p != NULL && ep != NULL && ep[0] == '\0')
|
||||
+ if (p != NULL && parse_scopeid(p + 1, &scopeid)) {
|
||||
*p = '\0';
|
||||
- else {
|
||||
+ } else {
|
||||
ntmp[0] = '\0';
|
||||
- scopeid = 0;
|
||||
}
|
||||
- } else
|
||||
- scopeid = 0;
|
||||
-#endif
|
||||
+ }
|
||||
|
||||
if (inet_pton(AF_INET, hostname, (struct in_addr *)abuf)
|
||||
== 1) {
|
||||
@@ -415,7 +441,6 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||
addroff = offsetof(struct sockaddr_in, sin_addr);
|
||||
family = AF_INET;
|
||||
goto common;
|
||||
-#ifdef IRS_HAVE_SIN6_SCOPE_ID
|
||||
} else if (ntmp[0] != '\0' &&
|
||||
inet_pton(AF_INET6, ntmp, abuf) == 1) {
|
||||
if (family && family != AF_INET6)
|
||||
@@ -424,7 +449,6 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||
addroff = offsetof(struct sockaddr_in6, sin6_addr);
|
||||
family = AF_INET6;
|
||||
goto common;
|
||||
-#endif
|
||||
} else if (inet_pton(AF_INET6, hostname, abuf) == 1) {
|
||||
if (family != 0 && family != AF_INET6)
|
||||
return (EAI_NONAME);
|
||||
@@ -444,12 +468,10 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||
ai->ai_socktype = socktype;
|
||||
SIN(ai->ai_addr)->sin_port = port;
|
||||
memmove((char *)ai->ai_addr + addroff, abuf, addrsize);
|
||||
+ if (ai->ai_family == AF_INET6) {
|
||||
+ SIN6(ai->ai_addr)->sin6_scope_id = scopeid;
|
||||
+ }
|
||||
if ((flags & AI_CANONNAME) != 0) {
|
||||
-#ifdef IRS_HAVE_SIN6_SCOPE_ID
|
||||
- if (ai->ai_family == AF_INET6)
|
||||
- SIN6(ai->ai_addr)->sin6_scope_id =
|
||||
- scopeid;
|
||||
-#endif
|
||||
if (getnameinfo(ai->ai_addr,
|
||||
(socklen_t)ai->ai_addrlen,
|
||||
nbuf, sizeof(nbuf), NULL, 0,
|
10
bind/localhost.ip6.zone
Normal file
10
bind/localhost.ip6.zone
Normal file
@ -0,0 +1,10 @@
|
||||
@ 1D IN SOA localhost. root.localhost. (
|
||||
42 ; serial (yyyymmdd##)
|
||||
3H ; refresh
|
||||
15M ; retry
|
||||
1W ; expiry
|
||||
1D ) ; minimum ttl
|
||||
|
||||
1D IN NS localhost.
|
||||
|
||||
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 1D IN PTR localhost.
|
11
bind/localhost.zone
Normal file
11
bind/localhost.zone
Normal file
@ -0,0 +1,11 @@
|
||||
@ 1D IN SOA localhost. root.localhost. (
|
||||
42 ; serial (yyyymmdd##)
|
||||
3H ; refresh
|
||||
15M ; retry
|
||||
1W ; expiry
|
||||
1D ) ; minimum ttl
|
||||
|
||||
1D IN NS localhost.
|
||||
|
||||
localhost. 1D IN A 127.0.0.1
|
||||
localhost. 1D IN AAAA ::1
|
72
bind/named.conf
Normal file
72
bind/named.conf
Normal file
@ -0,0 +1,72 @@
|
||||
// vim:set ts=4 sw=4 et:
|
||||
|
||||
options {
|
||||
directory "/var/named";
|
||||
pid-file "/run/named/named.pid";
|
||||
|
||||
// Uncomment these to enable IPv6 connections support
|
||||
// IPv4 will still work:
|
||||
// listen-on-v6 { any; };
|
||||
// Add this for no IPv4:
|
||||
// listen-on { none; };
|
||||
|
||||
allow-recursion { 127.0.0.1; };
|
||||
allow-transfer { none; };
|
||||
allow-update { none; };
|
||||
|
||||
version none;
|
||||
hostname none;
|
||||
server-id none;
|
||||
};
|
||||
|
||||
zone "localhost" IN {
|
||||
type master;
|
||||
file "localhost.zone";
|
||||
};
|
||||
|
||||
zone "0.0.127.in-addr.arpa" IN {
|
||||
type master;
|
||||
file "127.0.0.zone";
|
||||
};
|
||||
|
||||
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
|
||||
type master;
|
||||
file "localhost.ip6.zone";
|
||||
};
|
||||
|
||||
zone "255.in-addr.arpa" IN {
|
||||
type master;
|
||||
file "empty.zone";
|
||||
};
|
||||
|
||||
zone "0.in-addr.arpa" IN {
|
||||
type master;
|
||||
file "empty.zone";
|
||||
};
|
||||
|
||||
zone "." IN {
|
||||
type hint;
|
||||
file "root.hint";
|
||||
};
|
||||
|
||||
//zone "example.org" IN {
|
||||
// type slave;
|
||||
// file "example.zone";
|
||||
// masters {
|
||||
// 192.168.1.100;
|
||||
// };
|
||||
// allow-query { any; };
|
||||
// allow-transfer { any; };
|
||||
//};
|
||||
|
||||
//logging {
|
||||
// channel xfer-log {
|
||||
// file "/var/log/named.log";
|
||||
// print-category yes;
|
||||
// print-severity yes;
|
||||
// severity info;
|
||||
// };
|
||||
// category xfer-in { xfer-log; };
|
||||
// category xfer-out { xfer-log; };
|
||||
// category notify { xfer-log; };
|
||||
//};
|
10
bind/named.service
Normal file
10
bind/named.service
Normal file
@ -0,0 +1,10 @@
|
||||
[Unit]
|
||||
Description=Internet domain name server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/named -f -u named
|
||||
ExecReload=/usr/bin/kill -HUP $MAINPID
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
1
bind/sysusers.conf
Normal file
1
bind/sysusers.conf
Normal file
@ -0,0 +1 @@
|
||||
u named 40 "BIND DNS Server" -
|
1
bind/tmpfiles.conf
Normal file
1
bind/tmpfiles.conf
Normal file
@ -0,0 +1 @@
|
||||
d /run/named 0750 named named -
|
Loading…
x
Reference in New Issue
Block a user