Doesn't seem like it should be too difficult to update the dyndns.class _checkip() function to utilize the services.inc dyndnsCheckIP($int) function.
At first glance maybe something like replacing this.
$ip_ch = curl_init("http://{$checkip}");
curl_setopt($ip_ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ip_ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ip_ch, CURLOPT_INTERFACE, 'host!' . $ip_address);
curl_setopt($ip_ch, CURLOPT_CONNECTTIMEOUT, '30');
curl_setopt($ip_ch, CURLOPT_TIMEOUT, 120);
if ($this->_useIPv6 == false) {
curl_setopt($ip_ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
$ip_result_page = curl_exec($ip_ch);
curl_close($ip_ch);
$ip_result_decoded = urldecode($ip_result_page);
preg_match('/Current IP Address: (.*)<\/body>/', $ip_result_decoded, $matches);
$ip_address = trim($matches[1]);
With this.
$ip_address = dyndnsCheckIP($this->_if);
And don't let that _useIPv6 test confuse you.
if ($this->_useIPv6 == false) {
curl_setopt($ip_ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
That test is redundant and should be removed anyway. It is already included by the parent if test at line 1726.
if ($this->_useIPv6 == false && is_private_ip($ip_address)) {
So if _useIPv6 is not false none of that code is executed anyway.