Fix: Samba config PUT 422 + shadow:format setparm dash escaping

Route /samba/{name} was matching before /samba/config, causing 422 on
PUT /samba/config. Moved static routes before parameterized routes.

Values starting with '-' (shadow: format = -%Y-%m-%d-%H%M) were parsed
as CLI flags by net conf setparm. Added '--' separator to escape them.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-05 16:04:06 +02:00
parent eef4ab09a7
commit 3632991043
2 changed files with 26 additions and 26 deletions
+25 -25
View File
@@ -78,6 +78,31 @@ async def create_samba_share(
raise HTTPException(status_code=500, detail=str(e))
@router.get("/samba/config")
async def get_samba_config(current_user: str = Depends(get_current_user)):
"""Get Samba global configuration"""
try:
config = share_manager.get_samba_global_config()
return config
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.put("/samba/config")
async def set_samba_config(
request: SambaConfigRequest,
current_user: str = Depends(get_current_user)
):
"""Update Samba global configuration parameters"""
try:
success = share_manager.set_samba_global_config(request.parameters)
if not success:
raise HTTPException(status_code=400, detail="Failed to update Samba configuration")
return {"status": "updated"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.put("/samba/{name}")
async def update_samba_share(
name: str,
@@ -116,31 +141,6 @@ async def delete_samba_share(
raise HTTPException(status_code=500, detail=str(e))
@router.get("/samba/config")
async def get_samba_config(current_user: str = Depends(get_current_user)):
"""Get Samba global configuration"""
try:
config = share_manager.get_samba_global_config()
return config
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.put("/samba/config")
async def set_samba_config(
request: SambaConfigRequest,
current_user: str = Depends(get_current_user)
):
"""Update Samba global configuration parameters"""
try:
success = share_manager.set_samba_global_config(request.parameters)
if not success:
raise HTTPException(status_code=400, detail="Failed to update Samba configuration")
return {"status": "updated"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/samba/config/import")
async def import_samba_config(
request: SambaImportRequest,