[patch] ddclient debconf doesn't offer 'web' as available configuration
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ddclient (Debian) |
Fix Released
|
Unknown
|
|||
ddclient (Ubuntu) |
Fix Released
|
Low
|
Unassigned |
Bug Description
The installation gui for ddclient asks for an interface (eth0, etc), but fails to ask about firewalls, routers, etc. If the user foolishly believes that the ddclient installer and script are capable of correctly deducing the ip address of the router, etc., the ddclient will update dyndns with the lan address.
To be more verbose, since the installer never asks about anything other than an interface, the user could be led to believe that the installer will check the machines ip, find it to be a private ip (192.168. etc) and that the installer will deduce the ip by other means. This is, of course, not true, but the user has no way of knowing this until a bad update occurs at dyndns.
The installer should either ask about other devices (routers, etc), or not start the service as if all is well, when, in fact, the installer has no idea whether all is well or not.
It is my understanding that the purpose of the ddclient is to cause unnecessary updates at dyndns NOT TO OCCUR, rather than CAUSING THEM TO OCCUR.
SPECIFIC EXAMPLE:
my exposed IP (that of the router) is 67.x.x.x. This is verified
at dyndns.com and whatismyip.com.
my lan IP of the ubuntu machine running the ddclient is 192.168.1.107
The ddclient installer asks about an interface, clicking on help
tells me that the installer wants an interface(no help there..).
I tell it eth0, which is the machines interface to the router.
The installer completes, starts ddclient in daemon mode and
promptly updates my hostname to have an ip of 192.168.1.107, which is,
of course, wrong.
If for some reason this bug report is unclear, please email me.
<email address hidden>
Related branches
Changed in ddclient: | |
assignee: | nobody → motu |
Changed in ddclient: | |
status: | Unknown → Unconfirmed |
Changed in ddclient: | |
assignee: | gothicx → nobody |
Changed in ddclient: | |
status: | Incomplete → Confirmed |
Changed in ddclient: | |
importance: | Undecided → Unknown |
status: | Invalid → Unknown |
Changed in ddclient: | |
status: | Unknown → New |
Changed in ddclient (Debian): | |
status: | New → Fix Released |
Hello Itay,
> Lack of "use=web" support is very annoying to us who need it. This
> patch should add preliminary support for that (to be improved on...)
>
> Also corrects a minor bug in the config script where it tries to guess
> some default answers ([ -z ... ] should have been [ -n ... ])
Thanks for the patch. ISO-8859- 1)
>
>
> -- System Information:
> Debian Release: 3.1
> APT prefers unstable
> APT policy: (990, 'unstable')
> Architecture: i386 (i686)
> Kernel: Linux 2.6.9-3
> Locale: LANG=en_GB, LC_CTYPE=en_GB (charmap=
>
> Versions of packages ddclient depends on:
> ii debconf 1.4.41 Debian configuration management sy
> ii perl [perl5] 5.8.4-4 Larry Wall's Practical Extraction
>
> -- debconf information excluded
> diff -u -Nru ddclient- 3.6.2/debian/ config ddclient- 3.6.2.new/ debian/ config 3.6.2/debian/ config 2004-12-09 20:05:36.000000000 -0600 3.6.2.new/ debian/ config 2004-12-09 20:00:09.000000000 -0600 #*ppp*} " ]; then #*ppp*} " ]; then 3.6.2/debian/ postinst ddclient- 3.6.2.new/ debian/ postinst 3.6.2/debian/ postinst 2004-12-09 20:05:36.000000000 -0600 3.6.2.new/ debian/ postinst 2004-12-09 20:02:33.000000000 -0600 dyndns. org/, fw-skip='IP Address'" conf.XXXXXX` run/ddclient. pid 3.6.2/debian/ templates ddclient- 3.6.2.new/ debian/ templates 3.6.2/debian/ templates 2004-12-09 20:05:36.000000000 -0600 3.6.2.new/ debian/ templates 2004-12-09 19:56:09.000000000 -0600
> --- ddclient-
> +++ ddclient-
> @@ -102,16 +102,24 @@
> db_input critical ddclient/names || true
> db_input critical ddclient/username || true
> db_input critical ddclient/password || true
> - db_input critical ddclient/interface || true
> + db_input critical ddclient/method || true
> db_go
>
> + db_get ddclient/method
> + if [ "$RET" = interface ]; then
> + db_input critical ddclient/interface || true
> + db_go
> +
> + db_get ddclient/interface
> + interface="$RET"
> + else
> + interface=""
> + fi
> +
> # set the default mode ddclient should run in (ip-up | daemon),
> # depending on the entered interface (XpppX or other)
> - db_get ddclient/interface
> - interface=$RET
> -
> # if it is actually a ppp or related interface
> - if [ -z "${interface#
> + if [ -n "${interface#
> db_fget ddclient/run_ipup seen
> if [ $RET = "false" ]; then
> db_set ddclient/run_ipup true
> diff -u -Nru ddclient-
> --- ddclient-
> +++ ddclient-
> @@ -44,8 +44,17 @@
> db_get ddclient/names && names="$RET"
> db_get ddclient/username && username="$RET"
> db_get ddclient/password && password="$RET"
> + db_get ddclient/method && method="$RET"
> db_get ddclient/interface && interface="$RET"
>
> + case "$method" in
> + interface)
> + use="if, if=$interface"
> + ;;
> + web)
> + use="web, web=checkip.
> + ;;
> + esac
>
> # create configuration file /etc/ddclient.conf
> config=`mktemp /etc/ddclient.
> @@ -57,7 +66,7 @@
>
> pid=/var/
> protocol=$protocol
> -use=if, if=$interface
> +use=$use
> server=$server
> login=$username
> password=$password
> diff -u -Nru ddclient-
> --- ddclient-
> +++ ddclient-
> @@ -61,6...