diff --git a/src/freedombone-installer b/src/freedombone-installer index b3a455be06563835595c60853e327efaabd3aa41..d222791e5787fb8201a5d035e4fbf1bbd65bc8fb 100755 --- a/src/freedombone-installer +++ b/src/freedombone-installer @@ -1850,6 +1850,7 @@ function regenerate_dynamic_dns { ddns="$1" ddns_username="$2" ddns_password="$3" + ddns_code="$4" local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin" @@ -1863,6 +1864,7 @@ function regenerate_dynamic_dns { fi sed -i "s|\"$ddns\"|\"$ddns\" selected|g" "$webadmin_install_dir/dynamicdns.html" sed -i "s|DDNS_USERNAME|$ddns_username|g" "$webadmin_install_dir/dynamicdns.html" + sed -i "s|DDNS_CODE|$ddns_code|g" "$webadmin_install_dir/dynamicdns.html" sed -i "s|CURRENT_IP_ADDRESS|$(get_external_ipv4_address)|g" "$webadmin_install_dir/dynamicdns.html" # Note: For security don't populate the password #sed -i "s|DDNS_PASSWORD|$ddns_password|g" "$webadmin_install_dir/dynamicdns.html" @@ -2581,6 +2583,7 @@ function update_dynamic_dns { ddns=$(awk -F ',' '{print $1}' < "$dynamic_dns_file") ddns_username=$(awk -F ',' '{print $2}' < "$dynamic_dns_file") ddns_password=$(awk -F ',' '{print $3}' < "$dynamic_dns_file") + ddns_code=$(awk -F ',' '{print $4}' < "$dynamic_dns_file") ddns_is_valid= if [ "$ddns_username" ]; then @@ -2599,7 +2602,26 @@ function update_dynamic_dns { if [ $ddns_is_valid ]; then /usr/local/bin/${PROJECT_NAME}-ddns "$ddns" "$ddns_username" "$ddns_password" - regenerate_dynamic_dns "$ddns" "$ddns_username" "$ddns_password" + + if [ "$ddns_code" ]; then + if [ ${#ddns_code} -gt 30 ]; then + # if the whole cron line was pasted then parse that + if [[ "$ddns_code" == *'freedns'* ]]; then + if [[ "$ddns_code" == *'?'* && "$ddns_code" == *'='* ]]; then + ddns_code=$(echo "$ddns_code" | awk -F '?' '{print $2}' | awk -F '=' '{print $1}') + fi + fi + if grep -q "DEFAULT_DOMAIN_CODE=" "$CONFIGURATION_FILE"; then + sed -i "s|DEFAULT_DOMAIN_CODE=.*|DEFAULT_DOMAIN_CODE=${ddns_code}|g" "$CONFIGURATION_FILE" + else + echo "DEFAULT_DOMAIN_CODE=${ddns_code}" >> "$CONFIGURATION_FILE" + fi + else + ddns_code= + fi + fi + + regenerate_dynamic_dns "$ddns" "$ddns_username" "$ddns_password" "$ddns_code" fi rm "$dynamic_dns_file" diff --git a/src/freedombone-utils-webadmin b/src/freedombone-utils-webadmin index ad342adf96f0da9c82ee1d2504f6a552a6efd1c0..3f8c56b7221c517eaf1119ce6d4b880bdc78bfca 100755 --- a/src/freedombone-utils-webadmin +++ b/src/freedombone-utils-webadmin @@ -1077,6 +1077,7 @@ function regenerate_webadmin_dynamic_dns { read_config_param DDNS_PROVIDER read_config_param DDNS_USERNAME read_config_param DDNS_PASSWORD + read_config_param DEFAULT_DOMAIN_CODE local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin" @@ -1091,6 +1092,7 @@ function regenerate_webadmin_dynamic_dns { fi sed -i "s|\"$ddns\"|\"$ddns\" selected|g" "$webadmin_install_dir/dynamicdns.html" sed -i "s|DDNS_USERNAME|$DDNS_USERNAME|g" "$webadmin_install_dir/dynamicdns.html" + sed -i "s|DDNS_CODE|$DEFAULT_DOMAIN_CODE|g" "$webadmin_install_dir/dynamicdns.html" sed -i "s|CURRENT_IP_ADDRESS|$(get_external_ipv4_address)|g" "$webadmin_install_dir/dynamicdns.html" # Note: For security don't populate the password #sed -i "s|DDNS_PASSWORD|$DDNS_PASSWORD|g" "$webadmin_install_dir/dynamicdns.html" diff --git a/webadmin/EN/dynamicdns_template.html b/webadmin/EN/dynamicdns_template.html index 4af39052660769cdcf7727bb6efe8404489acfec..1c0e4cb40252257a24287deab15c5999e1196409 100644 --- a/webadmin/EN/dynamicdns_template.html +++ b/webadmin/EN/dynamicdns_template.html @@ -169,7 +169,9 @@ </select> <br><br> <label translate="yes">Username</label>: <input type="text" name="ddns_username" value="DDNS_USERNAME"><br><br> - <label translate="yes">Password</label>: <input type="password" name="ddns_password" value=""><br><br><br> + <label translate="yes">Password</label>: <input type="password" name="ddns_password" value=""><br><br> + <label translate="yes">Code</label>: <input type="text" name="ddnscode" value="DDNS_CODE"><br><br> + <br> <input type="submit" name="submitddnscancel" translate="yes" value="Cancel"> <input type="submit" name="submitddns" translate="yes" value="Continue"> </form> diff --git a/webadmin/dynamicdns.php b/webadmin/dynamicdns.php index 5a06ce0261cf720db742c263fcafcff0dab36798..1ccb7b8c2937d42ed9abe0f54cb7e8f70507ffd3 100755 --- a/webadmin/dynamicdns.php +++ b/webadmin/dynamicdns.php @@ -8,9 +8,10 @@ if (isset($_POST['submitddns'])) { $ddns = htmlspecialchars($_POST['dynamicdns']); $ddns_username = htmlspecialchars($_POST['ddns_username']); $ddns_password = htmlspecialchars($_POST['ddns_password']); + $ddns_code = htmlspecialchars($_POST['ddnscode']); $ddns_file = fopen(".dynamicdns.txt", "w") or die("Unable to create dynamicdns file"); - fwrite($ddns_file, $ddns.','.$ddns_username.','.$ddns_password); + fwrite($ddns_file, $ddns.','.$ddns_username.','.$ddns_password.','.$ddns_code); fclose($ddns_file); }