Phalcode / gamevault-app

Frontend for the self-hosted gaming platform for drm-free games
https://gamevau.lt
Other
281 stars 12 forks source link

Linux download of sh single file failed #209

Closed yodatak closed 11 months ago

yodatak commented 1 year ago

Describe the bug On linux in botle gamevault can't download big file because if failed to calculate and get 500 error

MESSAGE:
Object reference not set to an instance of an object.
INNER_EXCEPTION:Object reference not set to an instance of an object.
STACK_TRACE:
   at MS.Internal.TextFormatting.TextMetrics.FullTextLine.FormatLine(FullTextState fullText, Int32 cpFirst, Int32 lineLength, Int32 formatWidth, Int32 finiteFormatWidth, Int32 paragraphWidth, LineFlags lineFlags, FormattedTextSymbols collapsingSymbol)
   at MS.Internal.TextFormatting.TextMetrics.FullTextLine..ctor(FormatSettings settings, Int32 cpFirst, Int32 lineLength, Int32 paragraphWidth, LineFlags lineFlags)
   at MS.Internal.TextFormatting.TextFormatterImp.FormatLineInternal(TextSource textSource, Int32 firstCharIndex, Int32 lineLength, Double paragraphWidth, TextParagraphProperties paragraphProperties, TextLineBreak previousLineBreak, TextRunCache textRunCache)
   at MS.Internal.TextFormatting.TextFormatterImp.FormatLine(TextSource textSource, Int32 firstCharIndex, Double paragraphWidth, TextParagraphProperties paragraphProperties, TextLineBreak previousLineBreak, TextRunCache textRunCache)
   at System.Windows.Controls.TextBlock.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Control.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.DockPanel.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV, Boolean& hasDesiredSizeUChanged)
   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Decorator.MeasureOverride(Size constraint)
   at System.Windows.Documents.AdornerDecorator.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Window.MeasureOverrideHelper(Size constraint)
   at System.Windows.Window.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Interop.HwndSource.SetLayoutSize()
   at System.Windows.Interop.HwndSource.set_RootVisualInternal(Visual value)
   at System.Windows.Interop.HwndSource.set_RootVisual(Visual value)
   at System.Windows.Window.SetRootVisual()
   at System.Windows.Window.SetRootVisualAndUpdateSTC()
   at System.Windows.Window.SetupInitialState(Double requestedTop, Double requestedLeft, Double requestedWidth, Double requestedHeight)
   at System.Windows.Window.CreateSourceWindow(Boolean duringShow)
   at System.Windows.Window.CreateSourceWindowDuringShow()
   at System.Windows.Window.SafeCreateWindowDuringShow()
   at System.Windows.Window.ShowHelper(Object booleanBox)
   at System.Windows.Window.Show()
   at gamevault.App.Application_Startup(Object sender, StartupEventArgs e) in D:\a\gamevault-app\gamevault-app\gamevault\App.xaml.cs:line 95
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

MESSAGE:
Object reference not set to an instance of an object.
INNER_EXCEPTION:
STACK_TRACE:
   at gamevault.UserControls.GameViewUserControl.Download_Click(Object sender, MouseButtonEventArgs e) in D:\a\gamevault-app\gamevault-app\gamevault\UserControls\GameViewUserControl.xaml.cs:line 104
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

To Reproduce Steps to reproduce the behavior: 1 - Linux bootlde gamevault latest 2- try to download a tar file or xci or .sh

3- if you put the font in folder it crash at start 3- you got an error and it don't restart anymore

Screenshots

Capture d’écran du 2023-08-26 19-30-47 Capture d’écran du 2023-08-26 19-30-06 Capture d’écran du 2023-08-26 19-28-18 Capture d’écran du 2023-08-21 22-48-04

Desktop (please complete the following information):

On server side error:   ┃ [116]   position: undefined,
2023-08-26T19:55:13.645942948+02:00 error:   ┃ [117]   query: 'INSERT INTO "game"("created_at", "updated_at", "deleted_at", "entity_version", "rawg_id", "title", "rawg_title", "version", "release_date", "rawg_release_date", "cache_date", "file_path", "size", "description", "website_url", "metacritic_rating", "average_playtime", "early_access", "type", "box_image_id", "background_image_id") VALUES (DEFAULT, DEFAULT, DEFAULT, 1, DEFAULT, $1, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, $2, $3, DEFAULT, DEFAULT, DEFAULT, DEFAULT, $4, $5, DEFAULT, DEFAULT) RETURNING "id", "created_at", "updated_at", "deleted_at", "entity_version", "size", "type"',
error:   ┃ [118]   routine: 'ExecConstraints',
2023-08-26T19:55:13.645948486+02:00 error:   ┃ [119]   schema: 'public',
error:   ┃ [120]   severity: 'ERROR',
2023-08-26T19:55:13.645954901+02:00 error:   ┃ [121]   table: 'game',
error:   ┃ [122]   timestamp: '2023-08-26T17:55:13.644Z',
2023-08-26T19:55:13.645960493+02:00 error:   ┃ [123]   where: undefined
error:   ┗ [124] }
2023-08-26T19:55:13.810193534+02:00 ERROR:   ┏ /games/Switch/game (2023).xci : Can not open the file as archive +165ms
2023-08-26T19:55:13.810209275+02:00 ERROR:   ┃ [ 1] [Error fetching Executables List for "/games/Switch/game (2023).xci"]
ERROR:   ┃ [ 2] {
ERROR:   ┃ [ 3]   context: 'FilesService',
2023-08-26T19:55:13.810215599+02:00 ERROR:   ┃ [ 4]   error: Error: /games/Switch/game (2023).xci : Can not open the file as archive
ERROR:   ┃ [ 5]       at Object.fromBuffer (/app/node_modules/.pnpm/node-7z@3.0.0/node_modules/node-7z/src/error.js:30:15)
2023-08-26T19:55:13.810219580+02:00 ERROR:   ┃ [ 6]       at /app/node_modules/.pnpm/node-7z@3.0.0/node_modules/node-7z/src/events.js:25:19
2023-08-26T19:55:13.810227134+02:00 ERROR:   ┃ [ 7]       at Socket.<anonymous> (/app/node_modules/.pnpm/node-7z@3.0.0/node_modules/node-7z/src/lifecycle.js:63:51)
ERROR:   ┃ [ 8]       at Socket.emit (node:events:514:28)
2023-08-26T19:55:13.810231948+02:00 ERROR:   ┃ [ 9]       at addChunk (node:internal/streams/readable:343:12)
2023-08-26T19:55:13.810233899+02:00 ERROR:   ┃ [10]       at readableAddChunk (node:internal/streams/readable:316:9)
2023-08-26T19:55:13.810235839+02:00 ERROR:   ┃ [11]       at Readable.push (node:internal/streams/readable:253:10)
ERROR:   ┃ [12]       at Pipe.onStreamRead (node:internal/stream_base_commons:190:23) {
ERROR:   ┃ [13]     level: 'ERROR',
ERROR:   ┃ [14]     stderr: '\n' +
ERROR:   ┃ [15]       'ERROR: /games/Switch/game (2023).xci : Can not open the file as archive\n' +
ERROR:   ┃ [16]       '\n' +
2023-08-26T19:55:13.810249235+02:00 ERROR:   ┃ [17]       '\n'
ERROR:   ┃ [18]   },
ERROR:   ┃ [19]   stderr: '\n' +
ERROR:   ┃ [20]     'ERROR: /games/Switch/game (2023).xci : Can not open the file as archive\n' +
ERROR:   ┃ [21]     '\n' +
2023-08-26T19:55:13.810266385+02:00 ERROR:   ┃ [22]     '\n',
ERROR:   ┃ [23]   timestamp: '2023-08-26T17:55:13.809Z'
2023-08-26T19:55:13.810271051+02:00 ERROR:   ┗ [24] }
2023-08-26T19:55:13.810301980+02:00 warn:    ┏ Could not detect any executables in archive "/games/Switch/game (2023).xci". Be aware that Game Type Detection does not support nested archives. +1ms
2023-08-26T19:55:13.810306099+02:00 warn:    ┗ [1] { context: 'FilesService', timestamp: '2023-08-26T17:55:13.810Z' }
2023-08-26T19:55:13.810549384+02:00 error:   ┏ Error detecting game type: +0ms
2023-08-26T19:55:13.810553782+02:00 error:   ┃ [1] [Error: /games/Switch/game (2023).xci : Can not open the file as archive]
2023-08-26T19:55:13.810556553+02:00 error:   ┗ [2] { context: 'FilesService', timestamp: '2023-08-26T17:55:13.810Z' }

023-08-26T19:55:13.810266385+02:00 ERROR:   ┃ [22]     '\n',
ERROR:   ┃ [23]   timestamp: '2023-08-26T17:55:13.809Z'
2023-08-26T19:55:13.810271051+02:00 ERROR:   ┗ [24] }
2023-08-26T19:55:13.810301980+02:00 warn:    ┏ Could not detect any executables in archive "/games/Switch/game (2023).xci". Be aware that Game Type Detection does not support nested archives. +1ms
2023-08-26T19:55:13.810306099+02:00 warn:    ┗ [1] { context: 'FilesService', timestamp: '2023-08-26T17:55:13.810Z' }
2023-08-26T19:55:13.810549384+02:00 error:   ┏ Error detecting game type: +0ms
2023-08-26T19:55:13.810553782+02:00 error:   ┃ [1] [Error: /games/Switch/game (2023).xci : Can not open the file as archive]
2023-08-26T19:55:13.810556553+02:00 error:   ┗ [2] { context: 'FilesService', timestamp: '2023-08-26T17:55:13.810Z' }
warn:    ┏ Could not detect any executables in archive "/games/Uncharted Legacy of Thieves Collection/Uncharted 4 A Thief's End(2016).sh.tar". Be aware that Game Type Detection does not support nested archives. +9ms

My gamevault helm install via flux

---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: gamevault-backend
  namespace: games
spec:
  chart:
    spec:
      chart: gamevault-backend
      interval: 15m
      reconcileStrategy: ChartVersion
      sourceRef:
        kind: HelmRepository
        name: truecharts
        namespace: flux-system
      version: 1.1.1
  interval: 5m
  values:

    image:
      repository: phalcode/gamevault-backend
      pullPolicy: IfNotPresent
      tag: 4.0.1@sha256:e74f20e37c1ae55827623b9135a2c0cd80b7b44b17179d59de3b153c58979abb

    operator:
      register: false
      verify:
        enabled: false
        failOnError: false

    ingress:
      main:
        autoLink: true
        enabled: true
        ingressClassName: traefik
        enableFixedMiddlewares: false
        hosts:
          - host: games.XXXXX
            paths:
              - path: /
                pathType: Prefix
        tls:
          - hosts:
              - games.XXXX

    persistence:
      logs:
        enabled: true
        hostPath: /mnt/disk/Jeux/gamevault/logs
        hostPathType: Directory
        mountPath: /logs
        targetSelectAll: true
        type: hostPath
      images:
        enabled: true
        hostPath: /mnt/disk/Jeux/gamevault/images
        hostPathType: Directory
        mountPath: /images
        targetSelectAll: true
        type: hostPath
      games:
        enabled: true
        mountPath: /games
        hostPath: /mnt/disk/Jeux/gamevault/games
        hostPathType: Directory
        targetSelectAll: true
        type: hostPath

    cnpg:
      main:
        enabled: true
        user: gamevault
        database: gamevault

    gamevault:
      server:
        admin_user: XXXXX
        admin_password: XXXX
        registration_disabled: false
        account_activation_disabled: true
        allowed_origins:
          - "*"
        log_level: info
      games:
        index_interval_in_minutes: 5
        search_recursive: true
        file_formats:
          - ".7z"
          - ".sh"
          - ".tar"
          - ".tar.gz"
          - ".xci"
          - ".ncp"
      images:
        gc_keep_days: 30
        gc_interval_minutes: 60
      rawg:
        api_url: https://api.rawg.io/api
        api_cache_days: 7
        api_key: "XXXXXXX"
yodatak commented 1 year ago

I can also provide the bootle extract and my server if need in private

Alfagun74 commented 1 year ago

Regarding the server logs: .xci is not a supported archive format, you are forcing it, so the errors are normal. If you want them to disappear in the log, tar the xci games.

yodatak commented 1 year ago

True but .tar and .sh are supported but don't work

Alfagun74 commented 1 year ago

yeah i read, i just want to make sure its not a serverside issue, do you have any server error logs for downloading tars? The 500 Usually means its server side.

Alfagun74 commented 1 year ago

and .7z work for you for some reason?

Alfagun74 commented 1 year ago

Does Download not work at all or does extract not work? Whats the exact way to reproduce it?

yodatak commented 1 year ago

I try to make a way to reproduce and produce server logs.

The 7z file that contain Windows portable game work And. Sh game in 7z works too but not uncompressed. Sh or compressed.. Sh I can provides some file to help to debug and add it to non regression test maybe? With GPL games?

yodatak commented 1 year ago

Not really a game but a. Sh https://github.com/phyver/GameShell

yodatak commented 1 year ago

I try today with https://supertuxkart.itch.io/supertuxkart And I will tell you the result

yodatak commented 1 year ago

Ok so i restard my server and know tar zip and 7z work with config change but single .sh file not

my config of helm changes

    gamevault:
      server:
        admin_user: XXX
        admin_password: XXX
        registration_disabled: false
        account_activation_disabled: true
        allowed_origins:
          - "*"
        log_level: info
      games:
        index_interval_in_minutes: 5
        search_recursive: true
        file_formats:
          - ".7z"
          - ".sh"
          - ".tar"
          - ".zip"
          - ".xz"
          - ".gz"  

The client: image and i got a 49,3 mo tar file corruped in my client folder

The server log


info:    ┏ [28/Aug/2023:19:47:20 +0000] yodatak @ XXXX - GET /api/v1/games/12587 -> 200 - 77.684 ms - 731 - 'GameVault/1.4.1'
 +1m
info:    ┗ [1] { context: 'Morgan', timestamp: '2023-08-28T19:47:20.035Z' }
info:    ┏ [28/Aug/2023:19:47:20 +0000] yodatak @ XXX - GET /api/v1/progresses/user/1/game/12587 -> 200 - 58.604 ms - - - 'GameVault/1.4.1'
 +70ms
info:    ┗ [1] { context: 'Morgan', timestamp: '2023-08-28T19:47:20.105Z' }
info:    ┏ [28/Aug/2023:19:47:23 +0000] yodatak @ XXXX - GET /api/v1/games/12587/download -> 200 - 56.008 ms - - - 'GameVault/1.4.1'
2023-08-28T21:47:23.136340844+02:00  +2s
info:    ┗ [1] { context: 'Morgan', timestamp: '2023-08-28T19:47:23.132Z' }
2023-08-28T21:47:23.136347912+02:00 error:   ┏ Premature close +2ms
2023-08-28T21:47:23.136350625+02:00 error:   ┃ [1] Error [ERR_STREAM_PREMATURE_CLOSE]: Premature close
error:   ┃ [2]     at new NodeError (node:internal/errors:405:5)
2023-08-28T21:47:23.136356128+02:00 error:   ┃ [3]     at ServerResponse.onclose (node:internal/streams/end-of-stream:159:30)
2023-08-28T21:47:23.136358583+02:00 error:   ┃ [4]     at ServerResponse.emit (node:events:526:35)
error:   ┃ [5]     at emitCloseNT (node:_http_server:1012:10)
2023-08-28T21:47:23.136363468+02:00 error:   ┃ [6]     at Socket.onServerResponseClose (node:_http_server:278:5)
error:   ┃ [7]     at Socket.emit (node:events:526:35)
2023-08-28T21:47:23.136368494+02:00 error:   ┃ [8]     at TCP.<anonymous> (node:net:337:12)
error:   ┗ [9] { context: 'ExpressAdapter', timestamp: '2023-08-28T19:47:23.134Z' }
yodatak commented 11 months ago

I reinstall the server and with latest gamevault client too and i got this error


2023-09-15T21:28:10.258591646+02:00 info:    ┗ [1] { context: 'Morgan', timestamp: '2023-09-15T19:28:10.258Z' }
info:    ┏ [15/Sep/2023:19:28:17 +0000] yodatak @ 10.42.0.1 - GET /api/v1/games/7/download -> 200 - 62.207 ms - - - 'GameVault/1.5.0'
2023-09-15T21:28:17.162172101+02:00  +2s
2023-09-15T21:28:17.162178224+02:00 info:    ┗ [1] { context: 'Morgan', timestamp: '2023-09-15T19:28:17.161Z' }
error:   ┏ Premature close +2ms
error:   ┃ [1] Error [ERR_STREAM_PREMATURE_CLOSE]: Premature close
2023-09-15T21:28:17.164165537+02:00 error:   ┃ [2]     at new NodeError (node:internal/errors:405:5)
2023-09-15T21:28:17.164168235+02:00 error:   ┃ [3]     at ServerResponse.onclose (node:internal/streams/end-of-stream:159:30)
2023-09-15T21:28:17.164170921+02:00 error:   ┃ [4]     at ServerResponse.emit (node:events:526:35)
error:   ┃ [5]     at emitCloseNT (node:_http_server:1023:10)
2023-09-15T21:28:17.164176916+02:00 error:   ┃ [6]     at Socket.onServerResponseClose (node:_http_server:278:5)
error:   ┃ [7]     at Socket.emit (node:events:526:35)
2023-09-15T21:28:17.164185642+02:00 error:   ┃ [8]     at TCP.<anonymous> (node:net:337:12)
error:   ┗ [9] { context: 'ExpressAdapter', timestamp: '2023-09-15T19:28:17.163Z' }
info:    ┏ [15/Sep/2023:19:28:21 +0000] yodatak @ 10.42.0.1 - GET /api/v1/games/7/download -> 200 - 65.525 ms - - - 'GameVault/1.5.0'
2023-09-15T21:28:21.097533003+02:00  +2s
2023-09-15T21:28:21.097537325+02:00 info:    ┗ [1] { context: 'Morgan', timestamp: '2023-09-15T19:28:21.096Z' }
error:   ┏ Premature close +1ms
2023-09-15T21:28:21.099305388+02:00 error:   ┃ [1] Error [ERR_STREAM_PREMATURE_CLOSE]: Premature close
2023-09-15T21:28:21.099308096+02:00 error:   ┃ [2]     at new NodeError (node:internal/errors:405:5)
error:   ┃ [3]     at ServerResponse.onclose (node:internal/streams/end-of-stream:159:30)
2023-09-15T21:28:21.099312206+02:00 error:   ┃ [4]     at ServerResponse.emit (node:events:526:35)
2023-09-15T21:28:21.099314178+02:00 error:   ┃ [5]     at emitCloseNT (node:_http_server:1023:10)
2023-09-15T21:28:21.099316707+02:00 error:   ┃ [6]     at Socket.onServerResponseClose (node:_http_server:278:5)
error:   ┃ [7]     at Socket.emit (node:events:526:35)
2023-09-15T21:28:21.099320652+02:00 error:   ┃ [8]     at TCP.<anonymous> (node:net:337:12)
error:   ┗ [9] { context: 'ExpressAdapter', timestamp: '2023-09-15T19:28:21.098Z' }
{
    "id": 7,
    "created_at": "2023-09-15T19:24:01.251Z",
    "updated_at": "2023-09-15T19:30:00.706Z",
    "deleted_at": null,
    "entity_version": 4,
    "rawg_id": null,
    "title": "XXXXXXX",
    "rawg_title": null,
    "version": null,
    "release_date": null,
    "rawg_release_date": null,
    "cache_date": null,
    "file_path": "/games/XXXX X XXXX XXXX Game.sh",
    "size": "1889174654",
    "description": null,
    "box_image": {
        "id": 7,
        "created_at": "2023-09-15T19:24:37.641Z",
        "updated_at": "2023-09-15T19:24:37.641Z",
        "deleted_at": null,
        "entity_version": 1,
        "source": "https://www.metacritic.com/a/img/catalog/provider/6/12/6-1-854726-52.jpg",
        "path": "/images/25eb2b33-f81d-494f-892d-8332a1a2be4f.jpeg",
        "mediaType": null
    },
    "background_image": null,
    "website_url": null,
    "metacritic_rating": null,
    "average_playtime": null,
    "early_access": false,
    "type": "UNDETECTABLE",
    "progresses": [],
    "publishers": [],
    "developers": [],
    "stores": [],
    "tags": [],
    "genres": []
}

when i do a curl from the api i download the game

curl --request GET \                                                                                                                                                                                                                                                                       ⬢ [fedora-toolbox:38] 
                 --url https://XXXXXXXXXXXX/api/v1/games/7/download \
                 --header 'Authorization: Basic XXXXXg==' --output  "/games/XXXX X XXXX XXXX Game.tar"

and the game works so i think its a client issue and not a server issue

yodatak commented 11 months ago

Same think if i add a (2023)

{
    "id": 84,
    "created_at": "2023-09-15T19:45:00.426Z",
    "updated_at": "2023-09-15T19:45:15.491Z",
    "deleted_at": null,
    "entity_version": 2,
    "rawg_id": null,
    "title": "Chef A Restaurant Tycoon Game",
    "rawg_title": null,
    "version": null,
    "release_date": "2023-01-01T00:00:00.000Z",
    "rawg_release_date": null,
    "cache_date": null,
    "file_path": "/games/Chef A Restaurant Tycoon Game (2023).sh",
    "size": "1889174654",
    "description": null,
    "box_image": {
        "id": 145,
        "created_at": "2023-09-15T19:45:15.481Z",
        "updated_at": "2023-09-15T19:45:15.481Z",
        "deleted_at": null,
        "entity_version": 1,
        "source": "https://www.metacritic.com/a/img/catalog/provider/6/12/6-1-854726-52.jpg",
        "path": "/images/5325097c-e0a5-482b-9987-ca3c8e1930a5.jpeg",
        "mediaType": null
    },
    "background_image": null,
    "website_url": null,
    "metacritic_rating": null,
    "average_playtime": null,
    "early_access": false,
    "type": "UNDETECTABLE",
    "progresses": [],
    "publishers": [],
    "developers": [],
    "stores": [],
    "tags": [],
    "genres": []
}

same with tar file

{
    "id": 4,
    "created_at": "2023-09-15T19:24:00.971Z",
    "updated_at": "2023-09-15T19:24:32.156Z",
    "deleted_at": null,
    "entity_version": 2,
    "rawg_id": null,
    "title": "XXXXX .sh",
    "rawg_title": null,
    "version": null,
    "release_date": "2022-01-01T00:00:00.000Z",
    "rawg_release_date": null,
    "cache_date": null,
    "file_path": "/games/XXXX (2022).sh.tar",
    "size": "416112640",
    "description": null,
    "box_image": {
        "id": 4,
        "created_at": "2023-09-15T19:24:32.149Z",
        "updated_at": "2023-09-15T19:24:32.149Z",
        "deleted_at": null,
        "entity_version": 1,
        "source": "https://cdn.cdkeys.com/700x700/media/catalog/product/b/r/broforce_pc_.jpg",
        "path": "/images/e9fb5fa5-36f0-45b1-918f-da38eef1fa1c.jpeg",
        "mediaType": null
    },
    "background_image": null,
    "website_url": null,
    "metacritic_rating": null,
    "average_playtime": null,
    "early_access": false,
    "type": "UNDETECTABLE",
    "progresses": [],
    "publishers": [],
    "developers": [],
    "stores": [],
    "tags": [],
    "genres": []
}

it work with windows portable game and

{
    "id": 27,
    "created_at": "2023-09-15T19:24:02.496Z",
    "updated_at": "2023-09-15T19:24:02.496Z",
    "deleted_at": null,
    "entity_version": 1,
    "rawg_id": null,
    "title": "XXXXX",
    "rawg_title": null,
    "version": null,
    "release_date": "2022-01-01T00:00:00.000Z",
    "rawg_release_date": null,
    "cache_date": null,
    "file_path": "/games/XXXX (2022).7z",
    "size": "22803244",
    "description": null,
    "box_image": {
        "id": 35,
        "created_at": "2023-09-15T19:25:27.979Z",
        "updated_at": "2023-09-15T19:25:27.979Z",
        "deleted_at": null,
        "entity_version": 1,
        "source": "https://cdn2.steamgriddb.com/file/sgdb-cdn/thumb/83a51a02ec406357ff3bb54dd0937f6e.jpg",
        "path": "/images/680cbfe4-fd41-4433-a703-556138d98f4b.jpeg",
        "mediaType": null
    },
    "background_image": null,
    "website_url": null,
    "metacritic_rating": null,
    "average_playtime": null,
    "early_access": false,
    "type": "WINDOWS_PORTABLE",
    "progresses": [],
    "publishers": [],
    "developers": [],
    "stores": [],
    "tags": [],
    "genres": []
}

It works with .sh and 7z file

{ "id": 2, "created_at": "2023-09-15T19:24:00.286Z", "updated_at": "2023-09-15T19:24:25.825Z", "deleted_at": null, "entity_version": 2, "rawg_id": null, "title": "XXXXXX .sh", "rawg_title": null, "version": null, "release_date": "2014-01-01T00:00:00.000Z", "rawg_release_date": null, "cache_date": null, "file_path": "/games/XXXXX (2014).sh.7z", "size": "1916924384", "description": null, "box_image": { "id": 2, "created_at": "2023-09-15T19:24:25.813Z", "updated_at": "2023-09-15T19:24:25.813Z", "deleted_at": null, "entity_version": 1, "source": "https://images.launchbox-app.com/234443bc-eb45-4ca7-91c4-0da4c6015176.png", "path": "/images/c0c548fd-e4fe-4322-989d-1deed61f94f1.png", "mediaType": null }, "background_image": null, "website_url": null, "metacritic_rating": null, "average_playtime": null, "early_access": false, "type": "UNDETECTABLE", "progresses": [], "publishers": [], "developers": [], "stores": [], "tags": [], "genres": [] }

yodatak commented 11 months ago

I can give acces to my server if needed

yodatak commented 11 months ago

Maybe its from mime type of the .sh i got that are file -i XXX.sh: application/octet-stream; charset=binary a .sh script without any game its update-wordpress.sh: text/x-shellscript; charset=us-ascii

maybe its this part https://github.com/Phalcode/gamevault-app/blob/c7c97c415f499bcc64691ca0398d446b30737e4f/gamevault/Helper/MimeTypeHelper.cs#L407C1-L407C37

what do you think ( any way to have a debug.exe file of gamevault to debug ? @Yelo420

Yelo420 commented 11 months ago

The mime Type helper is currently only used when uploading images (as "MultipartFormDataContent"). In future updates it will also be used when you can upload games directly from client.

The downloader gets all the info about the file it should download from the request header (if the server sends it). If not available it takes the file path property from the game object as fallback.

I think the problem is that the fallback doesn't work either. But this would have to be looked at more closely.

For debugging you could build the debug build. It should spit out all necessary debug files (but don't know to what extent this is possible/practical on Linux/bottles).

Otherwise you could provide me with a severaccount as suggested above and I'll have a look at it as soon as I have time. :)

Alfagun74 commented 11 months ago

@yodatak Just mail us the server address and user & password for an admin account to contact@phalco.de

Yelo420 commented 11 months ago

Alternatively you can dm us on Discord

yodatak commented 11 months ago

i cannot compile on linux this app that why i ask thanks for your help !

Alfagun74 commented 11 months ago

we are currently looking into it via your server. we will come back to you asap

Alfagun74 commented 11 months ago

btw @yodatak the app is a .net 6 app which you can compile on linux using: dotnet build gamevault.sln --configuration Release

Alfagun74 commented 11 months ago

@yodatak could you please try the latest phalcode/gamevault-backend:unstable image and tell me if this solves the issue for you?

yodatak commented 11 months ago

Thanks i try this image and i got the same error

image:
  repository: phalcode/gamevault-backend
  pullPolicy: IfNotPresent
  tag: unstable@sha256:a8309a615d3d0c50aed4bfcbaf55c7a786814e931d7989392d66c90634a3aaba
yodatak commented 11 months ago

btw @yodatak the app is a .net 6 app which you can compile on linux using: dotnet build gamevault.sln --configuration Release

I cannot compile on linux sorry for french part ;)

Determining projects to restore... /usr/lib64/dotnet/sdk/6.0.121/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(90,5): error NETSDK1100: vous devez disposer de Windows pour générer des applications de bureau Windows. [/var/home/yodatak/Projets/public/gamevault-app/gamevault/gamevault.csproj]

ÉCHEC de la build.

/usr/lib64/dotnet/sdk/6.0.121/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(90,5): error NETSDK1100: vous devez disposer de Windows pour générer des applications de bureau Windows. [/var/home/yodatak/Projets/public/gamevault-app/gamevault/gamevault.csproj] 0 Avertissement(s) 1 Erreur(s)

I got the same issue even in activating true https://github.com/dotnet/docs/issues/30076 https://github.com/nicko88/HTFanControl/issues/19

Alfagun74 commented 11 months ago

Thank you, we are currently analyzing the issue further, and we can already reproduce it.

Alfagun74 commented 11 months ago

This should be fixed in Backend v6 and Client v1.6. Please also name your files accordingly: https://gamevau.lt/docs/server-docs/structure