From 9a7b3bed258277d5f5babfd9be9aa6dd1ac7cf51 Mon Sep 17 00:00:00 2001
From: grossmj <grossmj@gns3.net>
Date: Mon, 26 Dec 2022 11:28:51 +0800
Subject: [PATCH] Allow raw images by default. Fixes
 https://github.com/GNS3/gns3-server/issues/2097

---
 conf/gns3_server.conf                      | 3 +++
 gns3server/api/routes/controller/images.py | 2 +-
 gns3server/schemas/config.py               | 1 +
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/conf/gns3_server.conf b/conf/gns3_server.conf
index 249e255a..366ac89e 100644
--- a/conf/gns3_server.conf
+++ b/conf/gns3_server.conf
@@ -54,6 +54,9 @@ configs_path = /home/gns3/GNS3/configs
 ; "Affinity-square-gray", "Affinity-circle-blue", "Affinity-circle-red" and "Affinity-circle-gray"
 default_symbol_theme = Affinity-square-blue
 
+; Option to enable or disable raw images to be uploaded to the server
+allow_raw_images = True
+
 ; Option to automatically send crash reports to the GNS3 team
 report_errors = True
 
diff --git a/gns3server/api/routes/controller/images.py b/gns3server/api/routes/controller/images.py
index e61444ce..a37566fa 100644
--- a/gns3server/api/routes/controller/images.py
+++ b/gns3server/api/routes/controller/images.py
@@ -70,7 +70,6 @@ async def upload_image(
         current_user: schemas.User = Depends(get_current_active_user),
         rbac_repo: RbacRepository = Depends(get_repository(RbacRepository)),
         install_appliances: Optional[bool] = False,
-        allow_raw_image: Optional[bool] = False
 ) -> schemas.Image:
     """
     Upload an image.
@@ -91,6 +90,7 @@ async def upload_image(
         raise ControllerBadRequestError(f"Image '{image_path}' already exists")
 
     try:
+        allow_raw_image = Config.instance().settings.Server.allow_raw_images
         image = await write_image(image_path, full_path, request.stream(), images_repo, allow_raw_image=allow_raw_image)
     except (OSError, InvalidImageError, ClientDisconnect) as e:
         raise ControllerError(f"Could not save image '{image_path}': {e}")
diff --git a/gns3server/schemas/config.py b/gns3server/schemas/config.py
index d2efdcc0..6e99140a 100644
--- a/gns3server/schemas/config.py
+++ b/gns3server/schemas/config.py
@@ -136,6 +136,7 @@ class ServerSettings(BaseModel):
     symbols_path: str = "~/GNS3/symbols"
     configs_path: str = "~/GNS3/configs"
     default_symbol_theme: BuiltinSymbolTheme = BuiltinSymbolTheme.affinity_square_blue
+    allow_raw_images: bool = True
     report_errors: bool = True
     additional_images_paths: List[str] = Field(default_factory=list)
     console_start_port_range: int = Field(5000, gt=0, le=65535)