Browse Source

ddns-scripts: add ddns script to manage the providers

Redmine-patch-id: 5298
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
lilik-openwrt-22.03
Florian Eckert 4 years ago
parent
commit
f184fdf44c
2 changed files with 175 additions and 0 deletions
  1. +4
    -0
      net/ddns-scripts/Makefile
  2. +171
    -0
      net/ddns-scripts/files/usr/bin/ddns.sh

+ 4
- 0
net/ddns-scripts/Makefile View File

@ -199,6 +199,10 @@ define Package/ddns-scripts/install
$(1)/usr/lib/ddns $(1)/usr/lib/ddns
$(INSTALL_BIN) ./files/usr/lib/ddns/dynamic_dns_updater.sh \ $(INSTALL_BIN) ./files/usr/lib/ddns/dynamic_dns_updater.sh \
$(1)/usr/lib/ddns $(1)/usr/lib/ddns
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./files/usr/bin/ddns.sh \
$(1)/usr/bin/ddns
endef endef
define Package/ddns-scripts/postinst define Package/ddns-scripts/postinst


+ 171
- 0
net/ddns-scripts/files/usr/bin/ddns.sh View File

@ -0,0 +1,171 @@
#!/bin/sh
#
# Copyright (C) 2020 TDT AG <development@tdt.de>
#
# This is free software, licensed under the GNU General Public License v2.
# See https://www.gnu.org/licenses/gpl-2.0.txt for more information.
#
. /lib/functions.sh
DDNS_PACKAGE_DIR="/usr/share/ddns"
URL="https://raw.githubusercontent.com/openwrt/packages/master/net/ddns-scripts/files"
usage() {
local code="$1"
local msg="$2"
echo "$msg"
echo ""
echo "Usage: $(basename "$0") <command> <action> <service>"
echo ""
echo "Supported ddns <command>:"
echo " service: Command for ddns service provider"
echo ""
echo "Supported ddns 'service' command <action>:"
echo " update: Update local ddns service list"
echo " list-available: List all available service providers"
echo " list-installed: List all installed service providers"
echo " install <service>: Install service provider"
echo " remove <service>: Remove service provider"
echo " purge: Remove local ddns serivces"
exit "$code"
}
action_update() {
local cacert
config_load ddns
config_get url global 'url' "${URL}${DDNS_PACKAGE_DIR}"
config_get cacert global 'cacert' "IGNORE"
url="${url}/list"
mkdir -p "${DDNS_PACKAGE_DIR}"
if [ "$cacert" = "IGNORE" ]; then
uclient-fetch \
--no-check-certificate \
"$url" \
-O "${DDNS_PACKAGE_DIR}/list"
elif [ -f "$cacert" ]; then
uclient-fetch \
--ca-certificate="${cacert}" \
"$url" \
-O "${DDNS_PACKAGE_DIR}/list"
elif [ -n "$cacert" ]; then
echo "Certification file not found ($cacert)"
exit 5
fi
}
action_list_available() {
if [ -f "${DDNS_PACKAGE_DIR}/list" ]; then
cat "${DDNS_PACKAGE_DIR}/list"
else
echo "No service file found please download first"
exit 3
fi
}
action_list_installed() {
if [ -d "${DDNS_PACKAGE_DIR}/services" ]; then
ls "${DDNS_PACKAGE_DIR}/services"
else
echo "No services installed"
exit 4
fi
}
action_install() {
local service="$1"
local url cacert
config_load ddns
config_get url global 'url' "${URL}${DDNS_PACKAGE_DIR}"
config_get cacert global 'cacert' "IGNORE"
url="${url}/services/${service}.json"
if [ -z "$service" ]; then
usage "4" "No service specified"
fi
mkdir -p "${DDNS_PACKAGE_DIR}/services"
if [ "$cacert" = "IGNORE" ]; then
uclient-fetch \
--no-check-certificate \
"${url}" \
-O "${DDNS_PACKAGE_DIR}/services/${service}.json"
elif [ -f "$cacert" ]; then
uclient-fetch \
--ca-certifcate="${cacert}" \
"${url}" \
-O "${DDNS_PACKAGE_DIR}/services/${service}.json"
elif [ -n "$cacert" ]; then
echo "Certification file not found ($cacert)"
exit 5
fi
}
action_remove() {
local service="$1"
if [ -z "$service" ]; then
usage "4" "No service specified"
fi
rm "${DDNS_PACKAGE_DIR}/services/${service}.json"
}
action_purge() {
rm -rf "${DDNS_PACKAGE_DIR}/services"
rm -rf "${DDNS_PACKAGE_DIR}/list"
}
sub_service() {
local action="$1"
local service="$2"
case "$action" in
update)
action_update
;;
list-available)
action_list_available
;;
list-installed)
action_list_installed
;;
purge)
action_purge
;;
install)
action_install "$service"
;;
remove)
action_remove "$service"
;;
*)
usage "2" "Action not supported"
;;
esac
}
main() {
local cmd="$1"
local action="$2"
local service="$3"
[ "$#" -eq 0 ] && usage "1"
case "${cmd}" in
service)
sub_service "${action}" "${service}"
;;
*)
usage "1" "Command not supported"
;;
esac
}
main "$@"

Loading…
Cancel
Save