Index: head/dns/dns_balance/Makefile =================================================================== --- head/dns/dns_balance/Makefile (revision 407261) +++ head/dns/dns_balance/Makefile (revision 407262) @@ -1,57 +1,58 @@ # Created by: Akinori MUSHA aka knu # $FreeBSD$ PORTNAME= dns_balance PORTVERSION= 2.0 +PORTREVISION= 1 CATEGORIES= dns MASTER_SITES= http://www.netlab.cs.tsukuba.ac.jp/~yokota/archive/ \ http://BSDforge.com/projects/source/dns/dns_balance/ DISTNAME= DNS-Balance-${PORTVERSION} MAINTAINER= portmaster@BSDforge.com COMMENT= Dynamic load-balancing DNS server USE_RUBY= yes USE_RC_SUBR= dns_balance NO_BUILD= yes RUBY_SHEBANG_FILES= ${WRKSRC}/dns_balance.rb \ ${WRKSRC}/sample/makedb.rb \ ${WRKSRC}/sample/make_namespace.rb ETCS= addrdb.rb \ namespace.rb LIBS= as_search.rb \ cache.rb \ datatype.rb \ log_writer.rb \ multilog.rb \ util.rb PLIST_SUB+= ETCDIR=${ETCDIR} SUB_LIST+= RUBY=${RUBY} OPTIONS_DEFINE= DOCS EXAMPLES post-patch: ${SED} -E -e "s,%%PREFIX%%,${PREFIX},g" \ -e "s,%%PORTNAME%%,${PORTNAME},g" \ -e "s,%%ETCDIR%%,${ETCDIR},g" \ ${WRKSRC}/dns_balance.rb > ${WRKSRC}/dns_balance do-install: ${INSTALL_SCRIPT} ${WRKSRC}/dns_balance ${STAGEDIR}${PREFIX}/sbin @${MKDIR} ${STAGEDIR}${ETCDIR} .for FILE in ${ETCS} ${INSTALL_DATA} ${WRKSRC}/${FILE} ${STAGEDIR}${ETCDIR}/${FILE}.dist .endfor @${MKDIR} ${STAGEDIR}${PREFIX}/lib/${PORTNAME} (cd ${WRKSRC} && ${INSTALL_DATA} ${LIBS} \ ${STAGEDIR}${PREFIX}/lib/${PORTNAME}) @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} ${INSTALL_DATA} ${WRKSRC}/sample/* ${STAGEDIR}${EXAMPLESDIR} @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/README* ${WRKSRC}/Q_and_A* ${STAGEDIR}${DOCSDIR} .include Index: head/dns/dns_balance/files/patch-dns_balance.rb =================================================================== --- head/dns/dns_balance/files/patch-dns_balance.rb (revision 407261) +++ head/dns/dns_balance/files/patch-dns_balance.rb (revision 407262) @@ -1,103 +1,97 @@ --- dns_balance.rb.orig 2005-06-10 22:23:56 UTC +++ dns_balance.rb -@@ -1,4 +1,4 @@ --#!/usr/bin/ruby -+#!/usr/local/bin/ruby22 - # - # DNS Balance --- 動的負荷分散を行なう DNS サーバ - # @@ -7,14 +7,7 @@ # $Id: dns_balance.rb,v 1.25 2003/06/13 22:07:27 elca Exp $ # DNS Balance の存在するパス名 -if ENV["ROOT"] == nil - warn("\"ROOT\" environment is recommended. Use current directory in this time.") - PREFIX = "." -# exit(111) -else - PREFIX = ENV["ROOT"] - $LOAD_PATH.unshift(PREFIX) -end +$LOAD_PATH.unshift("%%PREFIX%%/etc/%%PORTNAME%%", "%%PREFIX%%/lib/%%PORTNAME%%") $LOAD_PATH.freeze require 'socket' @@ -204,6 +197,14 @@ OptionParser::new { opt.on("--as", "Enable AS namespace") { OPT["as"] = true } + opt.on("-l LOGFILE", String, "Print log to LOGFILE") { + |o| + OPT["l"] = o; + } + opt.on("-p PIDFILE", String, "Record PID to PIDFILE") { + |o| + OPT["p"] = o; + } opt.on_tail("-h", "--help", "Show this help message and exit") { STDERR.printf("%s", opt.to_s) exit(111) @@ -212,10 +213,42 @@ OptionParser::new { } OPT.freeze -ML = MultiLog::new -ML.open +exit! if fork +Process::setsid +exit! if fork +STDIN.close +STDOUT.close +STDERR.close + +$pidfile = nil +if OPT["p"] + $pidfile = OPT["p"] + File::open($pidfile, 'w') { |f| f.puts $$ } +end + +$logout = nil +if OPT["l"] + $logout = File::open(OPT["l"], 'a+') + $logout.sync = true +end + +[0, 2, 3, 5, 10, 13, 15].each do |sig| + trap(sig) { + File::unlink($pidfile) if $pidfile + $logout.close if $logout + exit + } +end + + ML = MultiLog.new +if OPT["l"] + $logout = File::open(OPT["l"], 'a+') + $logout.sync = true + ML.open($logout) +else + ML.open +end -ML.log("dir: " + PREFIX) ML.log("start") @@ -224,7 +257,7 @@ ML.log("start") # Thread::start { loop { - if test(?r, PREFIX + "/addr") || test(?r, "./addr") + if test(?r, "%%ETCDIR%%" + "/addr") begin load("addr") @@ -234,7 +267,7 @@ Thread::start { end end - #if test(?r, PREFIX + "/addr-once") || test(?r, "./addr-once") + #if test(?r, "%%ETCDIR%%" + "/addr-once") # Thread.exit #end