X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;f=autodns.pl;h=8e1e20bbfc8c105119adb0422daf14be61031db8;hb=eff7c09ed93bdb9e1c6d631e29aad730926bbae4;hp=a2b4dd9fb6f52e24b3d91ac6e4930abb723d01b3;hpb=3c571e259ea33befdc6dff62ea6024415cbdcb7e;p=autodns.git diff --git a/autodns.pl b/autodns.pl index a2b4dd9..8e1e20b 100755 --- a/autodns.pl +++ b/autodns.pl @@ -1,11 +1,11 @@ #!/usr/bin/perl -Tw -# autodns 0.0.7 -# Copyright 1999-2004 Project Purple. Written by Jonathan McDowell +# autodns 0.0.8 +# Copyright 1999-2005 Project Purple. Written by Jonathan McDowell # See ACKNOWLEDGEMENTS file for full details of contributors. # http://www.earth.li/projectpurple/progs/autodns.html # Released under the GPL. # -# $Id: autodns.pl,v 1.6 2005/04/08 11:37:16 noodles Exp $ +# $Id: autodns.pl,v 1.9 2005/04/13 17:24:40 noodles Exp $ # use strict; @@ -21,39 +21,18 @@ my ($user, $server, $inprocess, $delcount, $addcount, $reload_command); my ($domain, @MAIL, @GPGERROR, @COMMANDS, %zones); my ($me, $ccreply, $conffile, $domainlistroot, @cfgfiles, $VERSION); -$VERSION="0.0.7"; +$VERSION="0.0.8"; # -# Local configuration here (until it gets moved to a config file). +# Load our config # -# These are sort of suitable for a Debian setup. -# - -# Who I should reply as. -$me="autodns\@earth.li"; - -# Who replies should be CCed to. -$ccreply="noodles\@earth.li"; - -# Where to look for zones we're already hosting. -@cfgfiles=("/etc/bind/named.conf", - "/etc/bind/named.secondary.conf"); - -# The file we should add/delete domains from. -$conffile="/etc/bind/named.secondary.conf"; - -# The file that contains details of the authorized users. -$usersfile="/etc/bind/autodns.users"; - -# Base file name to for list of users domains. -$domainlistroot="/etc/bind/domains."; - -# The lockfile we use to ensure we have exclusive access to the -# $domainlistroot$user files and $conffile. -$lockfile="/etc/bind/autodns.lck"; - -# The command to reload the nameserver domains list. -$reload_command="sudo ndc reconfig 2>&1"; +my $file = '/etc/bind/autodns.conf'; +unless (my $ret = do $file) { + warn "Couldn't parse $file\n" if $@; + warn "Couldn't do $file\n" unless defined $ret; + warn "Couldn't run $file\n" unless $ret; + die "Problem reading config file!\n"; +} ### ### There should be no need to edit anything below (unless you're not @@ -251,7 +230,8 @@ if ($entity->parts) { } if ($got_sig && $got_text) { - open3(\*GPGIN, \*GPGOUT, \*GPGERR, "gpg --batch --verify ". + my $pid = open3(\*GPGIN, \*GPGOUT, \*GPGERR, + "gpg --batch --verify ". $sig_name." ".$text_name); close GPGIN; @@ -260,6 +240,7 @@ if ($entity->parts) { my @GPGOUTPUT=; close GPGERR; close GPGOUT; + waitpid $pid, 0; unlink($text_name); unlink($sig_name); @@ -267,7 +248,7 @@ if ($entity->parts) { } else { # Clear text. - open3(\*GPGIN, \*GPGOUT, \*GPGERR, "gpg --batch"); + my $pid = open3(\*GPGIN, \*GPGOUT, \*GPGERR, "gpg --batch"); # Feed it the mail. print GPGIN @MAIL; @@ -278,6 +259,7 @@ if ($entity->parts) { @COMMANDS=; close GPGERR; close GPGOUT; + waitpid $pid, 0; } # Check who it's from and if the signature was a good one.