X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;f=autodns.pl;h=6f14bd35efe3ba46266b45135e4996ac164ae9af;hb=c233fb649154c99c88fbba671aa8d1d5e98c07a4;hp=cfa9510286d8bf178dda0fe4ad94d1933107fad8;hpb=7cff990ef4df44469d5bed817fda2292931a74ae;p=autodns.git diff --git a/autodns.pl b/autodns.pl index cfa9510..6f14bd3 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.7 2005/04/08 11:45:12 noodles Exp $ +# $Id: autodns.pl,v 1.11 2005/05/16 17:26:47 noodles Exp $ # use strict; @@ -16,12 +16,14 @@ use MIME::Parser; $ENV{'PATH'}="/usr/local/bin:/usr/bin:/bin:/usr/sbin"; -my ($from, $subject, $gpguser, $gpggood, $usersfile, $lockfile, $priv); -my ($user, $server, $inprocess, $delcount, $addcount, $reload_command); -my ($domain, @MAIL, @GPGERROR, @COMMANDS, %zones); -my ($me, $ccreply, $conffile, $domainlistroot, @cfgfiles, $VERSION); +my ($from, $subject, $gpguser, $gpggood, $priv); +my ($user, $server, $inprocess, $delcount, $addcount); +my ($domain, @MAIL, @GPGERROR, @COMMANDS, %zones, $VERSION); -$VERSION="0.0.7"; +use vars qw($me $ccreply $conffile $domainlistroot @cfgfiles $usersfile + $lockfile $reload_command); + +$VERSION="0.0.8"; # # Load our config @@ -230,7 +232,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; @@ -239,6 +242,7 @@ if ($entity->parts) { my @GPGOUTPUT=; close GPGERR; close GPGOUT; + waitpid $pid, 0; unlink($text_name); unlink($sig_name); @@ -246,7 +250,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; @@ -257,6 +261,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. @@ -453,6 +458,17 @@ zone \"$domain\" { } else { print REPLY "Couldn't open $domainlistroot$user: $!\n"; } + } elsif ($inprocess && /^MASTER\s(.*)$/) { + if (($priv & 1) != 1) { + print REPLY "You're not authorised to use the MASTER ", + "command.\n"; + } elsif ($1 =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/) { + $server = $1; + print REPLY "Set master IP address to $1\n"; + } else { + print REPLY "$1 doesn't look like a valid IPv4 ", + "address to me.\n"; + } } elsif ($inprocess && /^HELP$/) { print REPLY "In order to use the service, you will need to send GPG signed\n"; print REPLY "messages.\n\n";