Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion net/ddns-scripts/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk

PKG_NAME:=ddns-scripts
PKG_VERSION:=2.8.3
PKG_RELEASE:=2
PKG_RELEASE:=3

PKG_LICENSE:=GPL-2.0

Expand Down
42 changes: 29 additions & 13 deletions net/ddns-scripts/files/usr/lib/ddns/update_netcup_com.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
# Constants
# ---------------------------------------------------------------------------

readonly __NETCUP_ENDPOINT="https://ccp.netcup.net/run/webservice/servers/endpoint.php?JSON"
__NETCUP_ENDPOINT="https://ccp.netcup.net/run/webservice/servers/endpoint.php?JSON"
Comment thread
feckert marked this conversation as resolved.

# ---------------------------------------------------------------------------
# Validate required configuration variables
Expand Down Expand Up @@ -127,15 +127,17 @@ netcup_check_response() {
local __context="$1"
local __status __statuscode __shortmsg

json_load "$(cat "$DATFILE")"
json_load_file "$DATFILE"
json_get_var __status "status"
json_get_var __statuscode "statuscode"
json_get_var __shortmsg "shortmessage"

if [ "$__status" != "success" ]; then
json_cleanup
write_log 14 "netcup DDNS: $__context failed (status='$__status' code=$__statuscode): $__shortmsg"
write_log 3 "netcup DDNS: $__context failed (status='$__status' code=$__statuscode): $__shortmsg"
return 1
fi
return 0
}

# ---------------------------------------------------------------------------
Expand All @@ -154,16 +156,21 @@ json_add_object "param"
json_add_string "apipassword" "$password"
json_close_object

netcup_post || write_log 14 "netcup DDNS: HTTP request failed during login"
netcup_check_response "login"
if ! netcup_post; then
write_log 3 "netcup DDNS: HTTP request failed during login"
Comment thread
feckert marked this conversation as resolved.
return 1
fi
Comment thread
feckert marked this conversation as resolved.
netcup_check_response "login" || return 1

json_select "responsedata"
json_get_var __SESSION_ID "apisessionid"
json_select ".."
json_cleanup

[ -z "$__SESSION_ID" ] && \
write_log 14 "netcup DDNS: login succeeded but no session ID was returned"
if [ -z "$__SESSION_ID" ]; then
write_log 3 "netcup DDNS: login succeeded but no session ID was returned"
return 1
fi

write_log 6 "netcup DDNS: login successful"

Expand All @@ -178,8 +185,11 @@ json_add_object "param"
json_add_string "apisessionid" "$__SESSION_ID"
json_close_object

netcup_post || write_log 14 "netcup DDNS: HTTP request failed during infoDnsRecords"
netcup_check_response "infoDnsRecords"
if ! netcup_post; then
write_log 3 "netcup DDNS: HTTP request failed during infoDnsRecords"
return 1
fi
netcup_check_response "infoDnsRecords" || return 1

# --- Step 3: Find the record matching our hostname and type ----------------
#
Expand Down Expand Up @@ -216,8 +226,10 @@ done

json_cleanup

[ -z "$__MATCH_ID" ] && \
write_log 14 "netcup DDNS: no [$__RRTYPE] record found for hostname '$__REC_HOSTNAME' in zone '$__ZONE'"
if [ -z "$__MATCH_ID" ]; then
write_log 3 "netcup DDNS: no [$__RRTYPE] record found for hostname '$__REC_HOSTNAME' in zone '$__ZONE'"
return 1
fi

# --- Step 4: Update the matched record with the new IP ---------------------

Expand All @@ -242,8 +254,12 @@ json_add_object "param"
json_close_object
json_close_object

netcup_post || write_log 14 "netcup DDNS: HTTP request failed during updateDnsRecords"
netcup_check_response "updateDnsRecords"
if ! netcup_post; then
write_log 3 "netcup DDNS: HTTP request failed during updateDnsRecords"
return 1
fi

netcup_check_response "updateDnsRecords" || return 1
json_cleanup

write_log 6 "netcup DDNS: '$__REC_HOSTNAME.$__ZONE' [$__RRTYPE] updated to $__IP"
Expand Down
Loading