Browse Source

port totd, the trick or treat daemon

This is a simple DNS-ALG implementation used for NAT-PT & Co.
Phil Sutter 14 years ago
parent
commit
67ec049f25

+ 24 - 0
package/totd/Makefile

@@ -0,0 +1,24 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=		totd
+PKG_VERSION:=		1.5.1
+PKG_RELEASE:=		1
+PKG_MD5SUM:=		7edaedae9f6aca5912dd6c123582cf08
+PKG_DESCR:=		Trick or Treat Daemon (a simple DNS-ALG for NAT-PT)
+PKG_SECTION:=		dns
+PKG_URL:=		http://www.dillema.net/software/totd.html
+PKG_SITES:=		http://www.dillema.net/software/totd/
+
+include $(TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,TOTD,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+
+post-install:
+	$(INSTALL_DIR) $(IDIR_TOTD)/{usr/sbin,etc}
+	${INSTALL_DATA} ./files/totd.conf ${IDIR_TOTD}/etc/
+	$(INSTALL_BIN) $(WRKINST)/usr/sbin/totd $(IDIR_TOTD)/usr/sbin/
+
+include ${TOPDIR}/mk/pkg-bottom.mk

+ 14 - 0
package/totd/files/totd.conf

@@ -0,0 +1,14 @@
+; you can have multiple forwarders, totd will always prefer
+; forwarders listed early and only use forwarders listed later
+; if the first ones are unresponsive.
+forwarder ::1
+
+; you can have multiple prefixes or even no prefixes at all
+; totd uses them in round-robin fashion
+prefix 0::ffff:ffff:0:0
+
+; the port totd listens on for incoming requests
+port 53
+
+; the pidfile to use (default: /var/run/totd.pid)
+pidfile /var/run/totd.pid

+ 1 - 0
package/totd/files/totd.conffiles

@@ -0,0 +1 @@
+/etc/totd.conf

+ 26 - 0
package/totd/files/totd.init

@@ -0,0 +1,26 @@
+#!/bin/sh
+#PKG totd
+#INIT 60
+. /etc/rc.conf
+
+case $1 in
+autostop) ;;
+autostart)
+	test x"${totd:-NO}" = x"NO" && exit 0
+	exec sh $0 start
+	;;
+start)
+	totd $totd_flags -c /etc/totd.conf
+	;;
+stop)
+	pkill totd
+	;;
+restart)
+	sh $0 stop
+	sh $0 start
+	;;
+*)
+	echo "Usage: $0 {start | stop | restart}"
+	;;
+esac
+exit $?

+ 4 - 0
package/totd/files/totd.postinst

@@ -0,0 +1,4 @@
+#!/bin/sh
+. $IPKG_INSTROOT/etc/functions.sh
+add_rcconf 'additional flags for totd' totd_flags "-q"
+add_rcconf totd totd NO

+ 39 - 0
package/totd/patches/patch-Makefile_in

@@ -0,0 +1,39 @@
+	- set ${CC} only if unset
+	- drop -Werror, sources aren't that sane ;)
+	- don't chown the files when installing
+	- use DESTDIR when installing
+	- don't strip binaries (we do ourself, install chooses the wrong strip binary)
+	- create non-existing target directories
+--- totd-1.5.orig/Makefile.in	2005-01-31 12:55:14.000000000 +0100
++++ totd-1.5/Makefile.in	2010-03-25 21:21:05.085663745 +0100
+@@ -4,7 +4,7 @@
+ # <$Id: Makefile.in,v 3.43 2005/01/31 11:55:14 dillema Exp $>
+ #
+ 
+-CC = gcc
++CC ?= gcc
+ 
+ # These use the standard autoconf variables, which by default are
+ # rooted in @prefix@
+@@ -19,7 +19,7 @@ TOT_CONFIG_FILE=@sysconfdir@/totd.conf
+ 
+ INSTALL = /usr/bin/install
+ 
+-CFLAGS  = @CFLAGS@ @DEFS@  -Werror -Wall -DTOTCONF=\"$(TOT_CONFIG_FILE)\" @OPTFLAGS@ $(INCLUDEPATH)
++CFLAGS  = @CFLAGS@ @DEFS@  -Wall -DTOTCONF=\"$(TOT_CONFIG_FILE)\" @OPTFLAGS@ $(INCLUDEPATH)
+ 
+ # When debugging is enabled by --enable-malloc-debug flag to the configure
+ # script, the @DBMALLOC@ substitution will contain the empty string, thus
+@@ -66,8 +66,10 @@ libswill.a:	
+ 	-ranlib libswill.a
+ 
+ install: $(PROG)
+-	$(INSTALL) -c -s -m 0555 -o bin -g bin $(PROG) $(INSTALLDIR)
+-	$(INSTALL) -c -m 0444 -o root -g wheel $(MAN) $(INSTALLMAN)/man8
++	mkdir -p ${DESTDIR}/${INSTALLDIR}
++	$(INSTALL) -c -m 0555 $(PROG) ${DESTDIR}/$(INSTALLDIR)
++	mkdir -p ${DESTDIR}/${INSTALLMAN}/man8
++	$(INSTALL) -c -m 0444 $(MAN) ${DESTDIR}/$(INSTALLMAN)/man8
+ 
+ lint:
+ 	lint ${SRCS}

+ 16 - 0
package/totd/patches/patch-ne_mesg_c

@@ -0,0 +1,16 @@
+	fix for verbose logging
+--- totd-1.5.orig/ne_mesg.c	2002-12-10 23:31:18.000000000 +0100
++++ totd-1.5/ne_mesg.c	2010-03-25 23:45:35.185664417 +0100
+@@ -470,6 +470,12 @@ u_char *dname_decompress (u_char *buf, i
+ 
+ 	next = NULL;
+ 	written_len = token_len = 0;
++
++	if (!m_head)
++		m_head = dname;
++	if (!m_tail)
++		m_tail = dname + buflen;
++
+ 	for (cp = dname; *cp; cp += token_len) {
+ 		iter = 0;
+ 	  top: