ddclient icon indicating copy to clipboard operation
ddclient copied to clipboard

Uninitialized value $h in hash element at /usr/local/sbin/ddclient line 4030.

Open Marvo2011 opened this issue 3 years ago • 5 comments

Hello,

I build it from source on FreeBSD 12.1, when I try to use the new usev6 options I get the following errors:

Use of uninitialized value $h in hash element at /usr/local/sbin/ddclient line 4030.
Use of uninitialized value $_[0] in sprintf at /usr/local/sbin/ddclient line 2089.
FAILED:   updating : unexpected status (0)
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
FAILED:    was not updated because protocol <undefined> is not supported.

Can someone help? Thanks

Marvo2011 avatar Jan 25 '22 07:01 Marvo2011

Can you post your config without credentials?

SuperSandro2000 avatar Jan 25 '22 09:01 SuperSandro2000

The following config block creates the issue:

protocol=dyndns2
server=carol.selfhost.de
usev6=ifv6, if=vtnet2
login=username
password=password
sub.domain.com

Edit: Same issue for: usev6=ifv6, ifv6=vtnet2

Marvo2011 avatar Jan 25 '22 11:01 Marvo2011

use needs to come before all other fields. Please do not ask me why. Probably a bug in the config parser.

usev6=ifv6, ifv6=vtnet2

protocol=dyndns2
server=carol.selfhost.de
login=username
password=password
sub.domain.com

SuperSandro2000 avatar Jan 25 '22 19:01 SuperSandro2000

Thanks, but seems that this does not work.

WARNING:  '' is not a valid IPv4 or IPv6 address
WARNING:  found neither IPv4 nor IPv6 address
WARNING:  sub.domain.com: unable to determine IP address with strategy use=ip
WARNING:  'if-skip' is deprecated and does nothing for IPv6
INFO:     forcing update of sub.domain.com.
Use of uninitialized value $_[0] in sprintf at /usr/local/sbin/ddclient line 2089.
FAILED:   updating sub.domain.com: unexpected status (12)
Use of uninitialized value $h in hash element at /usr/local/sbin/ddclient line 4030.
Use of uninitialized value $_[0] in sprintf at /usr/local/sbin/ddclient line 2089.
WARNING:  updating : nochg: No update required; unnecessary attempts to change to the current address are considered abusive
Use of uninitialized value $h in hash element at /usr/local/sbin/ddclient line 4039.
Use of uninitialized value $h in hash element at /usr/local/sbin/ddclient line 4040.
Use of uninitialized value $h in hash element at /usr/local/sbin/ddclient line 4041.
Use of uninitialized value $h in hash element at /usr/local/sbin/ddclient line 4030.
Use of uninitialized value $_[0] in sprintf at /usr/local/sbin/ddclient line 2089.
FAILED:   updating : unexpected status (0)
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
Use of uninitialized value in string ne at /usr/local/sbin/ddclient line 1090.
FAILED:    was not updated because protocol <undefined> is not supported.

Edit: Same errors for usev4 but here it seems to get the right IP. Example: 2.2.2.2 INFO: setting IP address to 2.2.2.2 for sub.domain.com

Marvo2011 avatar Jan 25 '22 20:01 Marvo2011

With --debug I can see that the IPs can found. But it says: WARNING: '' is not a valid IPv4 or IPv6 address

WARNING:  '' is not a valid IPv4 or IPv6 address
WARNING:  found neither IPv4 nor IPv6 address
DEBUG:    get_ip: using ip, ip reports <undefined>
WARNING:  sub.domain.com: unable to determine IP address with strategy use=ip
WARNING:  'if-skip' is deprecated and does nothing for IPv4
DEBUG:    Reply from 'ifconfig pppoe0' :
DEBUG:    ------
DEBUG:    pppoe0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1492
DEBUG:    	inet6 fe80::xx%pppoe0 prefixlen 64 scopeid 0xd
DEBUG:    	inet6 fe80::xx%pppoe0 prefixlen 64 scopeid 0xd
DEBUG:    	inet6 20xx:xxxxxx prefixlen 64 detached autoconf
DEBUG:    	inet 80.XXX.XXX.XXX --> XX.XXX.XXX.XX netmask 0xffffffff
DEBUG:    	nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
DEBUG:    ------
DEBUG:    get_ipv4: using (ifv4, pppoe0) reports 80.XXX.XXX.XXX
WARNING:  'if-skip' is deprecated and does nothing for IPv6
DEBUG:    Reply from 'ifconfig -L pppoe0' :
DEBUG:    ------
DEBUG:    pppoe0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1492
DEBUG:    	inet6 fe80::xx%pppoe0 prefixlen 64 scopeid 0xd
DEBUG:    	inet6 fe80::xx%pppoe0 prefixlen 64 scopeid 0xd
DEBUG:    	inet6 20xx:xxxxxx prefixlen 64 detached autoconf
DEBUG:    	inet 80.XXX.XXX.XXX --> XX.XXX.XXX.XX netmask 0xffffffff
DEBUG:    	nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
DEBUG:    ------
DEBUG:    Raw IPv6 after filtering for GUA addresses pppoe0: (1)
DEBUG:    	inet6 20xx:xxxxxx prefixlen 64 detached autoconf pltime 1787 vltime 14387
DEBUG:    get_ipv6: using (ifv6, pppoe0) reports 20xx:xxxxxx

Marvo2011 avatar Jan 31 '22 09:01 Marvo2011

@Marvo2011 were you able to get this up and running? if not, please confirm your ddclient version

andres-pcg avatar May 10 '23 21:05 andres-pcg

@andrp92 No I didn't get it to work. I updated to FreeBSD 13.1 but here I get only one DynDns Update to work. but I reley need 4... 2x IPv4 2x IPv6 (MultiWan)

Marvo2011 avatar May 11 '23 09:05 Marvo2011

Using the curl option and the latest version here I was able to get it to work. However, I had to read some code to understand why it was not working. With the curl option the error you showed here, in my case (ubuntu), stopped appearing

andres-pcg avatar May 24 '23 03:05 andres-pcg

@andrp92 Can you give a sample config for the curl option?

Marvo2011 avatar May 24 '23 05:05 Marvo2011

getting the same error with this config

use=web

protocol=noip, \
server=dynupdate.no-ip.com, \
login=myusername, \
password='mypassword' \
myhostname.ddns.net

thanks

ps: can someone clarify when are commas and / needed and when not inside ddclient.conf?

using ddclient 3.10.0

kcris avatar May 26 '23 16:05 kcris

@kcris @Marvo2011 This is how my entire config looks like. I hope it helps:

ddclient version 3.10.0

daemon=300                              # check every 300 seconds
syslog=yes                              # log update msgs to syslog
mail=root                               # mail all msgs to root
mail-failure=root               # mail failed update msgs to root
pid=/var/run/ddclient.pid               # record PID in file.
ssl=yes                                 # use ssl-support.  Works with
use=no
usev6=no
usev4=webv4
webv4=googledomains

# OpenDNS.com account-configuration

protocol=dyndns2 \
curl=yes \
ssl=yes \
server=updates.opendns.com \
login=<some_login_email> \
password='some_password' \
<some_place>

# CloudFlare (www.cloudflare.com)

protocol=cloudflare
curl=yes \
zone=<some_zone> \
ttl=300 \
server=api.cloudflare.com/client/v4 \
login=token  \
password='some_password' \
<some.domain>

andres-pcg avatar May 26 '23 17:05 andres-pcg

@kcris @Marvo2011 Were you guys able to test it?

andres-pcg avatar Jun 05 '23 13:06 andres-pcg

seems to work when using curl=yes, e.g.

use=web

protocol=noip, \
curl=yes, \
server=dynupdate.no-ip.com, \
login=username, \
password='password' \
hostname.ddns.net

thanks a lot: @andrp92 @Marvo2011 !!

kcris avatar Jun 16 '23 20:06 kcris

ps: when using curl=yes it works with one hostname, all good!

but seems to fail with the same error if I use multiple hostnames, e.g.

aaa.ddns.net,bbb.ddns.net,ccc.hopto.org

kcris avatar Jun 16 '23 20:06 kcris

ps: works with one hostname, all good!

but seems to fail with the same error if I use multiple hostnames, e.g.

aaa.ddns.net,bbb.ddns.net,ccc.hopto.org

Hmmm that's weird. I haven't tried with multiple domains however, if you are not using a naked domain (root), you can definitely make use of CNAME to point to the updated host (if DDNS service allows you to).

I guessing that error has to do with the way that the domains are being parsed.🥲

andres-pcg avatar Jun 16 '23 22:06 andres-pcg