From 523bbb641df1c1f65fb655af4c0519178ca47d61 Mon Sep 17 00:00:00 2001 From: lyarinet-netizen Date: Thu, 22 Jan 2026 14:16:52 +0000 Subject: [PATCH] Fix global settings save failure in dev mode - Modified write_global_settings() to check if testparm is available before validation - Skip configuration validation in dev mode when testparm is not installed - This allows saving global settings in development environments without full Samba installation --- app/samba_utils.py | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/app/samba_utils.py b/app/samba_utils.py index 0593b33..c7f830f 100755 --- a/app/samba_utils.py +++ b/app/samba_utils.py @@ -566,13 +566,25 @@ def write_global_settings(settings): # Validate the configuration if DEV_MODE: - # In dev mode, validate the local config - validate_cmd = subprocess.run( - ["testparm", "-s", SMB_CONF], - capture_output=True, - text=True, - check=False, + # In dev mode, check if testparm is available + testparm_check = subprocess.run( + ["which", "testparm"], capture_output=True, text=True, check=False ) + if testparm_check.returncode == 0: + # testparm is available, validate the local config + validate_cmd = subprocess.run( + ["testparm", "-s", SMB_CONF], + capture_output=True, + text=True, + check=False, + ) + if validate_cmd.returncode != 0: + # If validation fails, restore the backup + subprocess.run(["cp", backup_path, SMB_CONF], check=False) + print(f"Invalid configuration: {validate_cmd.stderr}") + return False + else: + print("testparm not available, skipping configuration validation in dev mode") else: # In production mode, validate the system config validate_cmd = subprocess.run( @@ -582,16 +594,13 @@ def write_global_settings(settings): check=False, ) - if validate_cmd.returncode != 0: - # If validation fails, restore the backup - if DEV_MODE: - subprocess.run(["cp", backup_path, SMB_CONF], check=False) - else: + if validate_cmd.returncode != 0: + # If validation fails, restore the backup subprocess.run( ["sudo", "cp", backup_path, "/etc/samba/smb.conf"], check=False ) - print(f"Invalid configuration: {validate_cmd.stderr}") - return False + print(f"Invalid configuration: {validate_cmd.stderr}") + return False # Restart Samba services if DEV_MODE: