Bug: Noip incorrectly parsing password with special chars #463

Closed
opened 2025-11-20 04:24:18 -05:00 by saavagebueno · 3 comments
Owner

Originally created by @DomenicoCasillo on GitHub (Nov 11, 2024).

TLDR: Noip password is not parsed correctly if containing special characters

  1. Is this urgent: No
  2. DNS provider(s) you use: NoIp
  3. Program version: Running version latest built on 2024-11-07T09:24:47.441Z (commit 9caf1be)
  4. What are you using to run the container: docker-compose
  5. Extra information: The password gets truncated after '$'

Logs:

2024-11-11T10:36:23Z INFO Updating record [domain: xxx.ddns.net | owner: @ | provider: noip | ip: ipv4] to use xx.xx.xx.xx
2024-11-11T10:36:23Z DEBUG GET https://user%40gmail.com:AAAAAA@dynupdate.no-ip.com/nic/update?hostname=xxx.ddns.net&myip=xx.xx.xx.xx | headers: User-Agent: DDNS-Updater quentin.mcgaw@gmail.com; Authorization: Basic XXXXXX
2024-11-11T10:36:24Z DEBUG 401 Unauthorized | headers: Date: Mon, 11 Nov 2024 10:36:24 GMT; Www-Authenticate: Basic realm="No-IP DNS Update API"; Server: nginx; Content-Type: text/plain; charset=UTF-8; Connection: keep-alive; Cache-Control: no-cache, private | body: badauth
2024-11-11T10:36:24Z ERROR HTTP status is not valid: 401: badauth

Configuration file (remove your credentials!):

{
  "settings": [
    {
      "provider": "noip",
      "domain": "xxx.ddns.net",
      "username": "user@gmail.com",
      "password": "AAAAAA$Bxsa",
      "ip_version": "ipv4"
    }
  ]
}

Host OS: LXC Debian

Originally created by @DomenicoCasillo on GitHub (Nov 11, 2024). **TLDR**: *Noip password is not parsed correctly if containing special characters* 1. Is this urgent: No 2. DNS provider(s) you use: NoIp 3. Program version: Running version latest built on 2024-11-07T09:24:47.441Z (commit 9caf1be) 4. What are you using to run the container: docker-compose 5. Extra information: The password gets truncated after '$' Logs: ```log 2024-11-11T10:36:23Z INFO Updating record [domain: xxx.ddns.net | owner: @ | provider: noip | ip: ipv4] to use xx.xx.xx.xx 2024-11-11T10:36:23Z DEBUG GET https://user%40gmail.com:AAAAAA@dynupdate.no-ip.com/nic/update?hostname=xxx.ddns.net&myip=xx.xx.xx.xx | headers: User-Agent: DDNS-Updater quentin.mcgaw@gmail.com; Authorization: Basic XXXXXX 2024-11-11T10:36:24Z DEBUG 401 Unauthorized | headers: Date: Mon, 11 Nov 2024 10:36:24 GMT; Www-Authenticate: Basic realm="No-IP DNS Update API"; Server: nginx; Content-Type: text/plain; charset=UTF-8; Connection: keep-alive; Cache-Control: no-cache, private | body: badauth 2024-11-11T10:36:24Z ERROR HTTP status is not valid: 401: badauth ``` Configuration file (**remove your credentials!**): ```json { "settings": [ { "provider": "noip", "domain": "xxx.ddns.net", "username": "user@gmail.com", "password": "AAAAAA$Bxsa", "ip_version": "ipv4" } ] } ``` Host OS: LXC Debian
Author
Owner

@qdm12 commented on GitHub (Nov 12, 2024):

Hi there! So your password (replaced with AAAAAA) contains a $ sign and anything after is removed? It might be a problem with how to set in your docker-compose.yml, see https://stackoverflow.com/a/40621373 on how to escape such sign. Never mind this is read from the json config, sorry. Checking now... 👀

@qdm12 commented on GitHub (Nov 12, 2024): Hi there! So your password (replaced with `AAAAAA`) contains a `$` sign and anything after is removed? ~It might be a problem with how to set in your docker-compose.yml, see https://stackoverflow.com/a/40621373 on how to escape such sign.~ Never mind this is read from the json config, sorry. Checking now... 👀
Author
Owner

@qdm12 commented on GitHub (Nov 12, 2024):

It works for me with the same config file you shared:

2024-11-12T12:40:52Z DEBUG GET https://user%40gmail.com:AAAAAA$Bxsa@dynupdate.no-ip.com/nic/update?hostname=example.com&myip=1.2.3.4 | headers: Authorization: Basic dXNlckBnbWFpbC5jb206QUFBQUFBJEJ4c2E=; User-Agent: DDNS-Updater quentin.mcgaw@gmail.com
2024-11-12T12:40:52Z DEBUG 401 Unauthorized | headers: Server: nginx; Content-Type: text/plain; charset=UTF-8; Connection: keep-alive; Cache-Control: no-cache, private; Date: Tue, 12 Nov 2024 12:40:52 GMT; Www-Authenticate: Basic realm="No-IP DNS Update API" | body: badauth
2024-11-12T12:40:52Z ERROR HTTP status is not valid: 401: badauth

Are you sure you are using the right config.json file and/or saved it correctly??

@qdm12 commented on GitHub (Nov 12, 2024): It works for me with the same config file you shared: ``` 2024-11-12T12:40:52Z DEBUG GET https://user%40gmail.com:AAAAAA$Bxsa@dynupdate.no-ip.com/nic/update?hostname=example.com&myip=1.2.3.4 | headers: Authorization: Basic dXNlckBnbWFpbC5jb206QUFBQUFBJEJ4c2E=; User-Agent: DDNS-Updater quentin.mcgaw@gmail.com 2024-11-12T12:40:52Z DEBUG 401 Unauthorized | headers: Server: nginx; Content-Type: text/plain; charset=UTF-8; Connection: keep-alive; Cache-Control: no-cache, private; Date: Tue, 12 Nov 2024 12:40:52 GMT; Www-Authenticate: Basic realm="No-IP DNS Update API" | body: badauth 2024-11-12T12:40:52Z ERROR HTTP status is not valid: 401: badauth ``` Are you sure you are using the right config.json file and/or saved it correctly??
Author
Owner

@DomenicoCasillo commented on GitHub (Nov 14, 2024):

Hi there! So your password (replaced with AAAAAA) contains a $ sign and anything after is removed? It might be a problem with how to set in your docker-compose.yml, see https://stackoverflow.com/a/40621373 on how to escape such sign. Never mind this is read from the json config, sorry. Checking now... 👀

I was supplying the config string through CONFIG env in docker-compose.yml. Escaping the $ with double $$ fixed the issue.
Thanks for the tip.

@DomenicoCasillo commented on GitHub (Nov 14, 2024): > Hi there! So your password (replaced with `AAAAAA`) contains a `$` sign and anything after is removed? ~It might be a problem with how to set in your docker-compose.yml, see https://stackoverflow.com/a/40621373 on how to escape such sign.~ Never mind this is read from the json config, sorry. Checking now... 👀 I was supplying the config string through CONFIG env in docker-compose.yml. Escaping the `$` with double `$$` fixed the issue. Thanks for the tip.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/ddns-updater#463