[main branch] HE DDNS:'badauth', credentials OK

@lleachii @AndrewZ is correct, like I said I'm on main. The topic title says main. I said it worked (and still works) on 24.10. And now you're telling me you've been testing/checking on 24.10 all along, which is not where the issue lies. (Don't get me wrong, I appreciate the help. But this way it's a wild goose chase.)

I can't just install the 24.10 ipk on main since that uses apk now. Will see when I have the time if I can bisect. Will try rolling back to the 24.10 cURL release too.

My bad, I had no clue that meant the software branch (I was actually gonna edit that to remove). Sincere apologies, carry on.

In your defense this was my thoughts too. What is main and should I edit it...

'Main' is the base development code (i.e. that will one day be branched to create '25' and will then continue on as 'main').

No, I edited hence the misnomer "branch" (it's actually the root/trunk of the proverbial OpenWrt software tree).

Have you considering changing user-agent in curl to match your browser: https://everything.curl.dev/http/modify/user-agent.html ?

:sweat_smile: im totally aware what a git branch is but I would have not linked that to the threads topic at first sight...

@AndrewZ I tried your suggestion, but as you or lleachii guessed username and domain are the same.

Replacing domain with username doesn't change anything unfortunately, still 'badauth' returned.

"url": "http://[USERNAME]:[PASSWORD]@dyn.dns.he.net/nic/update?hostname=[DOMAIN]&myip=[IP]",

@stangri I will give that a shot, thanks.

If that doesn't solve it I will open a bug on GitHub, seems someone else on main also bumped into issues, with OVH this time though.

Nope, even when forcing a user agent it refuses, unfortunately.

> GET /nic/update?hostname=[host]&myip=[ip] HTTP/1.1
> Host: dyn.dns.he.net
> Accept: */*
> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
> 
< HTTP/1.1 401 Authorization Required
< Date: Fri, 03 Oct 2025 19:39:36 GMT
< Server: dns.he.net v0.0.1
< Email: DNS Administrator <dnsadmin@he.net>
< Cache-Control: no-cache, must-revalidate
< Expires: Sat, 03 Oct 2026 19:39:36 GMT
< WWW-Authenticate: Basic realm="Dynamic DNS Update Access"
< Content-Length: 7
< Content-Type: text/html
< 
> GET /nic/update?hostname=[host]&myip=[ip] HTTP/1.1
> Host: dyn.dns.he.net
> Accept: */*
> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
> 
< HTTP/1.1 401 Authorization Required
< Date: Fri, 03 Oct 2025 19:39:36 GMT
< Server: dns.he.net v0.0.1
< Email: DNS Administrator <dnsadmin@he.net>
< Cache-Control: no-cache, must-revalidate
< Expires: Sat, 03 Oct 2026 19:39:36 GMT
< WWW-Authenticate: Basic realm="Dynamic DNS Update Access"
< Content-Length: 7
< Content-Type: text/html

Issue created.

There is no refusal in the above example.
After "401 Authorization Required" is received client should send another request with "Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxx" and then the server should provide its final response.

I went through Hurricane Electric's documentation. Changing the IPv4 URL to this makes updating work again:

"https://dyn.dns.he.net/nic/update?hostname=[DOMAIN]&password=[PASSWORD]&myip=[IP]",

I'm not sure if it's desired security wise since it skips basic HTTP auth. Their ' Authentication and Updating using a POST' works as well, but that's not a single URL and adds POST data, not sure how to work that cleanly into the JSON. It seems set up to just accept a single value for the URL.

Anyway, I got it back working, and hopefully someone more skilled can come up with a fix now. Also added it to the bug report.

Note that you don't need to use https there.

I know, but that's how they have it on their site.

Ignore that, for OpenWrt json file it's not needed, "s" will be added automatically within the script.