Last active
February 19, 2026 20:11
-
-
Save besmirzanaj/490c7f8ff61f6e9681fa5656220e3910 to your computer and use it in GitHub Desktop.
Revisions
-
besmirzanaj revised this gist
Aug 13, 2025 . No changes.There are no files selected for viewing
-
besmirzanaj revised this gist
Dec 12, 2024 . 1 changed file with 20 additions and 15 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -18,10 +18,12 @@ src_dns_serverdomain='fqdn.of.source.server' dst_dns_serverdomain='fqdn.of.dest.server' src_dns_token='SOURCE_TECHNITIUM_TOKEN_HERE' dst_dns_token='DEST_TECHNITIUM_TOKEN_HERE' backup_file="/tmp/technitium-backup.zip" # update the dhcp scope as per your local settings dhcp_scope_name="local-home" # Ensure required tools are installed command -v curl >/dev/null 2>&1 || { echo "curl is not installed. Aborting." >&2; exit 1; } # Check the primary server's health before running the script echo "Checking primary Technitium server status" @@ -36,21 +38,24 @@ else fi # restore_backup if [[ -f "$backup_file" ]]; then echo "Restoring the backup on $HOSTNAME" curl -s --form file="@$backup_file" "http://$dst_dns_server:5380/api/settings/restore?token=$dst_dns_token&blockLists=true&logs=true&scopes=true&stats=true&apps=true&zones=true&allowedZones=true&blockedZones=true&dnsSettings=true&logSettings=true&deleteExistingFiles=true&authConfig=true" --output /dev/null # wait for server to come back echo "Waiting for 10 seconds for the destination server to start up" sleep 10 # set dnsServerDomain on destination server echo "Updating DNS server Domain in destination server" curl -X POST "http://$dst_dns_server:5380/api/settings/set?token=$dst_dns_token&dnsServerDomain=$dst_dns_serverdomain" # disable DHCP on the destination server echo "disabling DHCP in destination server" curl -X POST "http://$dst_dns_server:5380/api/dhcp/scopes/disable?token=$dst_dns_token&name=$dhcp_scope_name" # cleanup echo "Cleaning up temporary files" rm -rf $backup_file fi
-
besmirzanaj revised this gist
Jul 1, 2024 . 1 changed file with 3 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -19,6 +19,8 @@ dst_dns_serverdomain='fqdn.of.dest.server' src_dns_token='SOURCE_TECHNITIUM_TOKEN_HERE' dst_dns_token='DEST_TECHNITIUM_TOKEN_HERE' backup_file="technitium-backup.zip" # update the dhcp scope as per your local settings dhcp_scope_name="local-home" # Check the primary server's health before running the script @@ -47,7 +49,7 @@ curl -X POST "http://$dst_dns_server:5380/api/settings/set?token=$dst_dns_token& # disable DHCP on the destination server echo "disabling DHCP in destination server" curl -X POST "http://$dst_dns_server:5380/api/dhcp/scopes/disable?token=$dst_dns_token&name=$dhcp_scope_name" # cleanup echo "Cleaning up temporary files" -
besmirzanaj revised this gist
Apr 12, 2024 . 1 changed file with 3 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,11 +1,12 @@ #!/bin/bash # Author: Besmir Zanaj, 2024 # This is a very raw script to backup configs (no logs and no stats) from a technitium server # to another # # first create two tokens: one on the source server and another one on the destination one # fill out the vars below # create a cronjob with this script on the destinaton host # eg: # 30 */6 * * * /path-to/technitium-sync.sh -
besmirzanaj revised this gist
Apr 12, 2024 . 1 changed file with 19 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -19,19 +19,35 @@ src_dns_token='SOURCE_TECHNITIUM_TOKEN_HERE' dst_dns_token='DEST_TECHNITIUM_TOKEN_HERE' backup_file="technitium-backup.zip" # Check the primary server's health before running the script echo "Checking primary Technitium server status" status_code=$(curl --write-out %{http_code} --silent --output /dev/null http://$src_dns_server:5380) if [[ "$status_code" -ne 200 ]] ; then echo "Primary DNS server is not available. Skipping backup" exit 1 else echo "Getting the backup archive from the primary server" curl -s "http://$src_dns_server:5380/api/settings/backup?token=$src_dns_token&blockLists=true&logs=false&scopes=true&stats=false&zones=true&allowedZones=true&blockedZones=true&dnsSettings=true&logSettings=true&authConfig=true&apps=true" -o $backup_file fi # restore_backup echo "Restoring the backup on $HOSTNAME" curl -s --form file="@$backup_file" "http://$dst_dns_server:5380/api/settings/restore?token=$dst_dns_token&blockLists=true&logs=true&scopes=true&stats=true&apps=true&zones=true&allowedZones=true&blockedZones=true&dnsSettings=true&logSettings=true&deleteExistingFiles=true&authConfig=true" --output /dev/null # wait for server to come back echo "Waiting for 10 seconds for the destination server to start up" sleep 10 # set dnsServerDomain on destination server echo "Updating DNS server Domain in destination server" curl -X POST "http://$dst_dns_server:5380/api/settings/set?token=$dst_dns_token&dnsServerDomain=$dst_dns_serverdomain" # disable DHCP on the destination server echo "disabling DHCP in destination server" curl -X POST "http://$dst_dns_server:5380/api/dhcp/scopes/disable?token=$dst_dns_token&name=local-home" # cleanup echo "Cleaning up temporary files" rm -rf $backup_file -
besmirzanaj revised this gist
Apr 2, 2024 . 1 changed file with 3 additions and 8 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -25,15 +25,10 @@ curl -s "http://$src_dns_server:5380/api/settings/backup?token=$src_dns_token&bl # restore_backup curl -s --form file="@$backup_file" "http://$dst_dns_server:5380/api/settings/restore?token=$dst_dns_token&blockLists=true&logs=true&scopes=true&stats=true&apps=true&zones=true&allowedZones=true&blockedZones=true&dnsSettings=true&logSettings=true&deleteExistingFiles=true&authConfig=true" --output /dev/null # wait for server to come back sleep 10 # set dnsServerDomain on destination server curl -X POST "http://$dst_dns_server:5380/api/settings/set?token=$dst_dns_token&dnsServerDomain=$dst_dns_serverdomain" -
besmirzanaj created this gist
Apr 2, 2024 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,42 @@ #!/bin/bash # this is a very raw script to backup configs (no logs and no stats) from a technitium server # to another # # first create two tokens: one on the source server and another one on the destination one # fill out the vars below # create a cronjob with this script # eg: # 30 */6 * * * /path-to/technitium-sync.sh set -euxo pipefail src_dns_server='source.ip.address' dst_dns_server='dest.ip.address' src_dns_serverdomain='fqdn.of.source.server' dst_dns_serverdomain='fqdn.of.dest.server' src_dns_token='SOURCE_TECHNITIUM_TOKEN_HERE' dst_dns_token='DEST_TECHNITIUM_TOKEN_HERE' backup_file="technitium-backup.zip" # get_backup curl -s "http://$src_dns_server:5380/api/settings/backup?token=$src_dns_token&blockLists=true&logs=false&scopes=true&stats=false&zones=true&allowedZones=true&blockedZones=true&dnsSettings=true&logSettings=true&authConfig=true&apps=true" -o $backup_file # restore_backup reply=$(curl -s --form file="@$backup_file" "http://$dst_dns_server:5380/api/settings/restore?token=$dst_dns_token&blockLists=true&logs=true&scopes=true&stats=true&apps=true&zones=true&allowedZones=true&blockedZones=true&dnsSettings=true&logSettings=true&deleteExistingFiles=true&authConfig=true") # echo $reply | jq .status # wait for serve rto come back until curl --output /dev/null --silent --head --fail http://$dst_dns_server:5380; do printf '.' sleep 5 done # set dnsServerDomain on destination server curl -X POST "http://$dst_dns_server:5380/api/settings/set?token=$dst_dns_token&dnsServerDomain=$dst_dns_serverdomain" # cleanup rm -rf $backup_file