FEATURE REQUEST: add dyndns.org/dyn.com support #28

Closed
opened 2025-11-20 04:19:04 -05:00 by saavagebueno · 53 comments
Owner

Originally created by @bcurran3 on GitHub (May 7, 2020).

I like your web interface. Would love to switch to this container but I use dyndns.org (now dyn.com).

Hopefully you can add support.

TIA.

Originally created by @bcurran3 on GitHub (May 7, 2020). I like your web interface. Would love to switch to this container but I use [dyndns.org (now dyn.com)](https://account.dyn.com/). Hopefully you can add support. TIA.
Author
Owner

@github-actions[bot] commented on GitHub (May 7, 2020):

Thanks for creating your first issue 👍 Feel free to use Slack if you just need some quick help or want to chat

@github-actions[bot] commented on GitHub (May 7, 2020): Thanks for creating your first issue :+1: Feel free to use [Slack](https://join.slack.com/t/qdm12/shared_invite/enQtODMwMDQyMTAxMjY1LTU1YjE1MTVhNTBmNTViNzJiZmQwZWRmMDhhZjEyNjVhZGM4YmIxOTMxOTYzN2U0N2U2YjQ2MDk3YmYxN2NiNTc) if you just need some quick help or want to chat
Author
Owner

@qdm12 commented on GitHub (May 7, 2020):

I'll try adding it this evening (EST) / tomorrow 😉

@qdm12 commented on GitHub (May 7, 2020): I'll try adding it this evening (EST) / tomorrow :wink:
Author
Owner

@qdm12 commented on GitHub (May 8, 2020):

I'm still working on it, their api is a bit more convoluted than I expected, so it might take a few more days; I'll keep you updated.

@qdm12 commented on GitHub (May 8, 2020): I'm still working on it, their api is a bit more convoluted than I expected, so it might take a few more days; I'll keep you updated.
Author
Owner

@bcurran3 commented on GitHub (May 9, 2020):

Quentin,

Take your time. You owe me nothing.

Greatly appreciate any and all efforts you do.

Would examples help? This is what I'm currently using (for like 3 days):
https://github.com/theonemule/docker-dynamic-dns

This is the "standard" linux updater for it that's been around a while and available via apt.
https://help.dyn.com/ddclient/

@bcurran3 commented on GitHub (May 9, 2020): Quentin, Take your time. You owe me nothing. Greatly appreciate any and all efforts you do. Would examples help? This is what I'm currently using (for like 3 days): https://github.com/theonemule/docker-dynamic-dns This is the "standard" linux updater for it that's been around a while and available via apt. https://help.dyn.com/ddclient/
Author
Owner

@qdm12 commented on GitHub (May 10, 2020):

No problem 😉 But as 'advertised' I'm happy to add a DNS provider if anyone needs one, it's relatively easy usually. In the end the script you sent greatly simplified things. DynDNS' API is very capable but there is a lot of ways to do the same thing 😄 And that was much easier.

I opened a pull request for it, although I would your help a bit. Can you run and send me back the output from the following commands?

  1. Put in your username and password and use a garbage hostname you don't own

    docker run -it --rm alpine:3.11 wget -qO- https://yourusername:yourpassword@members.dyndns.org/v3/update?hostname=example.com
    
  2. Enter your username with a wrong password

    docker run -it --rm alpine:3.11 wget -qO- https://yourusername:wrongpassword@members.dyndns.org/v3/update?hostname=example.com
    
  3. The successful situation, with your username+password and a domain you own (or subdomain.domain.com)

    docker run -it --rm alpine:3.11 wget -qO- https://yourusername:yourpassword@members.dyndns.org/v3/update?hostname=yourdomain.com
    

So that the program can give meaningful errors or know when the update was successful.

Thanks!

@qdm12 commented on GitHub (May 10, 2020): No problem 😉 But as 'advertised' I'm happy to add a DNS provider if anyone needs one, it's relatively easy usually. In the end the script you sent greatly simplified things. DynDNS' API is very capable but there is a lot of ways to do the same thing 😄 And that was much easier. I opened a pull request for it, although I would your help a bit. Can you run and send me back the output from the following commands? 1. Put in your username and password and use a garbage hostname you don't own ```sh docker run -it --rm alpine:3.11 wget -qO- https://yourusername:yourpassword@members.dyndns.org/v3/update?hostname=example.com ``` 1. Enter your username with a wrong password ```sh docker run -it --rm alpine:3.11 wget -qO- https://yourusername:wrongpassword@members.dyndns.org/v3/update?hostname=example.com ``` 1. The successful situation, with your username+password and a domain you own (or subdomain.domain.com) ```sh docker run -it --rm alpine:3.11 wget -qO- https://yourusername:yourpassword@members.dyndns.org/v3/update?hostname=yourdomain.com ``` So that the program can give meaningful errors or know when the update was successful. Thanks!
Author
Owner

@bcurran3 commented on GitHub (May 10, 2020):

Happy too. Might do late tonight but more likely tomorrow. Will update soon as I can.

@bcurran3 commented on GitHub (May 10, 2020): Happy too. Might do late tonight but more likely tomorrow. Will update soon as I can.
Author
Owner

@bcurran3 commented on GitHub (May 11, 2020):

Here ya go...

badrequest

HTTP/1.1 200 OK
Date: Mon, 11 May 2020 23:32:22 GMT
Server: Apache
Strict-Transport-Security: max-age=31536000
Vary: Accept-Encoding
Content-Type: text/plain
Accept-Ranges: none
X-User-Status: vip
Connection: close
Transfer-Encoding: chunked

badrequest

@bcurran3 commented on GitHub (May 11, 2020): Here ya go... 1. > badrequest 2. > HTTP/1.1 200 OK > Date: Mon, 11 May 2020 23:32:22 GMT > Server: Apache > Strict-Transport-Security: max-age=31536000 > Vary: Accept-Encoding > Content-Type: text/plain > Accept-Ranges: none > X-User-Status: vip > Connection: close > Transfer-Encoding: chunked 3. > badrequest
Author
Owner

@qdm12 commented on GitHub (May 11, 2020):

Wait 3 should be successful, what's the message sent back once it succeeds? Otherwise, thanks I've updated the cases, should be merged as soon as I get this last case 😉

@qdm12 commented on GitHub (May 11, 2020): Wait 3 should be successful, what's the message sent back once it succeeds? Otherwise, thanks I've updated the cases, should be merged as soon as I get this last case 😉
Author
Owner

@bcurran3 commented on GitHub (May 12, 2020):

It didn't succeed. When I had all the right credentials, I got "badrequest." :(

@bcurran3 commented on GitHub (May 12, 2020): It didn't succeed. When I had all the right credentials, I got "badrequest." :(
Author
Owner

@qdm12 commented on GitHub (May 12, 2020):

Ah that's problematic. And does it work with:

docker run -it --rm alpine:3.11 wget -qO- https://yourusername:yourpassword@members.dyndns.org/v3/update?hostname=yourdomain.com&myip=127.0.0.1

Note that this will set your domain ip to 127.0.0.1 (so nothing really) until you change it back, if it works. You could also check on dyndns if the ip changes to 127.0.0.1. Finally, I think you could also try these urls in a browser if that's easier for you.

@qdm12 commented on GitHub (May 12, 2020): Ah that's problematic. And does it work with: ```sh docker run -it --rm alpine:3.11 wget -qO- https://yourusername:yourpassword@members.dyndns.org/v3/update?hostname=yourdomain.com&myip=127.0.0.1 ``` Note that this will set your domain ip to 127.0.0.1 (so nothing really) until you change it back, *if it works*. You could also check on dyndns if the ip changes to 127.0.0.1. Finally, I think you could also try these urls in a browser if that's easier for you.
Author
Owner

@bcurran3 commented on GitHub (May 12, 2020):

Doing it's easy, no worries.

Result this time is:

[1] 6789

Hope that's good!

@bcurran3 commented on GitHub (May 12, 2020): Doing it's easy, no worries. Result this time is: > [1] 6789 Hope that's good!
Author
Owner

@qdm12 commented on GitHub (May 12, 2020):

Did it update your A record to 127.0.0.1?

no idea what that 6789 is 😆

Using the shell script based container you mentioned, do you get any output in your logs?

@qdm12 commented on GitHub (May 12, 2020): Did it update your A record to 127.0.0.1? no idea what that 6789 is :laughing: Using the shell script based container you mentioned, do you get any output in your logs?
Author
Owner

@bcurran3 commented on GitHub (May 13, 2020):

Sorry, I never logged in to verify it changed. :)

I just logged in, looked at the current correct IP, ran the last request 5 times and got :
[2] 8622
[3] 9163
[4] 9458
[5] 9621
[6] 12494
[7] 13207
On the last try, I changed the IP to 1.2.3.4, but the IP never changed online at dyndns.org.

@bcurran3 commented on GitHub (May 13, 2020): Sorry, I never logged in to verify it changed. :) I just logged in, looked at the current correct IP, ran the last request 5 times and got : [2] 8622 [3] 9163 [4] 9458 [5] 9621 [6] 12494 [7] 13207 On the last try, I changed the IP to 1.2.3.4, but the IP never changed online at dyndns.org.
Author
Owner

@qdm12 commented on GitHub (May 13, 2020):

Actually I found all the possible return codes although none of them correspond to these strange numbers. If you were using that other container you mentioned, do you get anything in the logs about it? (i. e. nochg or good)

Anyway, there is a part worrying me from their documentation:

A nochg indicates a successful update but the IP address or other settings have not changed. The only acceptable situation where this allowed is during client initialization when the host has already been set to the same IP address. Users may also be given the option to “force” an update. This can be used to verify the authentication credentials and the current IP address.
As this is fairly infrequent, repeated instances of nochg updates will result in the host being blocked. Users should not be allowed to repeatedly force updates.
While it is not expected that the clients will prevent users from doing this, the client itself should strenuously avoid performing updates which would result in this return result.

I will first refactor the code such that it only updates DNS records once your public IP changes. For now it forces the update on all DNS providers every 5 minutes no matter what, and this approach might lead you to being blocked with dyndns.

@qdm12 commented on GitHub (May 13, 2020): Actually I found all the possible [return codes](https://help.dyn.com/remote-access-api/return-codes/) although none of them correspond to these strange numbers. If you were using that other container you mentioned, do you get anything in the logs about it? (i. e. `nochg` or `good`) Anyway, there is a part worrying me from their documentation: > A nochg indicates a successful update but the IP address or other settings have not changed. The only acceptable situation where this allowed is during client initialization when the host has already been set to the same IP address. Users may also be given the option to “force” an update. This can be used to verify the authentication credentials and the current IP address. As this is fairly infrequent, repeated instances of nochg updates will result in the host being blocked. Users should not be allowed to repeatedly force updates. While it is not expected that the clients will prevent users from doing this, the client itself should strenuously avoid performing updates which would result in this return result. I will first refactor the code such that it only updates DNS records once your public IP changes. For now it forces the update on all DNS providers every 5 minutes no matter what, and this approach might lead you to being blocked with dyndns.
Author
Owner

@bcurran3 commented on GitHub (May 21, 2020):

No, blaize/docker-dynamic-dns:latest doesn't appear to have any logging.

Yes, Dyn.com/dyndns.org doesn't like repetitive updates. They really one want new information, not confirmation of old information. So updating only when there is a change detected is really the key to success though I'm sure they'd allow less frequent nochg "updates".. Daily? Weekly? HIIK!

I'm guessing you do logging, so I'm going to install and spin up your container today.

@bcurran3 commented on GitHub (May 21, 2020): No, blaize/docker-dynamic-dns:latest doesn't appear to have any logging. Yes, Dyn.com/dyndns.org doesn't like repetitive updates. They really one want new information, not confirmation of old information. So updating only when there is a change detected is really the key to success though I'm sure they'd allow less frequent nochg "updates".. Daily? Weekly? HIIK! I'm guessing you do logging, so I'm going to install and spin up your container today.
Author
Owner

@bcurran3 commented on GitHub (May 21, 2020):

UPDATE: I now have the container officially installed and I can do any testing you might like via it.

I pulled the v2 image for testing but looks like it doesn't have a "dyn" or "dyndns" provider setup yet. :(

EDIT: Just switched back to latest. For whatever reason I can't access the web interface, "ERR_CONNECTION_REFUSED" :( Maybe because I don't have a valid config...

@bcurran3 commented on GitHub (May 21, 2020): UPDATE: I now have the container officially installed and I can do any testing you might like via it. I pulled the v2 image for testing but looks like it doesn't have a "dyn" or "dyndns" provider setup yet. :( EDIT: Just switched back to latest. For whatever reason I can't access the web interface, "ERR_CONNECTION_REFUSED" :( Maybe because I don't have a valid config...
Author
Owner

@qdm12 commented on GitHub (May 24, 2020):

Hello again, thanks for all your issues, I'm working on them.

I'm going through a rather huge refactor to support ipv6, only one ip query for all records, only query APIs when the ip changes, etc. etc. (spent like 6 hours today already!), so it might take a bit more time sorry about that 😉 I'll report back once I can finally move on the refactoring

@qdm12 commented on GitHub (May 24, 2020): Hello again, thanks for all your issues, I'm working on them. I'm going through a rather huge refactor to support ipv6, only one ip query for all records, only query APIs when the ip changes, etc. etc. (spent like 6 hours today already!), so it might take a bit more time sorry about that 😉 I'll report back once I can finally move on the refactoring
Author
Owner

@bcurran3 commented on GitHub (May 24, 2020):

Appreciate your efforts Quentin. Please, don't feel any pressure from me. Take your time.

@bcurran3 commented on GitHub (May 24, 2020): Appreciate your efforts Quentin. Please, don't feel any pressure from me. Take your time.
Author
Owner

@qdm12 commented on GitHub (May 30, 2020):

Hello, I'm finally done with a huge refactor to call the DNS API only when the public ip address changes and not every 5 minutes 😉

So I updated the pull request for dyndns, would you mind trying with the Docker image qmcgaw/ddns-updater:dyn, the documentation is here, where you essentially need for dyndns: user, password, host and ip_version.

The container is using the same https://user:password@members.dyndns.org/v3/update endpoint, so I'm not sure what it will spit out on update, but let's see!

@qdm12 commented on GitHub (May 30, 2020): Hello, I'm finally done with a [huge refactor](https://github.com/qdm12/ddns-updater/pull/63) to call the DNS API only when the public ip address changes and not every 5 minutes 😉 So I updated the [pull request for dyndns](https://github.com/qdm12/ddns-updater/pull/56), would you mind trying with the Docker image `qmcgaw/ddns-updater:dyn`, the documentation is [here](https://github.com/qdm12/ddns-updater/tree/dyn#configuration), where you essentially need for dyndns: `user`, `password`, `host` and `ip_version`. The container is using the same https://user:password@members.dyndns.org/v3/update endpoint, so I'm not sure what it will spit out on update, but let's see!
Author
Owner

@bcurran3 commented on GitHub (Jul 18, 2020):

I'm back!

I did the following:

Edited my config.json to this:

{
    "settings": [
        {
            "provider": "dyndns",
            "domain": "dyndns.org",
            "host": "myhostname",
            "user": "my@emailaddress.com",
            "password": "mypassword",
            "ip_verson": "ipv4"
        }
    ]
}

I pulled down qmcgaw/ddns-updater:dyn and ran it.

Logs are showing me this:

2020-07-18T17:05:40.521-0700	WARN	the environment variable DELAY should be changed to PERIOD	{"node_id": 0}
2020-07-18T17:05:40.521-0700	ERROR	provider "dyndns" is not supported	{"node_id": 0}

...and for some reason I've never been able to see the web page. I go to 192.168.x.x/:8001 (port I have assigned) as well as 192.168.x.x/updater:8001. I get a connection refused on the former and a 404 on the latter.

@bcurran3 commented on GitHub (Jul 18, 2020): I'm back! I did the following: Edited my config.json to this: ```json { "settings": [ { "provider": "dyndns", "domain": "dyndns.org", "host": "myhostname", "user": "my@emailaddress.com", "password": "mypassword", "ip_verson": "ipv4" } ] } ``` I pulled down qmcgaw/ddns-updater:dyn and ran it. Logs are showing me this: ``` 2020-07-18T17:05:40.521-0700 WARN the environment variable DELAY should be changed to PERIOD {"node_id": 0} 2020-07-18T17:05:40.521-0700 ERROR provider "dyndns" is not supported {"node_id": 0} ``` ...and for some reason I've never been able to see the web page. I go to 192.168.x.x/:8001 (port I have assigned) as well as 192.168.x.x/updater:8001. I get a connection refused on the former and a 404 on the latter.
Author
Owner

@qdm12 commented on GitHub (Jul 19, 2020):

Glad you're back! Try with provider "dyn" instead, sorry I forgot to document it in the readme. I'm 100% not sure it will work out of the box though, but we can give it a try. I'll dig into it if it doesn't work 😉 You should also repull the image (a lot of changes merged from :latest to :dyn and wait for the build to be done too)

@qdm12 commented on GitHub (Jul 19, 2020): Glad you're back! Try with provider `"dyn"` instead, sorry I forgot to document it in the readme. I'm 100% not sure it will work out of the box though, but we can give it a try. I'll dig into it if it doesn't work 😉 You should also repull the image (a lot of changes merged from :latest to :dyn and wait [for the build to be done too](https://github.com/qdm12/ddns-updater/runs/887821814?check_suite_focus=true))
Author
Owner

@bcurran3 commented on GitHub (Aug 1, 2020):

Tried again. Frustrated.

I'm using the latest :dyn image.

a made a data/config.json with

{
    "settings": [
        {
            "provider": "dyn",
            "domain": "dyndns.org",
            "host": "myhostname",
            "user": "my@emailaddress.com",
            "password": "mypassword",
            "ip_verson": "ipv4"
        }
    ]
}

log gives me:
2020-08-01T05:21:23.358-0700 ERROR username cannot be empty {"node_id": 0}

I tried adding "note_id":0" at the end of the mix, I think I got the same result. (It's back out now.)

Still getting ERR_CONNECTION_REFUSED when trying to go the web interface. http://IP:port or 404 when http://ip/admin:port

:(

EDIT: Changed user to my account name instead of my e-mail address, all same results afterward.

@bcurran3 commented on GitHub (Aug 1, 2020): Tried again. Frustrated. I'm using the latest :dyn image. a made a data/config.json with ```json { "settings": [ { "provider": "dyn", "domain": "dyndns.org", "host": "myhostname", "user": "my@emailaddress.com", "password": "mypassword", "ip_verson": "ipv4" } ] } ``` log gives me: 2020-08-01T05:21:23.358-0700 ERROR username cannot be empty {"node_id": 0} I tried adding "note_id":0" at the end of the mix, I think I got the same result. (It's back out now.) Still getting ERR_CONNECTION_REFUSED when trying to go the web interface. http://IP:port or 404 when http://ip/admin:port :( EDIT: Changed user to my account name instead of my e-mail address, all same results afterward.
Author
Owner

@qdm12 commented on GitHub (Aug 2, 2020):

Hello, sorry the documentation was wrong, it's username instead of user.

For the node_id logged, it's just in case you run multiple instances of the container. It shouldn't be shown anymore (NODE_ID=-1 to disable it which is the default).

@qdm12 commented on GitHub (Aug 2, 2020): Hello, sorry the documentation was wrong, it's `username` instead of `user`. For the node_id logged, it's just in case you run multiple instances of the container. It shouldn't be shown anymore (`NODE_ID=-1` to disable it which is the default).
Author
Owner

@bcurran3 commented on GitHub (Aug 3, 2020):

Success!

That was the problem. Now I even have a status web page too. 👍

image

Guess I'm going to have to open another issue suggesting that the web server run and display some sort of invalid config.json message on error instead of just aborting. :)

@bcurran3 commented on GitHub (Aug 3, 2020): Success! That was the problem. Now I even have a status web page too. 👍 ![image](https://user-images.githubusercontent.com/14026600/89217502-2666f300-d581-11ea-99f2-900fe48f0896.png) Guess I'm going to have to open another issue suggesting that the web server run and display some sort of invalid config.json message on error instead of just aborting. :)
Author
Owner

@qdm12 commented on GitHub (Aug 3, 2020):

Yes, I still need to do a proper frontend which should solve most of the current limitations. Unfortunately, I'm low on time currently but I still have that in my mind, it will come out one day 😉

@qdm12 commented on GitHub (Aug 3, 2020): Yes, I still need to do a proper frontend which should solve most of the current limitations. Unfortunately, I'm low on time currently but I still have that in my mind, it will come out one day 😉
Author
Owner

@qdm12 commented on GitHub (Aug 3, 2020):

So it works for dyndns? Have you tried setting the A record to 127.0.0.1 and then running the container to make sure it updates the record? It has been a while so I'm surprised it works out of the box so well haha

@qdm12 commented on GitHub (Aug 3, 2020): So it works for dyndns? Have you tried setting the A record to 127.0.0.1 and then running the container to make sure it updates the record? It has been a while so I'm surprised it works out of the box so well haha
Author
Owner

@bcurran3 commented on GitHub (Aug 11, 2020):

Nope. I did not try to manually set the IP. I think I tried before and the site will only fill in the IP you're accessing from. So I guess I should do via a VPN if it's not blocked. Can try that in the future.

IP changed last night.

dyndns didn't get updated. :(

Log: (edited)

=========================================
=========================================
========= DDNS Universal Updater ========
=========================================
=== Made with ❤️  by github.com/qdm12 ====
=========================================
Running version dyn built on 2020-08-02T15:06:49Z (commit 2dcbc3e)
🔧  Need help? https://github.com/qdm12/ddns-updater/issues/new
💻  Email? quentin.mcgaw@gmail.com
☕  Slack? Join from the Slack button on Github
💸  Help me? https://github.com/sponsors/qdm12
2020-08-11T11:49:48.785-0700	INFO	Found single setting to update record	{"node_id": 0}
2020-08-11T11:49:48.954-0700	INFO	Reading history from database: domain dyndns.org host myhostname	{"node_id": 0}
2020-08-11T11:49:48.954-0700	INFO	Web UI listening at address 0.0.0.0:8000 with root URL ""	{"node_id": 0}
2020-08-11T11:49:48.993-0700	INFO	backup: disabled	{"node_id": 0}
2020-08-11T11:49:49.269-0700	INFO	IP address of myhostname.dyndns.org is x.x.x.174 and your IP address is x.x.x.84	{"node_id": 0}
2020-08-11T11:49:49.269-0700	INFO	Updating record [domain: dyndns.org | host: myhostname | provider: Dyn] to use x.x.x.84	{"node_id": 0}
panic: assignment to entry in nil map
goroutine 102 [running]:
net/url.Values.Set(...)
	/usr/local/go/src/net/url/url.go:848
github.com/qdm12/ddns-updater/internal/settings.(*dyn).Update(0xc000724780, 0xc41680, 0xc0004b8400, 0xc00021dfb0, 0x10, 0x10, 0x1, 0xa47d8c, 0x8, 0x0, ...)
	/tmp/gobuild/internal/settings/dyn.go:106 +0x293
github.com/qdm12/ddns-updater/internal/update.(*updater).Update(0xc0002dfd40, 0x0, 0xc00021dfb0, 0x10, 0x10, 0xbfc4d7f3500c613e, 0x1de54bd5, 0x1020a80, 0x0, 0x0)
	/tmp/gobuild/internal/update/update.go:46 +0x1a6
github.com/qdm12/ddns-updater/internal/update.(*runner).updateNecessary(0xc0004e0e60)
	/tmp/gobuild/internal/update/run.go:178 +0x6a1
github.com/qdm12/ddns-updater/internal/update.(*runner).Run.func1(0xc0004e0eb0, 0xc0004e0e60, 0xc0002aec60, 0xc42d00, 0xc0004b8480)
	/tmp/gobuild/internal/update/run.go:193 +0x111
created by github.com/qdm12/ddns-updater/internal/update.(*runner).Run
	/tmp/gobuild/internal/update/run.go:187 +0xa1
@bcurran3 commented on GitHub (Aug 11, 2020): Nope. I did not try to manually set the IP. I think I tried before and the site will only fill in the IP you're accessing from. So I guess I should do via a VPN if it's not blocked. Can try that in the future. IP changed last night. dyndns didn't get updated. :( Log: (edited) ``` ========================================= ========================================= ========= DDNS Universal Updater ======== ========================================= === Made with ❤️ by github.com/qdm12 ==== ========================================= Running version dyn built on 2020-08-02T15:06:49Z (commit 2dcbc3e) 🔧 Need help? https://github.com/qdm12/ddns-updater/issues/new 💻 Email? quentin.mcgaw@gmail.com ☕ Slack? Join from the Slack button on Github 💸 Help me? https://github.com/sponsors/qdm12 2020-08-11T11:49:48.785-0700 INFO Found single setting to update record {"node_id": 0} 2020-08-11T11:49:48.954-0700 INFO Reading history from database: domain dyndns.org host myhostname {"node_id": 0} 2020-08-11T11:49:48.954-0700 INFO Web UI listening at address 0.0.0.0:8000 with root URL "" {"node_id": 0} 2020-08-11T11:49:48.993-0700 INFO backup: disabled {"node_id": 0} 2020-08-11T11:49:49.269-0700 INFO IP address of myhostname.dyndns.org is x.x.x.174 and your IP address is x.x.x.84 {"node_id": 0} 2020-08-11T11:49:49.269-0700 INFO Updating record [domain: dyndns.org | host: myhostname | provider: Dyn] to use x.x.x.84 {"node_id": 0} panic: assignment to entry in nil map goroutine 102 [running]: net/url.Values.Set(...) /usr/local/go/src/net/url/url.go:848 github.com/qdm12/ddns-updater/internal/settings.(*dyn).Update(0xc000724780, 0xc41680, 0xc0004b8400, 0xc00021dfb0, 0x10, 0x10, 0x1, 0xa47d8c, 0x8, 0x0, ...) /tmp/gobuild/internal/settings/dyn.go:106 +0x293 github.com/qdm12/ddns-updater/internal/update.(*updater).Update(0xc0002dfd40, 0x0, 0xc00021dfb0, 0x10, 0x10, 0xbfc4d7f3500c613e, 0x1de54bd5, 0x1020a80, 0x0, 0x0) /tmp/gobuild/internal/update/update.go:46 +0x1a6 github.com/qdm12/ddns-updater/internal/update.(*runner).updateNecessary(0xc0004e0e60) /tmp/gobuild/internal/update/run.go:178 +0x6a1 github.com/qdm12/ddns-updater/internal/update.(*runner).Run.func1(0xc0004e0eb0, 0xc0004e0e60, 0xc0002aec60, 0xc42d00, 0xc0004b8480) /tmp/gobuild/internal/update/run.go:193 +0x111 created by github.com/qdm12/ddns-updater/internal/update.(*runner).Run /tmp/gobuild/internal/update/run.go:187 +0xa1 ```
Author
Owner

@bcurran3 commented on GitHub (Aug 11, 2020):

p.s. get "404 page not found" when trying to access the history site... anxiously awaiting the proper front end. :)

@bcurran3 commented on GitHub (Aug 11, 2020): p.s. get "404 page not found" when trying to access the history site... anxiously awaiting the proper front end. :)
Author
Owner

@qdm12 commented on GitHub (Aug 11, 2020):

Yes it crashed, I'll go through the code tonight.

To test it you can send an http request with curl or postman to force your IP to 127.0.0.1 and then run the container. Let me know if you need help for the curl command.

@qdm12 commented on GitHub (Aug 11, 2020): Yes it crashed, I'll go through the code tonight. To test it you can send an http request with curl or postman to force your IP to 127.0.0.1 and then run the container. Let me know if you need help for the curl command.
Author
Owner

@bcurran3 commented on GitHub (Aug 11, 2020):

I need help with the curl command.
EDIT: BUT at present I don't need to force it to a fake IP as the IP has changed but not updated. :)

@bcurran3 commented on GitHub (Aug 11, 2020): I need help with the curl command. EDIT: BUT at present I don't need to force it to a fake IP as the IP has changed but not updated. :)
Author
Owner

@qdm12 commented on GitHub (Aug 11, 2020):

But no point retrying yet, the code needs a fix first. I think it detected your IP changed but crashed when trying to update it.

EDIT: I'll write you that command tonight once I fixed my bad code

@qdm12 commented on GitHub (Aug 11, 2020): But no point retrying yet, the code needs a fix first. I think it detected your IP changed but crashed when trying to update it. EDIT: I'll write you that command tonight once I fixed my bad code
Author
Owner

@bcurran3 commented on GitHub (Aug 11, 2020):

You're too damn nice/humble. Thanks!

EDIT: I don't necessarily need to access anything remotely today, so I'm going to hold of on updating the ddns in hopes that you're magic can do it tonight.

@bcurran3 commented on GitHub (Aug 11, 2020): You're too damn nice/humble. Thanks! EDIT: I don't necessarily need to access anything remotely today, so I'm going to hold of on updating the ddns in hopes that you're magic can do it tonight.
Author
Owner

@qdm12 commented on GitHub (Aug 11, 2020):

I fixed the program.

Although before running the container please try:

docker run -it --rm alpine:3.12 wget -qO- https://username:password@members.dyndns.org/v3/update?hostname=domain.com&myip=127.0.0.1

Where you need to replace username, password and domain.com with your values.

That's the same request the ddns-updater does so it would be easier to see if it works. If you can see the domain ip has been changed to 127.0.0.1, then the container should work.

EDIT 1: And thanks for the compliment 👍 You deserve all of it, with the time spent debugging issues 😄

EDIT 2: FYI the container forces the updates at start (always) and then only updates DNS records once your IP address changes.

@qdm12 commented on GitHub (Aug 11, 2020): I fixed the program. Although before running the container please try: ```sh docker run -it --rm alpine:3.12 wget -qO- https://username:password@members.dyndns.org/v3/update?hostname=domain.com&myip=127.0.0.1 ``` Where you need to replace `username`, `password` and `domain.com` with your values. That's the same request the ddns-updater does so it would be easier to see if it works. If you can see the domain ip has been changed to 127.0.0.1, then the container *should* work. EDIT 1: And thanks for the compliment 👍 You deserve all of it, with the time spent debugging issues 😄 EDIT 2: FYI the container forces the updates at start (always) and then only updates DNS records once your IP address changes.
Author
Owner

@bcurran3 commented on GitHub (Aug 15, 2020):

Had problems running the docker command, possibly just impatience on my part....

I ran the wget command from command line on my local Windows box and it came back with a response "good 127.0.0.1." Also verified successful update at dyn.com with 127.0.0.1.

YAY! Looks like we may be able to put this one to bed.

@bcurran3 commented on GitHub (Aug 15, 2020): Had problems running the docker command, possibly just impatience on my part.... I ran the wget command from command line on my local Windows box and it came back with a response "good 127.0.0.1." Also verified successful update at dyn.com with 127.0.0.1. YAY! Looks like we may be able to put this one to bed.
Author
Owner

@bcurran3 commented on GitHub (Aug 15, 2020):

Just re-started the container and dyn.org was successfully updated with my real and current ip as well.

@bcurran3 commented on GitHub (Aug 15, 2020): Just re-started the container and dyn.org was successfully updated with my real and current ip as well.
Author
Owner

@bcurran3 commented on GitHub (Aug 15, 2020):

ALMOST there.

Your status web page isn't coming up (404). I THINK maybe you're not processing the return string from dyn.com the right way yet.

LOGS:

=========================================
=========================================
========= DDNS Universal Updater ========
=========================================
=== Made with ❤️  by github.com/qdm12 ====
=========================================
Running version dyn built on 2020-08-11T21:19:02Z (commit 10937bc)
🔧  Need help? https://github.com/qdm12/ddns-updater/issues/new
💻  Email? quentin.mcgaw@gmail.com
☕  Slack? Join from the Slack button on Github
💸  Help me? https://github.com/sponsors/qdm12
2020-08-15T12:56:05.152-0700	INFO	Found single setting to update record	{"node_id": 0}
2020-08-15T12:56:05.323-0700	INFO	Reading history from database: domain dyndns.org host xxxxx	{"node_id": 0}
2020-08-15T12:56:05.324-0700	INFO	Web UI listening at address 0.0.0.0:8000 with root URL ""	{"node_id": 0}
2020-08-15T12:56:05.347-0700	INFO	backup: disabled	{"node_id": 0}
2020-08-15T12:56:05.615-0700	INFO	IP address of xxxxx.dyndns.org is 127.0.0.1 and your IP address is x.x.x.84	{"node_id": 0}
2020-08-15T12:56:05.615-0700	INFO	Updating record [domain: dyndns.org | host: xxxxx | provider: Dyn] to use x.x.x.84	{"node_id": 0}
2020-08-15T12:56:05.688-0700	ERROR	unknown response: good x.x.x.84	{"node_id": 0}
2020-08-15T12:57:05.262-0700	WARN	unhealthy: [domain: dyndns.org | host: xxxxx | provider: Dyn]: failure (unknown response: good x.x.x.84) 2020-08-15 12:56:05 PDT; Last success update: 2020-08-03 11:56:41 PDT; IP: x.x.x.174	{"node_id": 0}
2020-08-15T12:58:05.402-0700	WARN	unhealthy: [domain: dyndns.org | host: xxxxx | provider: Dyn]: failure (unknown response: good x.x.x.84) 2020-08-15 12:56:05 PDT; Last success update: 2020-08-03 11:56:41 PDT; IP: x.x.x.174	{"node_id": 0}
2020-08-15T12:59:05.558-0700	WARN	unhealthy: [domain: dyndns.org | host: xxxxx | provider: Dyn]: failure (unknown response: good x.x.x.84) 2020-08-15 12:56:05 PDT; Last success update: 2020-08-03 11:56:41 PDT; IP: x.x.x.174	{"node_id": 0}
@bcurran3 commented on GitHub (Aug 15, 2020): ALMOST there. Your status web page isn't coming up (404). I THINK maybe you're not processing the return string from dyn.com the right way yet. LOGS: ``` ========================================= ========================================= ========= DDNS Universal Updater ======== ========================================= === Made with ❤️ by github.com/qdm12 ==== ========================================= Running version dyn built on 2020-08-11T21:19:02Z (commit 10937bc) 🔧 Need help? https://github.com/qdm12/ddns-updater/issues/new 💻 Email? quentin.mcgaw@gmail.com ☕ Slack? Join from the Slack button on Github 💸 Help me? https://github.com/sponsors/qdm12 2020-08-15T12:56:05.152-0700 INFO Found single setting to update record {"node_id": 0} 2020-08-15T12:56:05.323-0700 INFO Reading history from database: domain dyndns.org host xxxxx {"node_id": 0} 2020-08-15T12:56:05.324-0700 INFO Web UI listening at address 0.0.0.0:8000 with root URL "" {"node_id": 0} 2020-08-15T12:56:05.347-0700 INFO backup: disabled {"node_id": 0} 2020-08-15T12:56:05.615-0700 INFO IP address of xxxxx.dyndns.org is 127.0.0.1 and your IP address is x.x.x.84 {"node_id": 0} 2020-08-15T12:56:05.615-0700 INFO Updating record [domain: dyndns.org | host: xxxxx | provider: Dyn] to use x.x.x.84 {"node_id": 0} 2020-08-15T12:56:05.688-0700 ERROR unknown response: good x.x.x.84 {"node_id": 0} 2020-08-15T12:57:05.262-0700 WARN unhealthy: [domain: dyndns.org | host: xxxxx | provider: Dyn]: failure (unknown response: good x.x.x.84) 2020-08-15 12:56:05 PDT; Last success update: 2020-08-03 11:56:41 PDT; IP: x.x.x.174 {"node_id": 0} 2020-08-15T12:58:05.402-0700 WARN unhealthy: [domain: dyndns.org | host: xxxxx | provider: Dyn]: failure (unknown response: good x.x.x.84) 2020-08-15 12:56:05 PDT; Last success update: 2020-08-03 11:56:41 PDT; IP: x.x.x.174 {"node_id": 0} 2020-08-15T12:59:05.558-0700 WARN unhealthy: [domain: dyndns.org | host: xxxxx | provider: Dyn]: failure (unknown response: good x.x.x.84) 2020-08-15 12:56:05 PDT; Last success update: 2020-08-03 11:56:41 PDT; IP: x.x.x.174 {"node_id": 0} ```
Author
Owner

@qdm12 commented on GitHub (Aug 15, 2020):

Indeed, it was looking for a success but it is actually a good prefix we were looking for! I fixed it with the commit mentioned above, you probably can re-pull and re-try now. On the other hand, I think it should show the status web page even on failure, as long as you have one valid setting.

What's your Docker run command / docker-compose / other? Maybe I can help.

@qdm12 commented on GitHub (Aug 15, 2020): Indeed, it was looking for a `success` but it is actually a `good` prefix we were looking for! I fixed it with the commit mentioned above, you probably can re-pull and re-try now. On the other hand, I think it should show the status web page even on failure, as long as you have one valid setting. What's your Docker run command / docker-compose / other? Maybe I can help.
Author
Owner

@bcurran3 commented on GitHub (Aug 16, 2020):

NOTE: I am still getting:

2020-08-16T14:40:17.278-0700 WARN unhealthy: lookup IP addresses for xxxxx.dyndns.org are x.x.x.84 instead of x.x.x.174 {"node_id": 0}

Former is current IP, latter is previous IP. For some reason my container status is "unhealthy."

Should I still be using :dyn or have switched to :latest?

Using Ansible:

---
- name: Docker DDNS-Updater Directory
  file:
    path: "{{ item }}"
    state: directory
    mode: 0777
  with_items:
    - "{{ ddnsupdater_data_directory }}/data"

- name: Docker DDNS-Updater Docker Container
  docker_container:
    name: ddns-updater
    image: qmcgaw/ddns-updater:dyn
    pull: true
    volumes:
      - "{{ ddnsupdater_data_directory }}/data:/updater/data:rw"
    ports:
      - "{{ ddnsupdater_port_http }}:8000"
    env:
      ROOT_URL: "/"
      LISTENING_PORT: "8000"
      LOG_ENCODING: "console"
      LOG_LEVEL: "info"
      NODE_ID: "0"
      HTTP_TIMEOUT: "10s"
      GOTIFY_URL: "https://gotify.xxxxx.org/"
      GOTIFY_TOKEN: "xxxxx"
      BACKUP_PERIOD: "0"
      BACKUP_DIRECTORY: "/updater/data"
      TZ: "{{ ansible_nas_timezone }}"
    restart_policy: unless-stopped
    memory: 256m
    labels:
      traefik.backend: "ddnsupdater"
      traefik.frontend.rule: "Host:ddnsupdater.{{ ansible_nas_domain }}"
      traefik.enable: "{{ ddnsupdater_available_externally }}"
      traefik.frontend.whiteList.sourceRange: "{{ ddnsupdater_traefik_whitelist }}"
      traefik.port: "8000"
@bcurran3 commented on GitHub (Aug 16, 2020): NOTE: I am still getting: `2020-08-16T14:40:17.278-0700 WARN unhealthy: lookup IP addresses for xxxxx.dyndns.org are x.x.x.84 instead of x.x.x.174 {"node_id": 0}` Former is current IP, latter is previous IP. For some reason my container status is "unhealthy." Should I still be using :dyn or have switched to :latest? Using Ansible: ``` --- - name: Docker DDNS-Updater Directory file: path: "{{ item }}" state: directory mode: 0777 with_items: - "{{ ddnsupdater_data_directory }}/data" - name: Docker DDNS-Updater Docker Container docker_container: name: ddns-updater image: qmcgaw/ddns-updater:dyn pull: true volumes: - "{{ ddnsupdater_data_directory }}/data:/updater/data:rw" ports: - "{{ ddnsupdater_port_http }}:8000" env: ROOT_URL: "/" LISTENING_PORT: "8000" LOG_ENCODING: "console" LOG_LEVEL: "info" NODE_ID: "0" HTTP_TIMEOUT: "10s" GOTIFY_URL: "https://gotify.xxxxx.org/" GOTIFY_TOKEN: "xxxxx" BACKUP_PERIOD: "0" BACKUP_DIRECTORY: "/updater/data" TZ: "{{ ansible_nas_timezone }}" restart_policy: unless-stopped memory: 256m labels: traefik.backend: "ddnsupdater" traefik.frontend.rule: "Host:ddnsupdater.{{ ansible_nas_domain }}" traefik.enable: "{{ ddnsupdater_available_externally }}" traefik.frontend.whiteList.sourceRange: "{{ ddnsupdater_traefik_whitelist }}" traefik.port: "8000" ```
Author
Owner

@qdm12 commented on GitHub (Aug 17, 2020):

Still use :dyn.

WARN unhealthy: lookup IP addresses for xxxxx.dyndns.org are x.x.x.84 instead of x.x.x.174

Might be because it takes some time for the IP address to be propagated. Check with nslookup yourdomain.com. Let me know if it works for you and I'll merge it to :latest. Thanks!

@qdm12 commented on GitHub (Aug 17, 2020): Still use `:dyn`. > WARN unhealthy: lookup IP addresses for xxxxx.dyndns.org are x.x.x.84 instead of x.x.x.174 Might be because it takes some time for the IP address to be propagated. Check with `nslookup yourdomain.com`. Let me know if it works for you and I'll merge it to `:latest`. Thanks!
Author
Owner

@bcurran3 commented on GitHub (Aug 19, 2020):

I don't think that's the issue as my IP changed over a week ago and should have propagated even to the slowest 300 baud bound DNS servers by now. (Not sure if IP via carrier pigeon has ever actually been setup for testing.) Updates for myself via 1.1.1.1 propagate in well under an hour.

2020-08-18T23:38:36.889-0700 WARN unhealthy: lookup IP addresses for xxxxx.dyndns.org are x.x.x.84 instead of x.x.x.174 {"node_id": 0}

I did a NSLOOKUP, it hit my local non-authoritative DNS server which goes upstream to my currently off PiHole and then up to 1.1.1.1 and came back with a 3rd IP address x.x.x.105! So the mystery thickens. (This was done on my Wintel box, not via the container.)

I just checked dyn.org and it shows the current IP.

EDIT: Went to https://centralops.net/co/ as well as http://www.kloth.net/services/nslookup.php and looked up the host, both reported the correct IP address as well.

EDIT2: Flushed the cache on my DNS server and my local Wintel box and nslookup still reports back x.x.x.105 which REALLY throws me!

@bcurran3 commented on GitHub (Aug 19, 2020): I don't think that's the issue as my IP changed over a week ago and should have propagated even to the slowest 300 baud bound DNS servers by now. (Not sure if IP via carrier pigeon has ever actually been setup for testing.) Updates for myself via 1.1.1.1 propagate in well under an hour. > 2020-08-18T23:38:36.889-0700 WARN unhealthy: lookup IP addresses for xxxxx.dyndns.org are x.x.x.84 instead of x.x.x.174 {"node_id": 0} I did a NSLOOKUP, it hit my local non-authoritative DNS server which goes upstream to my currently off PiHole and then up to 1.1.1.1 and came back with a 3rd IP address x.x.x.105! So the mystery thickens. (This was done on my Wintel box, not via the container.) I just checked dyn.org and it shows the current IP. EDIT: Went to https://centralops.net/co/ as well as http://www.kloth.net/services/nslookup.php and looked up the host, both reported the correct IP address as well. EDIT2: Flushed the cache on my DNS server and my local Wintel box and nslookup still reports back x.x.x.105 which REALLY throws me!
Author
Owner

@qdm12 commented on GitHub (Aug 19, 2020):

Haha DNS is FuN... Well the container uses whatever dns you have configured in your network. Try running the container setting the dns to 1.1.1.1 (for Docker run its with --dns 1.1.1.1 not sure for ansible).

@qdm12 commented on GitHub (Aug 19, 2020): Haha DNS is FuN... Well the container uses whatever dns you have configured in your network. Try running the container setting the dns to 1.1.1.1 (for Docker run its with `--dns 1.1.1.1` not sure for ansible).
Author
Owner

@bcurran3 commented on GitHub (Aug 19, 2020):

But my container is one step removed from 1.1.1.1. It gets it's DNS from my local DNS which then goes upstream to 1.1.1.1. But for the same of compliance... I added dns_servers: "1.1.1.1" to the config.

End result is the same - unhealthy container and the same warning:

=========================================
=========================================
========= DDNS Universal Updater ========
=========================================
=== Made with ❤️  by github.com/qdm12 ====
=========================================
Running version dyn built on 2020-08-16T01:37:00Z (commit 0d21365)
🔧  Need help? https://github.com/qdm12/ddns-updater/issues/new
💻  Email? quentin.mcgaw@gmail.com
☕  Slack? Join from the Slack button on Github
💸  Help me? https://github.com/sponsors/qdm12
2020-08-19T18:35:21.491-0700	INFO	Found single setting to update record	{"node_id": 0}
2020-08-19T18:35:21.656-0700	INFO	Reading history from database: domain dyndns.org host xxxxx	{"node_id": 0}
2020-08-19T18:35:21.656-0700	INFO	Web UI listening at address 0.0.0.0:8000 with root URL ""	{"node_id": 0}
2020-08-19T18:35:21.828-0700	INFO	backup: disabled	{"node_id": 0}
2020-08-19T18:35:43.407-0700	INFO	http server: HTTP GET /	{"node_id": 0}
2020-08-19T18:35:43.593-0700	INFO	http server: HTTP GET /favicon.ico	{"node_id": 0}
2020-08-19T18:35:45.240-0700	INFO	http server: HTTP GET /	{"node_id": 0}
2020-08-19T18:35:45.427-0700	INFO	http server: HTTP GET /favicon.ico	{"node_id": 0}
2020-08-19T18:36:21.552-0700	WARN	unhealthy: lookup IP addresses for xxxx.dyndns.org are x.x.x.84 instead of x.x.x.174	{"node_id": 0}

An oopsie on my part - the webpage IS running. There was (is) a problem accessing it via hostname using Traefik, but when I go to IP:port it works fine. Sorry for the confusion!

image

@bcurran3 commented on GitHub (Aug 19, 2020): But my container is one step removed from 1.1.1.1. It gets it's DNS from my local DNS which then goes upstream to 1.1.1.1. But for the same of compliance... I added dns_servers: "1.1.1.1" to the config. End result is the same - unhealthy container and the same warning: ``` ========================================= ========================================= ========= DDNS Universal Updater ======== ========================================= === Made with ❤️ by github.com/qdm12 ==== ========================================= Running version dyn built on 2020-08-16T01:37:00Z (commit 0d21365) 🔧 Need help? https://github.com/qdm12/ddns-updater/issues/new 💻 Email? quentin.mcgaw@gmail.com ☕ Slack? Join from the Slack button on Github 💸 Help me? https://github.com/sponsors/qdm12 2020-08-19T18:35:21.491-0700 INFO Found single setting to update record {"node_id": 0} 2020-08-19T18:35:21.656-0700 INFO Reading history from database: domain dyndns.org host xxxxx {"node_id": 0} 2020-08-19T18:35:21.656-0700 INFO Web UI listening at address 0.0.0.0:8000 with root URL "" {"node_id": 0} 2020-08-19T18:35:21.828-0700 INFO backup: disabled {"node_id": 0} 2020-08-19T18:35:43.407-0700 INFO http server: HTTP GET / {"node_id": 0} 2020-08-19T18:35:43.593-0700 INFO http server: HTTP GET /favicon.ico {"node_id": 0} 2020-08-19T18:35:45.240-0700 INFO http server: HTTP GET / {"node_id": 0} 2020-08-19T18:35:45.427-0700 INFO http server: HTTP GET /favicon.ico {"node_id": 0} 2020-08-19T18:36:21.552-0700 WARN unhealthy: lookup IP addresses for xxxx.dyndns.org are x.x.x.84 instead of x.x.x.174 {"node_id": 0} ``` An oopsie on my part - the webpage IS running. There was (is) a problem accessing it via hostname using Traefik, but when I go to IP:port it works fine. Sorry for the confusion! ![image](https://user-images.githubusercontent.com/14026600/90707486-90072280-e24c-11ea-81c2-4b69c65ba413.png)
Author
Owner

@bcurran3 commented on GitHub (Aug 19, 2020):

Maybe this helps:

My updates.json file has the x.x.x.174 IP in it and a 08/03/20 timestamp.

permissions are 777 so that shouldn't be the issue.

Delete it? Fudge it?

@bcurran3 commented on GitHub (Aug 19, 2020): Maybe this helps: My updates.json file has the x.x.x.174 IP in it and a 08/03/20 timestamp. permissions are 777 so that shouldn't be the issue. Delete it? Fudge it?
Author
Owner

@qdm12 commented on GitHub (Aug 19, 2020):

Uhhh not sure 😄 Where does it get the .84 address from though? You can try removing it, let me know if it solves it and I'll dig into fixing it permanently. Anyway, for now I'll merge :dyn into :latest. But let's continue the conversation on the closed issue.

@qdm12 commented on GitHub (Aug 19, 2020): Uhhh not sure 😄 Where does it get the .84 address from though? You can try removing it, let me know if it solves it and I'll dig into fixing it permanently. Anyway, for now I'll merge `:dyn` into `:latest`. But let's continue the conversation on the closed issue.
Author
Owner

@bcurran3 commented on GitHub (Aug 19, 2020):

.84 is the current IP

@bcurran3 commented on GitHub (Aug 19, 2020): .84 is the current IP
Author
Owner

@bcurran3 commented on GitHub (Aug 19, 2020):

I just renamed the upates.json and restarted the container.
A new updates.json was created with current info.
Container is healthy with no warnings.

Seems the root cause is the updates.json file was never updated correctly with the most recent info.

@bcurran3 commented on GitHub (Aug 19, 2020): I just renamed the upates.json and restarted the container. A new updates.json was created with current info. Container is healthy with no warnings. Seems the root cause is the updates.json file was never updated correctly with the most recent info.
Author
Owner

@qdm12 commented on GitHub (Aug 19, 2020):

Uh ok, I'll check the code, probably add some long overdued tests. Thanks for the debugging and enjoy 😉 (finally!)

@qdm12 commented on GitHub (Aug 19, 2020): Uh ok, I'll check the code, probably add some long overdued tests. Thanks for the debugging and enjoy 😉 (finally!)
Author
Owner

@bcurran3 commented on GitHub (Aug 19, 2020):

image
image
image

@bcurran3 commented on GitHub (Aug 19, 2020): ![image](https://user-images.githubusercontent.com/14026600/90708824-98149180-e24f-11ea-8550-cd3271e70ae1.png) ![image](https://user-images.githubusercontent.com/14026600/90708838-a2cf2680-e24f-11ea-977f-99942ba39a97.png) ![image](https://user-images.githubusercontent.com/14026600/90708924-e4f86800-e24f-11ea-8269-4acc01b851e0.png)
Author
Owner

@bfincher commented on GitHub (Jan 15, 2022):

I'm having a similar problem as the original issue author. My config.json is:

{
    "settings": [
        {
        "provider": "dyn",
        "domain": "xxxx.dyndns-home.com",
        "host": "@",
        "username": "myusername",
        "password": "mypassword",
        "ip_version": "ipv4",
        "provider_ip": true
        }
    ]
}

I am getting "ERROR bad request sent" when running the container. Any ideas?

@bfincher commented on GitHub (Jan 15, 2022): I'm having a similar problem as the original issue author. My config.json is: ``` { "settings": [ { "provider": "dyn", "domain": "xxxx.dyndns-home.com", "host": "@", "username": "myusername", "password": "mypassword", "ip_version": "ipv4", "provider_ip": true } ] } ``` I am getting "ERROR bad request sent" when running the container. Any ideas?
Author
Owner

@MichaelMichaelMichaelMichaelMichael commented on GitHub (Sep 11, 2022):

Hi, I'm having the same issue:

2022/09/11 20:06:21 INFO Updating record [domain: dyndns.org | host: xxxx | provider: Dyn] to use 84.xxx.xxx.xxx
2022/09/11 20:06:21 ERROR bad request sent
2022/09/11 20:06:21 INFO IPv4 address of xxxx.dyndns.org is 83.xxx.xxx.xxx and your IPv4 address is 84.xxx.xxx.xxx

using this config:

{
  "settings": [
    {
      "provider": "dyn",
      "domain": "dyndns.org",
      "host": "xxxx",
      "username": "xxxxxxx",
      "password": "xxxxxxx",
      "ip_version": "ipv4",
      "provider_ip": true
    }
  ]
}

I would appreciate any advice.

@MichaelMichaelMichaelMichaelMichael commented on GitHub (Sep 11, 2022): Hi, I'm having the same issue: ``` 2022/09/11 20:06:21 INFO Updating record [domain: dyndns.org | host: xxxx | provider: Dyn] to use 84.xxx.xxx.xxx 2022/09/11 20:06:21 ERROR bad request sent 2022/09/11 20:06:21 INFO IPv4 address of xxxx.dyndns.org is 83.xxx.xxx.xxx and your IPv4 address is 84.xxx.xxx.xxx ``` using this config: ``` { "settings": [ { "provider": "dyn", "domain": "dyndns.org", "host": "xxxx", "username": "xxxxxxx", "password": "xxxxxxx", "ip_version": "ipv4", "provider_ip": true } ] } ``` I would appreciate any advice.
Author
Owner

@heikkiheer commented on GitHub (Mar 10, 2023):

First: Super thanks for your work! It works fine here. I run it in a k3s cluster. As reference for anyone who needs it (please note that the code below is a yaml and I hope that my copy/pasteing did not change the damn spaces necessary in a yaml file). The ingress is a to-do on my never ending to-do-list and it is wrong but does not affect the functionality.

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: ddns
  name: ddns-updater
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: ddns-updater
  template:
    metadata:
      labels:
        app: ddns-updater
    spec:
      securityContext:
        fsGroup: 700
      containers:
      - name: ddns-updater
        image: qmcgaw/ddns-updater:latest
        env:
          - name: PUBLICIPV4_HTTP_PROVIDERS
            value: https://api.ipify.org
          - name: LOG_LEVEL
            value: debug
          - name: CONFIG
            valueFrom:
              configMapKeyRef:
                name: ddns-updater
                key: config.json
---
apiVersion: v1
kind: Service
metadata:
  namespace: ddns
  name: ddns-updater
  labels:
    app: ddns-updater
spec:
  ports:
    - name: http
      port: 8000
      targetPort: 8000
      protocol: TCP
  selector:
    app: ddns-updater
---

---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  namespace: ddns
  name: ddns-updater-http
  labels:
    host: ddns.service
    app: ddns-updater
spec:
  entryPoints:
    - web
  routes:
    - kind: Rule
      match: Host(`ddns.service`)
      services:
        - name: noop@internal
          kind: TraefikService
      middlewares:
        - namespace: traefik
          name: redirect

---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  namespace: ddns
  name: ddns-updater-https
  labels:
    host: ddns.service
    app: ddns-updater
spec:
  entryPoints:
    - websecure
  routes:
    - kind: Rule
      match: Host(`ddns.service`)
      services:
        - name: ddns-updater
          port: http
      middlewares:
        - namespace: traefik
          name: security
  tls:
    secretName: cert-ddns-updater
---

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: ddns
  name: ddns-updater
  labels:
    app: ddns
    host: ddns.service
  annotations:
    traefik.frontend.passHostHeader: "true"
    traefik.ingress.kubernetes.io/frontend-entry-points: http,https
    # traefik.ingress.kubernetes.io/redirect-entry-point: https
    # traefik.ingress.kubernetes.io/redirect-permanent: "true"
    ingress.kubernetes.io/custom-frame-options-value: SAMEORIGIN
    ingress.kubernetes.io/force-hsts: "true"
    ingress.kubernetes.io/hsts-max-age: "15553000"
    ingress.kubernetes.io/hsts-include-subdomains: "true"
    ingress.kubernetes.io/frame-deny: "true"
    #ingress.kubernetes.io/ssl-redirect: "true"
    # cert-manager.io/cluster-issuer: "letsencrypt-prod"
    # cert-manager.io/acme-challenge-type: http01
spec:
  rules:
  - host: ddns.service
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: ddns-updater
            port:
              name: http
  tls:
    - hosts:
      -  ddns.service
      secretName: cert-ddns-updater

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: ddns-updater
  namespace: ddns
data:
  config.json: |+
    {
        "settings": [
          {
            "provider": "dyn",
            "domain": "something.something.com",
            "host": "@",
            "username": "yourusername",
            "password": "yourpassword",
            "ip_version": "ipv4"
          }
        ]
      }
@heikkiheer commented on GitHub (Mar 10, 2023): First: Super thanks for your work! It works fine here. I run it in a k3s cluster. As reference for anyone who needs it (please note that the code below is a yaml and I hope that my copy/pasteing did not change the damn spaces necessary in a yaml file). The ingress is a to-do on my never ending to-do-list and it is wrong but does not affect the functionality. ```yml apiVersion: apps/v1 kind: Deployment metadata: namespace: ddns name: ddns-updater spec: strategy: type: Recreate selector: matchLabels: app: ddns-updater template: metadata: labels: app: ddns-updater spec: securityContext: fsGroup: 700 containers: - name: ddns-updater image: qmcgaw/ddns-updater:latest env: - name: PUBLICIPV4_HTTP_PROVIDERS value: https://api.ipify.org - name: LOG_LEVEL value: debug - name: CONFIG valueFrom: configMapKeyRef: name: ddns-updater key: config.json --- apiVersion: v1 kind: Service metadata: namespace: ddns name: ddns-updater labels: app: ddns-updater spec: ports: - name: http port: 8000 targetPort: 8000 protocol: TCP selector: app: ddns-updater --- --- apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: namespace: ddns name: ddns-updater-http labels: host: ddns.service app: ddns-updater spec: entryPoints: - web routes: - kind: Rule match: Host(`ddns.service`) services: - name: noop@internal kind: TraefikService middlewares: - namespace: traefik name: redirect --- apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: namespace: ddns name: ddns-updater-https labels: host: ddns.service app: ddns-updater spec: entryPoints: - websecure routes: - kind: Rule match: Host(`ddns.service`) services: - name: ddns-updater port: http middlewares: - namespace: traefik name: security tls: secretName: cert-ddns-updater --- --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: ddns name: ddns-updater labels: app: ddns host: ddns.service annotations: traefik.frontend.passHostHeader: "true" traefik.ingress.kubernetes.io/frontend-entry-points: http,https # traefik.ingress.kubernetes.io/redirect-entry-point: https # traefik.ingress.kubernetes.io/redirect-permanent: "true" ingress.kubernetes.io/custom-frame-options-value: SAMEORIGIN ingress.kubernetes.io/force-hsts: "true" ingress.kubernetes.io/hsts-max-age: "15553000" ingress.kubernetes.io/hsts-include-subdomains: "true" ingress.kubernetes.io/frame-deny: "true" #ingress.kubernetes.io/ssl-redirect: "true" # cert-manager.io/cluster-issuer: "letsencrypt-prod" # cert-manager.io/acme-challenge-type: http01 spec: rules: - host: ddns.service http: paths: - pathType: Prefix path: "/" backend: service: name: ddns-updater port: name: http tls: - hosts: - ddns.service secretName: cert-ddns-updater --- apiVersion: v1 kind: ConfigMap metadata: name: ddns-updater namespace: ddns data: config.json: |+ { "settings": [ { "provider": "dyn", "domain": "something.something.com", "host": "@", "username": "yourusername", "password": "yourpassword", "ip_version": "ipv4" } ] } ```
Author
Owner

@qdm12 commented on GitHub (Jun 12, 2023):

@bfincher @MichaelMichaelMichaelMichaelMichael please report to issue #401 I am waiting for someone to figure this out with their dyn account, since from their API documentation the current implementation seems to be correct.

@qdm12 commented on GitHub (Jun 12, 2023): @bfincher @MichaelMichaelMichaelMichaelMichael please report to issue #401 I am waiting for someone to figure this out with their dyn account, since from their API documentation the current implementation seems to be correct.
Author
Owner

@bcurran3 commented on GitHub (Jun 12, 2023):

Just a FYI: I'd love to help, but I migrated from dyn to Cloudflare last year.

@bcurran3 commented on GitHub (Jun 12, 2023): Just a FYI: I'd love to help, but I migrated from dyn to Cloudflare last year.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/ddns-updater#28