root 6 місяців тому
батько
коміт
9364c73928
2 змінених файлів з 7 додано та 18 видалено
  1. 5 10
      core/cluster_manager.py
  2. 2 8
      core/dns_manager.py

+ 5 - 10
core/cluster_manager.py

@@ -6,26 +6,20 @@ from core.file_manager import load_panel_settings, load_adblock_lists, load_cust
 
 def broadcast_to_cluster(action, domain):
     def task():
-        from core import dns  # Import εδώ για αποφυγή circular import
+        from core import dns 
+        import urllib.request, json
         settings = load_panel_settings()
         nodes = settings.get('cluster_nodes', [])
         
-        # Βρίσκουμε ποιους masters πρέπει να στείλουμε
         masters = dns.get_zone_masters_list(domain)
-        
-        # Αν η λίστα είναι κενή, σημαίνει ότι η ζώνη είναι Master στον Master μας,
-        # οπότε στέλνουμε την Public IP αυτού του Server.
         if not masters:
             master_ip = settings.get('server_public_ip', '').strip()
-            if master_ip:
-                masters = [master_ip]
+            if master_ip: masters = [master_ip]
 
         for node in nodes:
             try:
                 url = f"{node['url'].rstrip('/')}/api/v1/cluster/zone"
                 headers = {"X-API-Key": node['api_key'], "Content-Type": "application/json"}
-                
-                # Στέλνουμε στο Payload και τις IPs των masters
                 payload = {"domain": domain, "masters": masters}
                 
                 if action == 'add_slave':
@@ -34,9 +28,10 @@ def broadcast_to_cluster(action, domain):
                     req = urllib.request.Request(f"{url}/{domain}", headers=headers, method='DELETE')
                 
                 urllib.request.urlopen(req, timeout=5, context=config.ssl_ctx)
-                print(f"Cluster Sync OK: {node['name']} ({action} {domain} -> Masters: {masters})")
             except Exception as e:
                 print(f"Cluster Sync FAIL: {node['name']} -> {e}")
+                
+    import threading
     threading.Thread(target=task, daemon=True).start()
 
 def broadcast_adblock_to_cluster(action):

+ 2 - 8
core/dns_manager.py

@@ -139,17 +139,11 @@ def construct_record_value(req_form, rtype):
     return v
     
 def get_zone_masters_list(domain):
-    """
-    Επιστρέφει μια λίστα με IPs των Masters. 
-    Αν είναι Master ζώνη, επιστρέφει κενή λίστα (θα τη χειριστεί ο cluster_manager).
-    """
     conf = read_file(config.LOCAL_CONF)
     block = get_zone_block(conf, domain)
     if not block: return []
-    
     if "type slave" in block or "type forward" in block:
-        # Ψάχνουμε IPs μέσα στα άγκιστρα { ... }
+        import re
         m = re.search(r'(?:masters|forwarders)\s*\{\s*([^;\}]+);', block, re.S | re.I)
-        if m:
-            return [ip.strip() for ip in m.group(1).split(';') if ip.strip()]
+        if m: return [ip.strip() for ip in m.group(1).split(';') if ip.strip()]
     return []