( dash | 2011. 11. 23., sze – 11:12 )

Úgy tűnik, hogy a probléma meg van oldva.

Ha azt szeretnénk (ritka igény...) hogy a dinamikus dns szolgáltató web-felületén átírva az IP címünket is triggerelődjön egy frissítés a ddns kliens által (az update URL meglátogatása) akkor szükség van erre a patch-re:

/usr/lib/ddns/dynamic_dns_updater.sh
@@ -246,7 +246,6 @@
 
 
 
-registered_ip=$(echo $(nslookup "$domain" 2>/dev/null) |  grep -o "Name:.*" | grep -o "$ip_regex")
 
 
 #do update and then loop endlessly, checking ip every check_interval and forcing an updating once every force_interval
@@ -254,6 +253,7 @@
 while [ true ]
 do
 	current_ip=$(get_current_ip)
+        registered_ip=$(echo $(nslookup "$domain" 2>/dev/null) |  grep -o "Name:.*" | grep -o "$ip_regex")
 
 
 	current_time=$(monotonic_time)

Nekem ez a tesztelés miatt kellett volna, mert sokkal könnyebb mint lokálisan, a routeren publikus IP-t "változtatni".

Kiderült tehát hogy a frissítés sikertelenségének valódi oka nem erre vezethető vissza, hanem a lentebb leírtakra.

Ha https-t használunk, mert nem szeretnénk hogy a jelszavunk plan-text-ben utazzon (az update URL része) akkor a standard beállításokon túl ezekre van szükség:

opkg update && opkg install curl
mkdir -p /etc/ssl/certs
cd /etc/ssl/certs
wget http://curl.haxx.se/ca/cacert.pem

A

/etc/profile

-ban hiába van megadva a curl -re vonatkozó

export CURL_CA_BUNDLE=/etc/ssl/certs/cacert.pem

sor, a ddns frissítő daemon nem source-olja.

Így, a

#some constants

if [ "x$use_https" = "x1" ]
then
	retrieve_prog="/usr/bin/curl "
	if [ -f "$cacert" ]
	then
		retrieve_prog="${retrieve_prog}--cacert $cacert "
	elif [ -d "$cacert" ]
	then
		retrieve_prog="${retrieve_prog}--capath $cacert "
	fi
else
	retrieve_prog="/usr/bin/wget -O - ";
fi
 

kódrészlet (

/usr/lib/ddns/dynamic_dns_updater.sh

) alapján az _egyik_ lehetőség a megoldásra, hogy a

/etc/config/ddns

fájlba beillesztjük a következő sort is:


option cacert /etc/ssl/certs/cacert.pem

Az update output VALÓSZÍNŰLEG azért volt üres, mert a bőbeszédű mód bekapcsolása ellenére a curl standard output és/vagy standard error kimenete nem jelent meg a logban.

Összefoglalva, legalább 3 dolog kell a https működéséhez:

-CA bundle berakása a megfelelő helyre

option 'use_https' '1'
option 'cacert' '/etc/ssl/certs/cacert.pem'