removed Net::DDNS and updated master

This commit is contained in:
2023-11-12 17:29:33 +00:00
parent 23b5a19166
commit 3b5a21d819
5 changed files with 33 additions and 23 deletions

39
DDNS.pm
View File

@ -2,7 +2,6 @@ package Martnet::DDNS;
use strict;
use warnings;
use Net::DNS;
use File::Temp qw/tempfile/;
use Memoize;
@ -12,13 +11,15 @@ our $VERSION = '0.4';
# our $misterdns = '198.251.79.234';
our $misterdns = '5.78.68.64';
our $defaultmaster = '5.78.68.64'; # could be v4 and v6 like '198.251.79.234;2607:f1c0:86e:b66f:6b86:babb:c367:b0dc'
our $keyfile = '/etc/bind/zone-management.key';
sub new {
my $me = shift;
my %opts = @_;
return bless {
'keyfile' => '/etc/bind/Knewmartnet.+165+36945.key',
'keyfile' => $keyfile,
%opts
}, $me;
}
@ -53,21 +54,27 @@ sub _lookupOrDie {
_validateOrDie($dom);
my $fqdn = _fqdn($dom, $type);
my $res = Net::DNS::Resolver->new;
my $query = $res->query($fqdn, "TXT");
if ($query) {
foreach my $rr (grep { $_->type eq 'TXT' } $query->answer) {
# We found a record; that's all that I care about.
#print $rr->nsdname, "\n";
return 1;
my $answer;
my $all = '';
my $fh;
open($fh, "dig +short -t txt \@${misterdns} $fqdn |")
|| die "Can't open dig: $!";
while (<$fh>) {
$all .= $_;
if ($_ =~ /^\"(.+)\"$/) {
$answer = $1;
}
}
if ($answer) {
# We found a record; that's all I care about.
return 1;
}
else {
die "query failed: ", $res->errorstring, "\n";
die "query failed: $all\n";
}
# Unreached
die "Failed to find existing DNS record for $fqdn";
}
@ -205,5 +212,11 @@ sub is_dnssec {
return 0;
}
sub default_master {
my ($this, $type) = @_;
# This could return different masters for different types
return $defaultmaster;
}
1;

View File

@ -3,8 +3,7 @@ use ExtUtils::MakeMaker;
WriteMakefile(
'NAME' => 'Martnet::DDNS',
'VERSION_FROM' => 'DDNS.pm',
'PREREQ_PM' => { Net::DNS => 0.66,
File::Temp => 0.22,
'PREREQ_PM' => { File::Temp => 0.22,
Regexp::Common => 2013031301,
},
'EXE_FILES' => [ 'bin/add-vhost',

View File

@ -7,7 +7,8 @@ use Regexp::Common qw/net/;
my $host = shift || die "No zonename provided";
my $master = shift;
$master ||= '198.251.79.234;2607:f1c0:86e:b66f:6b86:babb:c367:b0dc';
my $ddns = Martnet::DDNS->new();
$master ||= $ddns->default_master();
die "Zonename must end in a dot"
unless ($host =~ /^[a-zA-Z0-9\.\-\_]+\.$/);
@ -16,5 +17,4 @@ my $regex = $RE{net}{IPv4} . '|' . $RE{net}{IPv6};
die "Master must be an IPv4 or IPv6 address"
unless ($master =~ /^$regex$/);
my $ddns = Martnet::DDNS->new();
$ddns->add($host, $master, '_custom');

View File

@ -7,8 +7,8 @@ use Regexp::Common qw/net/;
my $host = shift || die "No zonename provided";
my $master = shift;
#$master ||= '198.251.79.234';
$master ||= '198.251.79.234;2607:f1c0:86e:b66f:6b86:babb:c367:b0dc';
my $ddns = Martnet::DDNS->new();
$master ||= $ddns->default_master();
die "Zonename must end in a dot"
@ -18,5 +18,4 @@ my $regex = $RE{net}{IPv4} . '|' . $RE{net}{IPv6};
die "Master must be an IPv4 or IPv6 address"
unless ($master =~ /^$regex$/);
my $ddns = Martnet::DDNS->new();
$ddns->add($host, $master, '_dnssec');

View File

@ -6,8 +6,8 @@ use Martnet::DDNS;
use Regexp::Common qw/net/;
my $host = shift || die "No vhost provided";
#my $master = shift || die "No master DNS IP provided";
my $master ||= '198.251.79.234;2607:f1c0:86e:b66f:6b86:babb:c367:b0dc';
my $ddns = Martnet::DDNS->new();
my $master ||= $ddns->default_master();
die "Hostname must end in a dot"
unless ($host =~ /^[a-zA-Z0-9\.\-\_]+\.$/);
@ -16,5 +16,4 @@ my $regex = $RE{net}{IPv4} . '|' . $RE{net}{IPv6};
die "Master must be an IPv4 or IPv6 address"
unless ($master =~ /^$regex$/);
my $ddns = Martnet::DDNS->new();
$ddns->add($host, $master, '_vhosts');