diff --git a/backend/services/shares.py b/backend/services/shares.py index dd697c1..f58a799 100644 --- a/backend/services/shares.py +++ b/backend/services/shares.py @@ -251,8 +251,20 @@ class SharesManager: return {"parameters": []} def set_samba_global_config(self, parameters: Dict[str, str]) -> bool: - """Update Samba global configuration parameters using 'net conf setparm'""" + """Update Samba global configuration parameters using 'net conf setparm/delparm'""" try: + current = self.get_samba_global_config() + current_keys = {p["key"] for p in current.get("parameters", [])} + new_keys = set(parameters.keys()) + + # Delete keys that were removed + for key in current_keys - new_keys: + subprocess.run( + ['/usr/bin/net', 'conf', 'delparm', 'global', key], + capture_output=True, text=True, timeout=10 + ) + + # Set/update remaining keys for key, value in parameters.items(): result = subprocess.run( ['/usr/bin/net', 'conf', 'setparm', 'global', key, '--', value],