diff options
Diffstat (limited to 'abs/extra')
-rw-r--r-- | abs/extra/dnsmasq/PKGBUILD | 58 | ||||
-rw-r--r-- | abs/extra/dnsmasq/dnsmasq.confd | 9 | ||||
-rw-r--r-- | abs/extra/dnsmasq/dnsmasq.install | 21 | ||||
-rw-r--r-- | abs/extra/dnsmasq/dnsmasq.service | 13 | ||||
-rwxr-xr-x | abs/extra/dnsmasq/rc.dnsmasq | 58 |
5 files changed, 120 insertions, 39 deletions
diff --git a/abs/extra/dnsmasq/PKGBUILD b/abs/extra/dnsmasq/PKGBUILD index f888ccd..1fd617d 100644 --- a/abs/extra/dnsmasq/PKGBUILD +++ b/abs/extra/dnsmasq/PKGBUILD @@ -1,41 +1,51 @@ -# $Id: PKGBUILD 66607 2010-02-01 01:42:17Z giovanni $ -# Maintainer: Paul Mattal <paul@archlinux.org> +# $Id: PKGBUILD 160917 2012-06-07 00:05:24Z dreisner $ +# Maintainer: Dave Reisner <dreisner@archlinux.org> +# Contributor: Paul Mattal <paul@archlinux.org> # Contributor: Tom Newsom <Jeepster@gmx.co.uk> pkgname=dnsmasq -pkgver=2.55 +pkgver=2.62 pkgrel=1 pkgdesc="Lightweight, easy to configure DNS forwarder and DHCP server" url="http://www.thekelleys.org.uk/dnsmasq/doc.html" arch=('i686' 'x86_64') license=('GPL') -depends=('glibc' 'bash') -makedepends=('libcap>=2.16') -backup=('etc/dnsmasq.conf') -install= -source=("http://www.thekelleys.org.uk/$pkgname/$pkgname-$pkgver.tar.gz" - 'rc.dnsmasq') +depends=('glibc' 'dbus-core') +install=$pkgname.install +backup=('etc/dnsmasq.conf' + 'etc/conf.d/dnsmasq') +source=("http://www.thekelleys.org.uk/$pkgname/$pkgname-$pkgver.tar.gz" + 'dnsmasq.confd' + 'rc.dnsmasq' + 'dnsmasq.service') +md5sums=('f47e5cb8f5bac6343f24b2dbe317ab40' + '66479e99123faeab83ebaed709ef95b5' + '819fbdf6440d710616e6df5f8ca9cdba' + '631d8349acbed1b01d4e11d9f42fdb7d') build() { - cd $srcdir/$pkgname-$pkgver + cd "$pkgname-$pkgver" - # Build - make || return 1 + # link against dbus. this ugliness is needed to ensure that the + # compile time opts report properly on startup. yuck. + sed -i '/^#ifdef DNSMASQ_COMPILE_OPTS/ { + i#define HAVE_DBUS + }' src/config.h - # Install - install -d $pkgdir/etc/rc.d || return 1 - make PREFIX=/usr DESTDIR=$pkgdir install || return 1 + make +} + +package() { + cd "$pkgname-$pkgver" + + make BINDIR=/usr/bin PREFIX=/usr DESTDIR="$pkgdir" install - install -D -m755 \ - $srcdir/rc.dnsmasq $pkgdir/etc/rc.d/dnsmasq || return 1 - install -D -m644 \ - dnsmasq.conf.example $pkgdir/etc/dnsmasq.conf || return 1 + install -Dm755 "$srcdir"/rc.dnsmasq "$pkgdir"/etc/rc.d/dnsmasq + install -Dm644 "$srcdir"/dnsmasq.confd "$pkgdir/etc/conf.d/dnsmasq" - # Make the Required Directories for DHCP Server Default Directories - install -d $pkgdir/var/db || return 1 - install -d $pkgdir/var/lib/misc || return 1 + install -Dm644 "dbus/dnsmasq.conf" "$pkgdir"/etc/dbus-1/system.d/dnsmasq.conf + install -Dm644 "dnsmasq.conf.example" "$pkgdir"/etc/dnsmasq.conf + install -Dm644 "$srcdir/dnsmasq.service" "$pkgdir"/usr/lib/systemd/system/dnsmasq.service } # vim: ts=2 sw=2 et ft=sh -md5sums=('b093d7c6bc7f97ae6fd35d048529232a' - 'e956eee1ec24212a3254d2b168187495') diff --git a/abs/extra/dnsmasq/dnsmasq.confd b/abs/extra/dnsmasq/dnsmasq.confd new file mode 100644 index 0000000..933b928 --- /dev/null +++ b/abs/extra/dnsmasq/dnsmasq.confd @@ -0,0 +1,9 @@ +# +# runtime config for dnsmasq +# + +# if unset, dnsmasq will run as nobody. +DNSMASQ_USER=dnsmasq + +# other runtime options. treated as an array. +DNSMASQ_OPTS=() diff --git a/abs/extra/dnsmasq/dnsmasq.install b/abs/extra/dnsmasq/dnsmasq.install new file mode 100644 index 0000000..c2edb7d --- /dev/null +++ b/abs/extra/dnsmasq/dnsmasq.install @@ -0,0 +1,21 @@ +#!/bin/sh + +add_dnsmasq_user() { + if ! getent passwd dnsmasq >/dev/null; then + useradd -r -d / -c 'dnsmasq daemon' -s /sbin/nologin dnsmasq + fi +} + +post_install() { + add_dnsmasq_user +} + +post_upgrade() { + add_dnsmasq_user +} + +post_remove() { + if getent passwd dnsmasq >/dev/null; then + userdel dnsmasq + fi +} diff --git a/abs/extra/dnsmasq/dnsmasq.service b/abs/extra/dnsmasq/dnsmasq.service new file mode 100644 index 0000000..05a1f0b --- /dev/null +++ b/abs/extra/dnsmasq/dnsmasq.service @@ -0,0 +1,13 @@ +[Unit] +Description=A lightweight DHCP and caching DNS server + +[Service] +Type=dbus +BusName=uk.org.thekelleys.dnsmasq +ExecStartPre=/usr/bin/dnsmasq --test +ExecStart=/usr/bin/dnsmasq -k --enable-dbus --user=dnsmasq --pid-file +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target +Alias=dbus-uk.org.thekelleys.dnsmasq diff --git a/abs/extra/dnsmasq/rc.dnsmasq b/abs/extra/dnsmasq/rc.dnsmasq index 1676072..4030c28 100755 --- a/abs/extra/dnsmasq/rc.dnsmasq +++ b/abs/extra/dnsmasq/rc.dnsmasq @@ -2,35 +2,63 @@ . /etc/rc.conf . /etc/rc.d/functions +. /etc/conf.d/dnsmasq -PID=`pidof -o %PPID /usr/sbin/dnsmasq` -case "$1" in +checkconfig() { + local testout + + if ! testout=$(/usr/bin/dnsmasq --test 2>&1); then + echo "$testout" + return 1 + fi + + return 0 +} + +pidfile=/run/dnsmasq.pid +if [[ -r $pidfile ]]; then + read -r PID < "$pidfile" + if [[ ! -d /proc/$PID ]]; then + # stale pidfile + unset PID + rm -f "$pidfile" + fi +fi + +case $1 in start) stat_busy "Starting DNS/DHCP daemon" - [ -z "$PID" ] && /usr/sbin/dnsmasq - if [ $? -gt 0 ] ; then - stat_fail + if [[ -z $PID ]] && checkconfig && + /usr/bin/dnsmasq "--user=${DNSMASQ_USER:-nobody}" \ + "--pid-file=$pidfile" \ + "${DNSMASQ_OPTS[@]}"; then + add_daemon dnsmasq + stat_done else - add_daemon dnsmasq # create the 'state' dir - stat_done + stat_fail fi ;; stop) stat_busy "Stopping DNS/DHCP daemon" - [ "$PID" ] && kill $PID &> /dev/null - if [ $? -gt 0 ]; then - stat_fail - else - rm_daemon dnsmasq # remove the 'state' dir + if [[ $PID ]] && kill "$PID" &> /dev/null; then + # dnsmasq doesn't clean up after itself + rm -f "$pidfile" + rm_daemon dnsmasq stat_done + else + stat_fail fi ;; restart) $0 stop - sleep 5 + sleep 1 $0 start ;; + checkconfig) + # diagnostics will be printed, with zero/non-zero exit + /usr/bin/dnsmasq --test + ;; *) - echo "usage: $0 {start|stop|restart}" + echo "usage: $0 <start|stop|restart|checkconfig>" esac -exit 0 + |