From 38252de03c74ce995d18284a22d49225b8c58b0c Mon Sep 17 00:00:00 2001 From: Aveline <352441+ym@users.noreply.github.com> Date: Tue, 13 May 2025 21:13:21 +0200 Subject: [PATCH] chore: create images folder when starting the application (#437) --- main.go | 7 +++++-- usb_mass_storage.go | 20 ++++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index 39b1427..aa743d9 100644 --- a/main.go +++ b/main.go @@ -77,11 +77,14 @@ func Main() { initUsbGadget() - err = setInitialVirtualMediaState() - if err != nil { + if err := setInitialVirtualMediaState(); err != nil { logger.Warn().Err(err).Msg("failed to set initial virtual media state") } + if err := initImagesFolder(); err != nil { + logger.Warn().Err(err).Msg("failed to init images folder") + } + go func() { time.Sleep(15 * time.Minute) for { diff --git a/usb_mass_storage.go b/usb_mass_storage.go index 3ecbdd8..498c311 100644 --- a/usb_mass_storage.go +++ b/usb_mass_storage.go @@ -94,9 +94,20 @@ var nbdDevice *NBDDevice const imagesFolder = "/userdata/jetkvm/images" +func initImagesFolder() error { + err := os.MkdirAll(imagesFolder, 0755) + if err != nil { + return fmt.Errorf("failed to create images folder: %w", err) + } + return nil +} + func rpcMountBuiltInImage(filename string) error { logger.Info().Str("filename", filename).Msg("Mount Built-In Image") - _ = os.MkdirAll(imagesFolder, 0755) + if err := initImagesFolder(); err != nil { + return err + } + imagePath := filepath.Join(imagesFolder, filename) // Check if the file exists in the imagesFolder @@ -224,13 +235,14 @@ func getInitialVirtualMediaState() (*VirtualMediaState, error) { } // TODO: check if it's WebRTC or HTTP - if diskPath == "" { + switch diskPath { + case "": return nil, nil - } else if diskPath == "/dev/nbd0" { + case "/dev/nbd0": initialState.Source = HTTP initialState.URL = "/" initialState.Size = 1 - } else { + default: initialState.Filename = filepath.Base(diskPath) // get size from file logger.Info().Str("diskPath", diskPath).Msg("getting file size")