Code Monkey home page Code Monkey logo

Comments (9)

olddog55 avatar olddog55 commented on June 9, 2024 1

Ditto. Upgraded from Devuan 4.0 Chimaera (The systemd free release of Debian 11.1 Bullseye) to Devuan 5.0 Daedalus (Debian 12.1 Bookworm) and hit the same obstacles.

A few things to note:

  1. Although it appears to refuse an update, my experience is that it is updating when required.

  2. It is getting the current IP from 'checkip.dyndns.org' TWICE. Why?

  3. I tried to set https (ssl=yes) on the update phase. But then it tried to use https when getting the current IP from ''checkip.dyndns.org' but https is NOT supported on that server.

  4. I don't know the significance of the RECEIVE: status codes (13 and 0 in this case) but the existance of the 'RECEIVE: nochg 24.250.1.1' would seem to indicate that an update was attempted for the dynamic IP but dyndns reported it was not necessary: 'nochg'.

     FAILED:   updating clarke39.homeip.net: unexpected status (13)
     WARNING:  updating : nochg: No update required; unnecessary attempts to change to the current address are considered abusive
     FAILED:   updating : unexpected status (0)
     FAILED:    was not updated because protocol <undefined> is not supported.
    
  5. Since a continual attempt to force an update at the default daemon interval would would probably get me banned, I have intentionally changed the interval to 2 hours pending a resolution.

Since it seems to be working somewhat OK, I have not reverted back to the older version. With my fingers crossed..

===========================================================

# /etc/ddclient.conf
#old use=web, web=dyndns \
syslog=yes
facility=local1
## The config daemon timer DOES NOT apply. Timer comes from /etc/default/ddclient [It's a Debian thing.]
daemon=900		# 7200=2hours	## 3600 =every hour
use=web
usev6=no
usev4=webv4, webv4=dyndns
webv4-skip='Current IP Address:'
server=members.dyndns.org
protocol=dyndns2
login=MYLOGIN, password='MYPASS'
[MYHOST].homeip.net
## The_End

Log:

DEBUG:    proxy    = <undefined>
DEBUG:    protocol = http
DEBUG:    server   = checkip.dyndns.org
DEBUG:    url      = 
DEBUG:    ip ver   = 
CONNECT:  checkip.dyndns.org
CONNECTED:  using HTTP
SENDING:  GET / HTTP/1.1
SENDING:  Host: checkip.dyndns.org
SENDING:  User-Agent: ddclient/3.10.0
SENDING:  Connection: close
SENDING:  
RECEIVE:  HTTP/1.1 200 OK
RECEIVE:  Date: Sun, 19 Nov 2023 22:49:01 GMT
RECEIVE:  Content-Type: text/html
RECEIVE:  Content-Length: 105
RECEIVE:  Connection: close
RECEIVE:  Cache-Control: no-cache
RECEIVE:  Pragma: no-cache
RECEIVE:  
RECEIVE:  <html><head><title>Current IP Check</title></head><body>Current IP Address: 24.250.1.1</body></html>
DEBUG:    get_ip: using web, http://checkip.dyndns.org/ reports 24.250.1.1
DEBUG:    proxy    = <undefined>
DEBUG:    protocol = http
DEBUG:    server   = checkip.dyndns.org
DEBUG:    url      = 
DEBUG:    ip ver   = 4
CONNECT:  checkip.dyndns.org (IPv4)
CONNECTED:  using HTTP
SENDING:  GET / HTTP/1.1
SENDING:  Host: checkip.dyndns.org
SENDING:  User-Agent: ddclient/3.10.0
SENDING:  Connection: close
SENDING:  
RECEIVE:  HTTP/1.1 200 OK
RECEIVE:  Date: Sun, 19 Nov 2023 22:49:02 GMT
RECEIVE:  Content-Type: text/html
RECEIVE:  Content-Length: 105
RECEIVE:  Connection: close
RECEIVE:  Cache-Control: no-cache
RECEIVE:  Pragma: no-cache
RECEIVE:  
RECEIVE:  <html><head><title>Current IP Check</title></head><body>Current IP Address: 24.250.1.1</body></html>
DEBUG:    get_ipv4: using (webv4, http://checkip.dyndns.org/) reports 24.250.1.1
DEBUG:    
DEBUG:    nic_dyndns2_update -------------------
INFO:     setting IP address to 24.250.1.1 for [MYHOST].homeip.net
UPDATE:   updating [MYHOST].homeip.net
DEBUG:    proxy    = <undefined>
DEBUG:    protocol = http
DEBUG:    server   = members.dyndns.org
DEBUG:    url      = nic/update?<redacted>
DEBUG:    ip ver   = 
CONNECT:  members.dyndns.org
CONNECTED:  using HTTP
SENDING:  GET /nic/update?system=dyndns&hostname=[MYHOST].homeip.net&myip=24.250.1.1 HTTP/1.1
SENDING:  Host: members.dyndns.org
SENDING:  Authorization: Basic ZGFiZHluOTozRlR0UnFQVFFobWU5WlFn
SENDING:  User-Agent: ddclient/3.10.0
SENDING:  Connection: close
SENDING:  
RECEIVE:  HTTP/1.1 200 OK
RECEIVE:  Date: Sun, 19 Nov 2023 22:49:04 GMT
RECEIVE:  Server: Apache/2.4.37 (Oracle Linux) mod_apreq2-20090110/2.8.0 mod_perl/2.0.12 Perl/v5.26.3
RECEIVE:  X-UpdateCode: n
RECEIVE:  Content-Type: text/plain
RECEIVE:  Accept-Ranges: none
RECEIVE:  X-User-Status: vip
RECEIVE:  Connection: close
RECEIVE:  Transfer-Encoding: chunked
RECEIVE:  
RECEIVE:  13
RECEIVE:  nochg 24.250.1.1
RECEIVE:  0
RECEIVE:  
FAILED:   updating [MYHOST].homeip.net: unexpected status (13)
Use of uninitialized value $h in hash element at /usr/bin/ddclient line 4103.
Use of uninitialized value $_[0] in sprintf at /usr/bin/ddclient line 2160.
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/bin/ddclient line 4112.
Use of uninitialized value $h in hash element at /usr/bin/ddclient line 4113.
Use of uninitialized value $h in hash element at /usr/bin/ddclient line 4114.
Use of uninitialized value $h in hash element at /usr/bin/ddclient line 4103.
Use of uninitialized value $_[0] in sprintf at /usr/bin/ddclient line 2160.
FAILED:   updating : unexpected status (0)
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
Use of uninitialized value in string ne at /usr/bin/ddclient line 1154.
FAILED:    was not updated because protocol <undefined> is not supported.

===========================================================
( Dynamic IP and host name are obfuscated. )

Additional debug output is available if needed.

regards,

/dave

from ddclient.

LenardHess avatar LenardHess commented on June 9, 2024 1

Hey everyone - just as a heads up, I'm first focussing on getting v3.11.2 out of the door due to an update spam/cache issue ( #595 ).
After that I'll be taking a look at why the older 3.10.0 is misbehaving - That version is from before I took over maintainership

from ddclient.

LenardHess avatar LenardHess commented on June 9, 2024 1

Hey everyone - I just pushed an initial list of known issues, some of which apply here.

  • The IO::Socket HTTP code is broken wrt. chunked encoding in v3.10.0 -> Set the curl parameter.
  • The ssl parameter breaks HTTP-only IP query sites -> Deactivate it

from ddclient.

TedLyngmo avatar TedLyngmo commented on June 9, 2024

I also tried the currently latest commit (9145dc1 - v3.11.1 + 4 commits) and that doesn't have all the errors, but it does try to update when it's not required once every 300 seconds.

from ddclient.

olddog55 avatar olddog55 commented on June 9, 2024

And I 'simplified' my 3.10.0 configuration by removing all the ipv4 and ipv6 specific commands, setting both usev4 and usev6 to '=no'. And now no errors and everything seems to work perfectly using only the deprecated commands.

My working config: ( I have no need for IPv6 )

## /etc/ddclient.conf
use=web
usev6=no
usev4=no
server=members.dyndns.org
login=MYLOGIN password='MYSECRET'
[MYSYSTEM1].homeip.net
[MYSYSTEM2].broke-it.net
## The_End

 

from ddclient.

TedLyngmo avatar TedLyngmo commented on June 9, 2024

After that I'll be taking a look at why the older 3.10.0 is misbehaving - That version is from before I took over maintainership

Lovely! That'd be great since at least one major Linux distribution includes 3.10 in the latest release.

from ddclient.

rocketraman avatar rocketraman commented on June 9, 2024

Same problem here with 3.10.0 on Fedora 39. As with OP, downgrading to 3.9.1 fixes the issue.

I use use=cmd, cmd='cat /some/state/file', which simply reads the IP address from /some/state/file.

I believe the problem is because 3.10.0 sends an HTTP/1.1 request, which causes some servers to respond with Transfer-Encoding: chunked -- but ddclient incorrectly interprets the chunk length as body content:

SENDING:  GET /nic/update?system=dyndns&hostname=Home&myip=184.145.2.112 HTTP/1.1
SENDING:  Host: updates.opendns.com
SENDING:  Authorization: Basic <elided>
SENDING:  User-Agent: ddclient/3.10.0
SENDING:  Connection: close
SENDING:
RECEIVE:  HTTP/1.1 200 OK
RECEIVE:  vary: Accept-Encoding
RECEIVE:  content-type: text/html; charset=UTF-8
RECEIVE:  date: Sat, 06 Jan 2024 00:09:16 GMT
RECEIVE:  server: opendns
RECEIVE:  x-envoy-upstream-service-time: 98
RECEIVE:  x-ingress-point: yyz
RECEIVE:  x-xss-protection: 1; mode=block
RECEIVE:  strict-transport-security: max-age=31536000; includeSubDomains
RECEIVE:  connection: close
RECEIVE:  transfer-encoding: chunked
RECEIVE:
RECEIVE:  12
RECEIVE:  good 184.145.2.112
RECEIVE:  0
FAILED:   updating Home: unexpected status (12)

Note the request HTTP/1.1, and transfer-encoding: chunked in the response, and the unexpected status (12) which is the length of the response chunk.

By contrast, 3.9.1 uses HTTP/1.0 and there are no problems:

SENDING:  GET /nic/update?system=dyndns&hostname=Home&myip=184.145.2.112 HTTP/1.0
SENDING:   Host: updates.opendns.com
SENDING:   Authorization: Basic <elided>
SENDING:   User-Agent: ddclient/3.9.1
SENDING:   Connection: close
SENDING:
SENDING:
RECEIVE:  HTTP/1.0 200 OK
RECEIVE:  vary: Accept-Encoding
RECEIVE:  content-type: text/html; charset=UTF-8
RECEIVE:  date: Sat, 06 Jan 2024 00:12:48 GMT
RECEIVE:  server: opendns
RECEIVE:  x-envoy-upstream-service-time: 96
RECEIVE:  x-ingress-point: yyz
RECEIVE:  x-xss-protection: 1; mode=block
RECEIVE:  strict-transport-security: max-age=31536000; includeSubDomains
RECEIVE:  connection: close
RECEIVE:
RECEIVE:  good 184.145.2.112
SUCCESS:  updating Home: good: IP address set to 184.145.2.112

from ddclient.

rocketraman avatar rocketraman commented on June 9, 2024

Ok, upon further research I see issues #548 and #483 so the issue appears to be exactly as I described above, and should be fixed in 3.11.0_1 and above which use libcurl instead of custom request/response code.

The workaround for 3.10.0 is to include curl=yes in the provider configuration.

from ddclient.

TedLyngmo avatar TedLyngmo commented on June 9, 2024

Upgrading to the new 3.11.2-1.fc39 resolved the issue without having to change any configuration.

from ddclient.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.