Update Mythic Beasts module (mythicdyn) in ddclient.in
The mythicdyn module is modified so that it will update either or both V4 and/or V6 addresses depending upon which specific address parameters have been defined in the config file. The module monitors: cmdv[46] fwv[46] usev[46] ipv[46] & ifv[46] If required, both addresses will be updated in a single invocation.
This commit is contained in:
parent
e0611ab192
commit
3da8baafe6
1 changed files with 61 additions and 22 deletions
83
ddclient.in
83
ddclient.in
|
|
@ -5835,12 +5835,14 @@ www.mythic-beasts.com.
|
||||||
|
|
||||||
Configuration variables applicable to the 'mythicdyn' protocol are:
|
Configuration variables applicable to the 'mythicdyn' protocol are:
|
||||||
protocol=mythicdyn ##
|
protocol=mythicdyn ##
|
||||||
ipv6=no|yes ## whether to set an A record (default, ipv6=no)
|
|
||||||
## or AAAA record (ipv6=yes).
|
|
||||||
login=service-login ## the user name provided by the admin interface
|
login=service-login ## the user name provided by the admin interface
|
||||||
password=service-password ## the password provided by the admin interface
|
password=service-password ## the password provided by the admin interface
|
||||||
fully.qualified.host ## the host registered with the service
|
fully.qualified.host ## the host registered with the service
|
||||||
|
|
||||||
|
Note: this module examines the following v4 & v6 parameters:
|
||||||
|
cmdv[46] fwv[46] usev[46] ipv[46] & ifv[46]
|
||||||
|
and will set either or both V4 and/or V6 addresses as required
|
||||||
|
|
||||||
Note: this service automatically sets the IP address to that from which the
|
Note: this service automatically sets the IP address to that from which the
|
||||||
request comes, so the IP address detected by ddclient is only used to keep
|
request comes, so the IP address detected by ddclient is only used to keep
|
||||||
track of when it needs updating.
|
track of when it needs updating.
|
||||||
|
|
@ -5869,29 +5871,66 @@ sub nic_mythicdyn_update {
|
||||||
foreach my $h (@_) {
|
foreach my $h (@_) {
|
||||||
info("%s -- Setting IP address.", $h);
|
info("%s -- Setting IP address.", $h);
|
||||||
|
|
||||||
my $ipversion = $config{$h}{'ipv6'} ? '6' : '4';
|
foreach my $mythver ('v4','v6') {
|
||||||
|
my $ipversion = '0';
|
||||||
|
|
||||||
my $reply = geturl(
|
if ($mythver eq 'v4') {
|
||||||
proxy => opt('proxy'),
|
info("Checking for IP%s configuration", $mythver);
|
||||||
url => "https://ipv$ipversion.$config{$h}{'server'}/dns/v2/dynamic/$h",
|
debug("IP Ver : %s", $ipversion);
|
||||||
method => 'POST',
|
$ipversion = $config{$h}{'cmdv4'} ? '4' : $ipversion;
|
||||||
login => $config{$h}{'login'},
|
debug("IP Ver : %s CMDV4 : %s", $ipversion, $config{$h}{'cmdv4'});
|
||||||
password => $config{$h}{'password'},
|
$ipversion = $config{$h}{'fwv4'} ? '4' : $ipversion;
|
||||||
ipversion => $ipversion,
|
debug("IP Ver : %s FWV4 : %s", $ipversion, $config{$h}{'fwv4'});
|
||||||
);
|
$ipversion = $config{$h}{'usev4'} ? '4' : $ipversion;
|
||||||
unless ($reply) {
|
debug("IP Ver : %s USEV4 : %s", $ipversion, $config{$h}{'usev4'});
|
||||||
failed("Updating service %s failed: %s", $h, $config{$h}{'server'});
|
$ipversion = $config{$h}{'ipv4'} ? '4' : $ipversion;
|
||||||
next;
|
debug("IP Ver : %s IPV4 : %s", $ipversion, $config{$h}{'ipv4'});
|
||||||
}
|
$ipversion = $config{$h}{'ifv4'} ? '4' : $ipversion;
|
||||||
|
debug("IP Ver : %s IFV4 : %s", $ipversion, $config{$h}{'ifv4'});
|
||||||
|
}
|
||||||
|
|
||||||
my $ok = header_ok($h, $reply);
|
if ($mythver eq 'v6') {
|
||||||
if ($ok) {
|
info("Checking for IP%s configuration", $mythver);
|
||||||
$config{$h}{'mtime'} = $now;
|
debug("IP Ver : %s", $ipversion);
|
||||||
$config{$h}{'status'} = "good";
|
$ipversion = $config{$h}{'cmdv6'} ? '6' : $ipversion;
|
||||||
|
debug("IP Ver : %s CMDV6 : %s", $ipversion, $config{$h}{'cmdv6'});
|
||||||
|
$ipversion = $config{$h}{'fwv6'} ? '6' : $ipversion;
|
||||||
|
debug("IP Ver : %s FWV6 : %s", $ipversion, $config{$h}{'fwv6'});
|
||||||
|
$ipversion = $config{$h}{'usev6'} ? '6' : $ipversion;
|
||||||
|
debug("IP Ver : %s USEV6 : %s", $ipversion, $config{$h}{'usev6'});
|
||||||
|
$ipversion = $config{$h}{'ipv6'} ? '6' : $ipversion;
|
||||||
|
debug("IP Ver : %s IPV6 : %s", $ipversion, $config{$h}{'ipv6'});
|
||||||
|
$ipversion = $config{$h}{'ifv6'} ? '6' : $ipversion;
|
||||||
|
debug("IP Ver : %s IFV6 : %s", $ipversion, $config{$h}{'ifv6'});
|
||||||
|
}
|
||||||
|
|
||||||
success("%s -- Updated successfully.", $h);
|
if ($ipversion ne '0') {
|
||||||
} else {
|
info("Process configuration for IP%s --------", $mythver);
|
||||||
failed("%s -- Failed to update.", $h);
|
my $reply = geturl(
|
||||||
|
proxy => opt('proxy'),
|
||||||
|
url => "https://ipv$ipversion.$config{$h}{'server'}/dns/v2/dynamic/$h",
|
||||||
|
method => 'POST',
|
||||||
|
login => $config{$h}{'login'},
|
||||||
|
password => $config{$h}{'password'},
|
||||||
|
ipversion => $ipversion,
|
||||||
|
);
|
||||||
|
unless ($reply) {
|
||||||
|
failed("Updating service %s failed: %s", $h, $config{$h}{'server'});
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $ok = header_ok($h, $reply);
|
||||||
|
if ($ok) {
|
||||||
|
$config{$h}{'mtime'} = $now;
|
||||||
|
$config{$h}{'status'} = "good";
|
||||||
|
|
||||||
|
success("%s -- Updated successfully.", $h);
|
||||||
|
} else {
|
||||||
|
failed("%s -- Failed to update.", $h);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
info("No configuration for IP%s -------------", $mythver);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue