add function to compress dnsmasq configuration

This commit is contained in:
Eduardo Silva
2025-12-31 18:01:00 -03:00
parent 6cceb39893
commit 3f238ce7b9
3 changed files with 25 additions and 1 deletions

View File

@@ -1,8 +1,28 @@
import os
import tarfile
from cluster.models import ClusterSettings
from .models import DNSSettings, StaticHost, DNSFilterList
def compress_dnsmasq_config():
output_file = "/etc/dnsmasq/dnsmasq_config.tar.gz"
base_dir = "/etc/dnsmasq"
if not ClusterSettings.objects.filter(enabled=True, name='cluster_settings').exists():
if os.path.exists(output_file):
os.remove(output_file)
return None
with tarfile.open(output_file, "w:gz") as tar:
for filename in os.listdir(base_dir):
if filename.endswith(".conf"):
fullpath = os.path.join(base_dir, filename)
tar.add(fullpath, arcname=filename)
return output_file
def generate_unbound_config():
dns_settings = DNSSettings.objects.get(name='dns_settings')
static_hosts = StaticHost.objects.all()
@@ -82,3 +102,4 @@ bind-interfaces
file_path = os.path.join("/etc/dnsmasq/", f"{dns_list.uuid}.conf")
dnsmasq_config += f'addn-hosts={file_path}\n'
return dnsmasq_config

View File

@@ -12,7 +12,7 @@ from django.utils.translation import gettext_lazy as _
from user_manager.models import UserAcl
from .forms import DNSFilterListForm
from .forms import DNSSettingsForm, StaticHostForm
from .functions import generate_dnsmasq_config
from .functions import generate_dnsmasq_config, compress_dnsmasq_config
from .models import DNSFilterList, DNSSettings
from .models import StaticHost
@@ -24,6 +24,7 @@ def export_dns_configuration():
dnsmasq_config = generate_dnsmasq_config()
with open(settings.DNS_CONFIG_FILE, 'w') as f:
f.write(dnsmasq_config)
compress_dnsmasq_config()
return