Ú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'