Modify

Opened 8 years ago

Closed 4 years ago

Last modified 4 years ago

#6566 closed defect (fixed)

ddns-scripts not updating dyndns.org

Reported by: j_p@… Owned by: developers
Priority: normal Milestone: Barrier Breaker 14.07
Component: packages Version:
Keywords: Cc:

Description

Hello,

I have just installed Kamikaze 8.09.2 on an Asus WL500gP and most of the default config just worked out of the box (I just had to open port 22 and set up some other trivial things).

However, after installing ddns-scripts and configuring the service, I noticed that my dyndns account does not get updated.

This is the configuration:

# uci show ddns
ddns.myddns=service
ddns.myddns.enabled=1
ddns.myddns.service_name=dyndns.org
ddns.myddns.username=my_user_name_here
ddns.myddns.password=XXXXXXXX
ddns.myddns.ip_source=network
ddns.myddns.ip_network=wan
ddns.myddns.force_interval=28
ddns.myddns.force_unit=days
ddns.myddns.check_interval=5
ddns.myddns.check_unit=minutes
ddns.myddns.domain=FQDN_goes_here

(Already uci-commited and verified at the web interface that it's
correctly configured).

My IP has been changing every time I reboot the router, but ddns-scripts will not update it.

One thing I noticed is this line in /usr/lib/ddns/dynamic_dns_functions.sh:

current_ip=$(ifconfig $ip_interface | grep -o 'inet addr:[0-9.]*' | grep -o "$ip_regex")

See:

# . /etc/functions.sh
# ifconfig $ip_interface | grep -o 'inet addr:[0-9.]*'
inet addr:xxx.yyy.zzz.www

The correct line chink shows up (xxx.yyy.zzz.www is my public IP).
But:

# ifconfig $ip_interface | grep -o 'inet addr:[0-9.]*' | grep -o "$ip_regex"
# 

Nothing!

It seems that $ip_regex is not defined, so my IP is not being detected. Or I could be completely wrong...

This is version 1.0.0-1.2 of ddns-scripts.

Thanks,
Jeronimo Pellegrini (j_p -- aleph0.info)

Attachments (1)

0001-Don-t-encode-username-password-for-BusyBox-wget.patch (2.0 KB) - added by kevin@… 7 years ago.
Patch to disable %-encoding of username/password for BusyBox wget

Download all attachments as: .zip

Change History (10)

comment:1 Changed 8 years ago by quax

Hi,

the new escape-character-handling using /usr/lib/ddns/url_escape.sed may change special-characters to something like %## - can mess up usernames and/or passwords for dyndns.org. Quick and dirty solution is to delete the appropriate line from url_escape.sed.

comment:2 Changed 8 years ago by mathieu-acct@…

Hello,

I was having the same issue running Backfire and I thought it was because I have parentheses in my password. I checked url_escape.sed and saw an obvious bug: this line "s:%:%25:g" has to be the first in the file because if not, you end up replacing % signs you just introduced by running prior sed commands.

For instance a hypothetical password like '%<' which should be escaped as '%25%3C' ends up being replaced as '%25%253C' (the % in %3C got replaced by %25).

I fixed that and added code to replace ( and ) but still, I was getting "badauth" as a result.

So running the function manually in verbose mode, I got the url the script uses to update dyndns and tested it on my computer: it worked. The same URL on my openwrt router doesn't.

I ended up installing the real wget (thus overwriting the one coming from busybox) and all is good now. So I guess busybox' wget messes up the URL somehow.

comment:3 Changed 7 years ago by pcfe

This bug is seemingly still present in Backfire 10.03

I have chars that get escaped (by /usr/lib/ddns/url_escape.sed) in my dyndns password

With the file as shipped, dyndns updates fail with badauth. replacing the file with an empty one fixes the bug. But which side effects does this have? Would it bepossible to update the script so that for service dyndns no escaping takes place (I presume other services need it)

Changed 7 years ago by kevin@…

Patch to disable %-encoding of username/password for BusyBox wget

comment:4 Changed 6 years ago by kevin@…

Quick update: The difference in behavior with BusyBox wget is addressed in the latest snapshots and will be available in BusyBo 1.20.x (See BusyBox Bug 3625). If the current version is expected to be around for a while, I can update the patch with a version test. Otherwise, it will be fixed when BusyBox 1.20.x is included.

comment:5 Changed 6 years ago by nico

  • Resolution set to fixed
  • Status changed from new to closed

Upstream fix added in r29299

comment:6 Changed 6 years ago by xaba

  • Resolution fixed deleted
  • Status changed from closed to reopened

I have had a similar issue with ddns-scripts and a dyndns password containing a '+' sign.
In my OpenWrt router, wget is provided by busybox.
When issuing

wget -qO - "http://username:password_having_a_plus_sign@members.dyndns.org/nic/update?hostname=test.com"

I get a "badauth" reply.
On the other hand, using the same command on a linux system that has the full wget, it works.

Coming back to OpenWRT, when the password '+' sign is %-encoded, busybox wget successfully authenticates.

comment:7 Changed 5 years ago by anonymous

I can confirm this happens in attitude adjustment rc1.

comment:8 Changed 4 years ago by tripolar

  • Resolution set to fixed
  • Status changed from reopened to closed

install wget as ddns-script will use the "real" wget when it's installed.

comment:9 Changed 4 years ago by jow

  • Milestone changed from Attitude Adjustment 12.09 to Barrier Breaker 14.07

Milestone Attitude Adjustment 12.09 deleted

Add Comment

Modify Ticket

Action
as closed .
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.