From 9cfa0d082fefbd7751639a7405b35f25de49bb92 Mon Sep 17 00:00:00 2001 From: Stefan Schantl Date: Fri, 18 Apr 2025 12:10:02 +0200 Subject: [PATCH] Move GetDyndnsRedIP from general-functions.pl to http-client-functions.pl This function depends on the previously FetchPublicIp function and so also has to be moved. Signed-off-by: Stefan Schantl --- config/cfgroot/general-functions.pl | 25 --------------------- config/cfgroot/http-client-functions.pl | 30 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index 861f95dec..bbd0f9839 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -998,31 +998,6 @@ sub DyndnsServiceSync ($;$;$) { } return 0; } -# -# This sub returns the red IP used to compare in DyndnsServiceSync -# -sub GetDyndnsRedIP { - my %settings; - &General::readhash("${General::swroot}/ddns/settings", \%settings); - - open(IP, "${General::swroot}/red/local-ipaddress") or return 'unavailable'; - my $ip = ; - close(IP); - chomp $ip; - - # 100.64.0.0/10 is reserved for dual-stack lite (http://tools.ietf.org/html/rfc6598). - if (&General::IpInSubnet ($ip,'10.0.0.0','255.0.0.0') || - &General::IpInSubnet ($ip,'172.16.0.0.','255.240.0.0') || - &General::IpInSubnet ($ip,'192.168.0.0','255.255.0.0') || - &General::IpInSubnet ($ip,'100.64.0.0', '255.192.0.0')) - { - if ($settings{'BEHINDROUTER'} eq 'FETCH_IP') { - my $RealIP = &General::FetchPublicIp; - $ip = (&General::validip ($RealIP) ? $RealIP : 'unavailable'); - } - } - return $ip; -} # Translate ICMP code to text # ref: http://www.iana.org/assignments/icmp-parameters diff --git a/config/cfgroot/http-client-functions.pl b/config/cfgroot/http-client-functions.pl index bfb9fdd20..f1f7de309 100644 --- a/config/cfgroot/http-client-functions.pl +++ b/config/cfgroot/http-client-functions.pl @@ -307,4 +307,34 @@ sub FetchPublicIp { return; } +# +# This sub returns the red IP used to compare in DyndnsServiceSync +# +sub GetDyndnsRedIP { + my %settings; + + # Read-in ddns settings. + &General::readhash("${General::swroot}/ddns/settings", \%settings); + + # Try to grab the address from the local-ipaddress file. + my $ip = &General::grab_address_from_file("${General::swroot}/red/local-ipaddress") or return 'unavailable'; + + # 100.64.0.0/10 is reserved for dual-stack lite (http://tools.ietf.org/html/rfc6598). + if (&General::IpInSubnet ($ip,'10.0.0.0','255.0.0.0') || + &General::IpInSubnet ($ip,'172.16.0.0.','255.240.0.0') || + &General::IpInSubnet ($ip,'192.168.0.0','255.255.0.0') || + &General::IpInSubnet ($ip,'100.64.0.0', '255.192.0.0')) + { + if ($settings{'BEHINDROUTER'} eq 'FETCH_IP') { + # Call function to omit the real address. + my $RealIP = &FetchPublicIp; + + # Check if the grabbed address is valid. + $ip = (&General::validip ($RealIP) ? $RealIP : 'unavailable'); + } + } + + return $ip; +} + 1; -- 2.39.5