commit 88fc9e90aece7219bbb404ed2ad271f5d4b26139
parent 1eb144d800d7d72d3e8f7b98d67faedb38506207
Author: Felix Kretschmer <5871630+fernwerker@users.noreply.github.com>
Date:   Fri, 12 May 2023 21:14:37 +0200
feat(update.php): Update of multiple domains with one call
Merge pull request #23 from theHaury/master
Add possibility to update multiple domains with one update url
Diffstat:
2 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
@@ -22,9 +22,15 @@ Self-hosted dynamic DNS php script to update netcup DNS API from Router like AVM
 ### AVM FRITZ!Box Settings
 * Go to "Internet" -> "Freigaben" -> "DynDNS"
 * Choose "Benutzerdefiniert"
-* Update-URL: `https://<url of your webspace>/update.php?user=<username>&password=<pass>&ipv4=<ipaddr>&ipv6=<ip6addr>&domain=<domain>`
-  * only the url needs to be adjusted, the rest is automatically filled by your AVM FRITZ!Box
-  * http or https is possible if valid SSL certificate (e.g. Let's Encrypt)
+* Single Domain:
+  * Update-URL: `https://<url of your webspace>/update.php?user=<username>&password=<pass>&ipv4=<ipaddr>&ipv6=<ip6addr>&domain=<domain>`
+    * only the url needs to be adjusted, the rest is automatically filled by your AVM FRITZ!Box
+    * http or https is possible if valid SSL certificate (e.g. Let's Encrypt)
+* Multiple Domains
+  * To Update Multiple domains, add every domain as a comma seperated list.
+  * Update-URL: `https://<url of your webspace>/update.php?user=<username>&password=<pass>&ipv4=<ipaddr>&ipv6=<ip6addr>&domain=<domain1>,<domain2>,<domain3>....`
+    * only the url needs to be adjusted, the rest is automatically filled by your AVM FRITZ!Box
+    * http or https is possible if valid SSL certificate (e.g. Let's Encrypt)
 * Domainname: `<host record that is supposed to be updated>`
 * Username: `<username as defined in .env file>`
 * Password: `<password as definied in .env file>`
diff --git a/update.php b/update.php
@@ -17,4 +17,16 @@ if (!file_exists('.env')) {
 
 $config = parse_ini_file('.env', false, INI_SCANNER_TYPED);
 
-(new netcup\DNS\API\Handler($config, $_REQUEST))->doRun();
+// Get the domains from the URL parameter and split them from the comma separated string
+$domains = explode(',', $_REQUEST['domain']);
+
+// Loop through each domain and call the Handler
+foreach ($domains as $domain) {
+    // Create a new request object with the current domain
+    $request = $_REQUEST;
+    $request['domain'] = trim($domain);
+
+
+    // Call the Handler with the current domain
+    (new netcup\DNS\API\Handler($config, $request))->doRun();
+}