Commit Graph

36174 Commits

Author SHA1 Message Date
Nico Lehmann f0170fc8ce FIx "protocol on port 9418 is no longer supported"
I was getting the following error when building:

```
fatal: remote error:
  The unauthenticated git protocol on port 9418 is no longer supported.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.
```

Changing the protocol to `https` solves the problem for me.
2022-03-28 20:11:53 -07:00
Arthur Eubanks b88e81a8f5 Don't re-sort sections when sorting by length
Re-sorting causes oddities like
https://github.com/Simply-Love/Simply-Love-SM5/issues/362
2022-03-28 20:11:53 -07:00
Charles Magahern ab991981fd Move resource mounting to the right place
Fix from Club Fantastic, but adapted for RageFile changes.
2022-03-20 07:46:03 -07:00
Martin Natano 024f3ac96a Don't crash when reloading songs with players joined
This allows to call ScreenReloadSongs from SSM.
2022-03-19 08:18:58 -07:00
Martin Natano c99477f046 Only make parts of the initial filesystem writable
This prevents overwriting the program binary or other sentitive paths
like /Data/Static.ini from Lua.
2022-03-13 12:46:14 -07:00
Martin Natano 1036d20e11 Implement FILEMAN:Copy(string fromPath, string toPath)
Copies a file from `fromPath` to `toPath`. Returns `true` if the file
was copied successfully.
2022-03-13 12:37:11 -07:00
Martin Natano 67d1c78450 Implement FILEMAN:Unzip(string zipPath, string targetPath, int strip)
Unzip zip file at `zipPath` to `targetPath`.
`strip` is optional and defaults to `0`. If set to a number larger than
`0`, that many components are removed from the paths of the extracted
files. e.g. `a/b/c` is replaced with `b/c` when stripping one component
or just `c` when stripping two.
Returns whether all files were extracted successfully.
2022-03-13 11:46:28 -07:00
Martin Natano ca86f80743 Add support for onProgress and downloadFile to NETWORK:HttpRequest() 2022-03-13 11:31:49 -07:00
Martin Natano 394bc93915 Add support for streaming transfers
This change adds onChunkCallback to the request. If defined it will be
called repeatedly with the incoming data. This allows to process data on
the go or write it to disk instead of accumulating the data in memory.

Submitted upstream:
https://github.com/machinezone/IXWebSocket/pull/353
2022-03-12 14:18:48 -08:00
Martin Natano bb8fc0f4c2 Change access order for RageFS
Packages > Additional folders > User FS > Initial FS
2022-03-12 14:14:59 -08:00
teejusb 6defe32d05 Merge pull request #21 from natano/netman-download-pr3
[Downloads 3/8] Mount directories read-only where possible
2022-03-12 14:12:31 -08:00
Martin Natano 168877f6a8 Mount directories read-only where possible 2022-03-12 22:30:54 +01:00
teejusb 0aa42742e4 Merge pull request #20 from natano/netman-download-pr2
[Downloads 2/8] Allow to mark preferences as immutable or compat
2022-03-12 13:23:25 -08:00
Martin Natano d8b6d36a78 Allow to mark preferences as immutable or deprecated
- Deprecated: The option is read from the settings, but not written back
  when saving. This can be used for migrating options to a new name or
  format. (Not used yet.)
- Immutable: The option can not be changed from Lua. Used for
  security-relevant options that should not be changable by the theme or
  mod charts. Currently that's networking and some file system access
  options.
2022-03-12 22:19:19 +01:00
teejusb eb0ab83d89 Merge pull request #19 from natano/netman-download-pr1
[Downloads 1/8] Merge /AdditionalSongs into /Songs, and /AdditionalCourses into /Courses
2022-03-12 12:15:47 -08:00
teejusb 0dda63c7ee Merge pull request #28 from natano/sort-defaults
Tweak sort defaults to make more sense
2022-03-12 11:41:30 -08:00
teejusb a6aac477b0 Merge pull request #27 from natano/fix-sort-length
Fix sort by length
2022-03-12 11:37:37 -08:00
Martin Natano 7bd7a9b41e Tweak sort defaults to make more sense
- SortBPMDivision: Reduce from 20 to 10 to match up with ECS "tiers".
- SortLengthDivision: Increase from 5 seconds to 1 minute. Divisions of
  5 seconds don't seem very useful.
2022-03-12 20:32:21 +01:00
Martin Natano acb3ad727a Fix sort by length
The sort order is not remembered between songs when sorting by length.
This can be fixed by recognizing SORT_LENGTH as a sort order that can be
used for songs.

Reported by @aeubanks in https://github.com/Simply-Love/Simply-Love-SM5/issues/363
2022-03-12 19:13:11 +01:00
Martin Natano 0861ed45c7 Merge /AdditionalSongs into /Songs, and /AdditionalCourses into /Courses
Includes a backwards-compatibility mechanism to adapt paths when loading
Stats.xml.
2022-03-11 22:35:31 +01:00
teejusb 92ce8c6801 Merge pull request #18 from natano/remove-package-lib
Remove unsafe package library
2022-03-05 12:17:52 -08:00
Martin Natano afb3836367 Remove unsafe package library
package.loadlib() can be used to load a dynamic C library allowing
arbitrary code execution in mod charts and themes.

So far I haven't found any theme that depends on the library, so I think
removing it shouldn't break anything.
2022-03-04 21:27:55 +01:00
teejusb 568f21b6b3 Merge pull request #17 from natano/itgm-update-jsoncpp
Update jsoncpp from version 0.5.0 to 1.9.5
2022-02-19 19:36:19 -08:00
teejusb ea7d97719d Merge pull request #16 from natano/fix-leak
Prevent access to the root file system via the memorycard mount points
2022-02-19 19:35:16 -08:00
Martin Natano e1b5664f21 Update jsoncpp from version 0.5.0 to 1.9.5
Aside from including a ton of bug fixes, this should fix an issue in the
CI pipeline when building with system libraries that was caused by a
minor incompatibility between 0.5.0 and less ancient versions.

Also, switch to the amalgamated source, because it makes it easier to
keep it up to date.
https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated-(Possibly-outdated)
2022-02-19 14:10:55 +01:00
Martin Natano 3216fdec1e Prevent access to the root file system via the memorycard mount points
Before any memorycard is used the mount point exposes "/". Let's
introduce a special value "(empty)" to allow a DIR mount to point to
nothing.
2022-02-19 11:20:01 +01:00
teejusb 5322843ace Merge pull request #15 from natano/remove-rootfs
Remove access to the root FS from lua
2022-02-06 10:24:35 -08:00
Martin Natano f79830e7af Fix typo in IniFile.WriteFile() error handling 2022-02-06 15:31:31 +01:00
Martin Natano 7d8ff85018 Remove access to the root FS from lua
On linux / is mounted to /rootfs in RageFile, which allows access to the
_whole_ filesystem from lua. This means themes and mod files can
re-write user data and extract files via USB profiles.

/rootfs was only added for internal use by the alsa, oss and memory card
drivers, so it can be easily replaced with direct fstream file access.
2022-02-06 15:31:31 +01:00
teejusb 2005713a32 Merge pull request #14 from natano/remove-crypto
Remove unused crypto & move mbedtls to "External Libraries"
2022-01-23 08:38:41 -08:00
teejusb 6536db2106 Merge pull request #13 from natano/update-lua-5.1.5
Update lua from 5.1.1 to 5.1.5
2022-01-23 08:38:20 -08:00
Martin Natano b46ba8f66c Move mbedtls to "External Libraries" in cmake 2022-01-23 15:42:25 +01:00
Martin Natano c4851955e8 Remove unused extern/crypto 2022-01-23 15:31:27 +01:00
Martin Natano f49cb9eff5 Update lua from 5.1.1 to 5.1.5
This keeps all the SM patches intact, but applies the 5.1.5 fixes on
top. All newlines normalized to make diffing with upstream easier.

https://www.lua.org/bugs.html#5.1.2
https://www.lua.org/bugs.html#5.1.3
https://www.lua.org/bugs.html#5.1.4
https://www.lua.org/bugs.html#5.1.5
2022-01-23 12:19:16 +01:00
teejusb 85900e471a Merge pull request #12 from natano/update-zlib
Update zlib from version 1.2.5 to 1.2.11
2022-01-22 12:36:22 -08:00
Martin Natano 69ca42e18c Update zlib from version 1.2.5 to 1.2.11 2022-01-22 20:17:48 +01:00
teejusb c7d7ab9ae0 Merge branch 'stepmania:5_1-new' into beta 2022-01-21 00:11:53 -08:00
teejusb 2c587c18a0 Merge pull request #11 from natano/win32-mbedtls
Add mbedtls and use it on windows
2022-01-18 13:11:02 -08:00
Martin Natano 6de676984d Add mbedtls and use it on windows 2022-01-18 20:50:15 +01:00
teejusb 7b1db8b2fb Define ssize_t to be the same width of size_t
The size of size_t is defined by the architecture (32bit or 64bit). Since ssize_t is not part of the standard, unlike size_t, it might not be defined but it should always be the same size as size_t.
2022-01-17 22:31:44 -08:00
teejusb c51e0203b9 Merge pull request #5 from natano/netman
Implement NetworkManager
2022-01-16 09:47:46 -08:00
Martin Natano 3fab481611 fixup collect 2022-01-15 22:56:22 +01:00
Martin Natano bb826dc0b2 Allow cancellation of HTTP requests
`NETWORK::HttpRequest()` now returns a HttpRequestFuture with a
`Cancel()` method.
2022-01-15 22:56:22 +01:00
Martin Natano 134fa9a3d9 IXWebSocket: Allow to cancel asynchronous HTTP requests
Usage:

    auto args = this->httpClient.createRequest(url, method);
    httpClient.performRequest(args, ...);
    [...]
    // Oops, we don't actually want to complete the request!
    args->cancel = true;

Submitted upstream:
https://github.com/machinezone/IXWebSocket/pull/332
2022-01-15 22:56:22 +01:00
Martin Natano bc4a275510 Add parameter encoding helpers to NETWORK
This adds two more methods:
- `NETWORK:UrlEncode()`: Encode a single string value.
- `NETWORK:EncodeQueryParameters()`: Encode a table as query string.
2022-01-15 22:56:08 +01:00
Martin Natano dc49af3c59 Implement NetworkManager
For now there are two methods:

- `NETWORK:IsUrlAllowed()`: Check whether access to a certain URL is allowed.
- `NETWORK:HttpRequest()`: Perform an HTTP request.

By default access to the network is disabled for all target hosts. It
can be enabled by setting `HttpEnable=1` in the preferences. Individual
hosts have to be added to `HttpAllowHosts` as a comma separated list to
allow access.

See included docs for more details on usage.
2022-01-15 22:56:08 +01:00
teejusb ddfc49e0b5 Merge pull request #10 from teejusb/tns
Add support for disabling timing windows on a per-player basis
2022-01-05 18:21:57 -08:00
teejusb a48a5b73ad Remove returned timing window table 2022-01-05 18:21:28 -08:00
teejusb 99ee1f2b84 Use bitset instead of map and adjust files accordingly. 2021-12-21 23:44:37 -08:00
Crystal Squirrel 21bb1dbdd3 Merge pull request #2083 from natano/unbind-hyphen
Change the default binding for P2/back from hyphen to backslash
2021-12-16 11:31:20 +00:00