Michael Green cebab38dd6 Provide ability to upload save states (#371)
This change provides the ability to upload save states.

When a state is downloaded, the state (savestate.state), screenshot
(screenshot.jpg), and a json file (rominfo.json) describing the save
state are zipped and downloaded.

The json file description is defined as follows:
```json
{
  "Name": "Super Mario Bros. (1985-09-13)(Nintendo)(JP-US).zip",
  "StateDateTime": "2024-06-24T05:34:38",
  "StateName": "",
  "MD5": "7d158dcd242e77ba249ac8342474aa77",
  "SHA1": "3d4b04dc78f9d998f17d9fe9ad982a83b5ed72df",
  "Type": "ROM"
}
```

| Attribute | Value |
| -------- | ------|
| Name | The name of the ROM that the state belongs to. This is merely a
convenience attribute. |
| StateDateTime | The date and time (in UTC) when the state was
initially saved. |
| StateName | The name of the state |
| MD5 | The MD5 hash of the ROM that the state belongs to. |
| SHA1 | The SHA1 hash of the ROM that the state belongs to. |
| Type | Whether the state belongs to a ROM or ROM Group |

If the zip is re-uploaded, the above json file will be used to
automatically match the saved state to the ROM that created it.

If a zip is uploaded without the above three files, the upload will
fail.

If a file is uploaded that is not a zip, it will be stored against the
currently running ROM and a warning will be displayed that Gaseous was
unable to verify that the state belongs to the ROM, and may not function
as expected.

Closes #336
2024-06-24 22:38:54 +10:00
2024-02-07 22:29:05 +11:00
2024-02-07 22:29:05 +11:00
2024-02-02 23:19:39 +11:00
2024-02-02 23:19:39 +11:00
2024-02-02 23:19:39 +11:00
2023-02-15 07:46:05 +11:00
2024-02-08 13:19:16 +11:00
2024-02-07 22:29:05 +11:00

.NET CodeQL Build Release Docker Image

Gaseous Server

This is the server for the Gaseous system. It offers ROM and title management, as well as some basic in browser emulation of those ROMs.

Warning

Versions 1.6.1 and earlier are not suitable for being exposed to the internet, as:

  1. there is no authentication support, meaning anyone could trash your library
  2. the server has not been hardened for exposure to the internet - so there maybe unknown vulnerabilities

If you expose one of these earlier versions of the server to the internet, you do so at your own risk.

Version 1.7.0 and later contain user authentication, and can be exposed to the internet. However, it is recommended to no expose the server to the internet if you're not actively using it remotely, or if you have alternative means to access it remotely like a VPN.

While we do our best to stay on top of server security, if you expose the server to the internet you do so at your own risk.

Screenshots

Library Game Emulator

Requirements

  • MariaDB 11.1.2 (preferred) or MySQL Server 8+
    • These are the database versions Gaseous has been tested and developed against. Your mileage may vary with earlier versions.
    • MariaDB is the preferred database server, while MySQL will continue to be supported for existing users (they should be interchangable).
    • Note that due to the earlier database schema using MySQL specific features, moving to MariaDB from MySQL will require rebuilding your database from scratch. The "Library Scan" background task can be used to re-import all titles.
  • Internet Game Database API Key. See: https://api-docs.igdb.com/#account-creation

If using the provided docker-compose.yml, MariaDB will be installed for you.

Friends of Gaseous

Third Party Projects

The following projects are used by Gaseous

Discord Server

Join our Discord server!

Installation

See https://github.com/gaseous-project/gaseous-server/wiki/Installation for installation instructions.

Adding Content

  1. Import signatures: see https://github.com/gaseous-project/gaseous-server/wiki/Signatures
  2. Add ROMs: see https://github.com/gaseous-project/gaseous-server/wiki/Adding-ROMs
Description
A game ROM manager, with a built in web based emulator using multiple sources to identify and provide metadata
Readme 292 MiB
Languages
C# 49.1%
JavaScript 28.8%
Cython 11.9%
HTML 6.4%
CSS 3.6%
Other 0.2%