Commit Graph
1914 Commits
Author SHA1 Message Date
Hornwitser ddc548f590 Set default values for mod settings on export
Add missing mod settings set to their default values to a mod pack when
performing a data export based on the settings prototypes that were
extracted from the game. This mirrors the behaviour of Factorio when new
setting prototypes are added by a mod.
2023-02-02 00:28:58 +01:00
Hornwitser 39ed098a64 Fix error messages changing with Node.js version
Updates to Node.js error reporting have caused tests to fail due to them
being hardcoded to expect a certain format that has since changed.  Fix
by making Node.js create the error message for us.
2023-02-02 00:28:58 +01:00
Hornwitser 13e12f7335 Tie data exports to mod packs
Store the export manifest in ModPack to allow mulitple mod packs to have
different data exported. This is necessary as the export contains the
settings prototypes needed to create a proper UI for mod settings.

For now the useLocale and useItemMetadata interfaces uses the manifest
for a default mod pack set in the master config.
2023-02-02 00:28:58 +01:00
Hornwitser 7c6aaeb05d Export settings and all prototypes
Add settings and all prototypes to the export of data done.  Settings
are needed for a settings GUI to function, while prototype data would be
useful to display any sort of information about things from the game.
2023-02-01 15:29:23 +01:00
Hornwitser fb75e47eda Mark missing or missmatched checksum for mods in mod packs
Mark mods in the UI and the mod-pack show ctl command that are missing
with a question mark and mark mods with a missmatched checksum with an
exclamation mark.
2022-11-10 00:28:50 +01:00
Hornwitser e6add2f7e6 Fix handling of numeric settings in ModPackViewPage
Due to a mistake in the logic numeric settings would end up getting
converted to string settings when edited.
2022-11-10 00:28:50 +01:00
Hornwitser 32cf9321cc Make sure checksum matches in ModsTable
Validate sha1 sum matches for a mod used in ModsTable if it is present.
This prevents showing details for a zip file where the version matches
but the cheksum does not.
2022-11-10 00:28:50 +01:00
Hornwitser dfadc62720 Prety print database/mod-packs.json 2022-11-10 00:28:50 +01:00
Hornwitser fb4ffaffed Implement mod pack loading for shared mods
Wipe and reconstruct the instances' mods/ folder using the configured
ModPack for the case were the mods folder is shared with the master
server.  This assumes the master server will check the mod checksums
before sending the start request.
2022-11-10 00:28:50 +01:00
Hornwitser 0ebb2f5858 Add import and export mod-pack commands 2022-11-10 00:28:50 +01:00
Hornwitser 2ae8270a1d Don't hypenate mod-pack 2022-10-15 18:01:54 +02:00
Hornwitser 20e620993b Use Factorio's version component names
Minor nitpick: The coponent names of the Factorio version is called
main, major, minor.  Change integerFactorioVersion to match.
2022-10-15 18:01:54 +02:00
Hornwitser 660d0f08a1 Fully specify mod pack Factorio version
Remove support for major only versions of Factorio being specified in
mod packs.
2022-10-15 18:01:54 +02:00
Hornwitser 53a5d7ea6f Add ModPack.toModSettingsDat
Add utility function to convert the settings representation of a ModPack
into the mod-settings.dat format which Factorio reads.
2022-10-15 18:01:54 +02:00
Hornwitser fafdac21fb Follow mod pack string proposal
Make all properties on the mod pack object except sha1 required and add
the base mod if it does not exist in order to align the JSON
representation with the proposed Mod Pack String format I published on
the Factorio Forums (https://forums.factorio.com/103578)
2022-10-15 18:01:54 +02:00
Hornwitser f863aee3c2 Add enabled field for mods in mod packs
Make it possible to disable built in mods like base by providing an
enabled field that can be set to false in mod packs.
2022-10-15 18:01:54 +02:00
Hornwitser 2384c48749 Document and expose data members under lib/data
Make members of lib/data exposed under lib/data instead of
lib/data/<member>.
2022-09-26 16:54:19 +02:00
Hornwitser 7072b94355 Derive mod filename from name and version
Enforce the filename of uploaded mods match {name}_{version}.zip with
name and version taken from the zip file's info.json entry.  This allows
it to be used as a unique key for the mod and solves part of the issues
with mods having different number of leading zeros in their version.
2022-09-26 00:34:25 +02:00
Hornwitser 7d34c60dd1 Break out version to integer functions
Move the multiple implementation of version to integers calculation to
dedicated functions in one place.
2022-09-25 23:33:22 +02:00
Hornwitser af79e2abbd Remove includeHash option to toModPackString
Since the Mod Portal provides SHA1 hashes it makes sense to always
include the hashes with mod pack strings if they are available.
2022-09-24 21:49:41 +02:00
Hornwitser 9b4ca86650 Rename mod hash field to sha1
The Factorio Mod Portal uses and provides SHA1 hashes of mods, so it
makes sense to align the ModPack and ModInfo structures to sha1 by
renaming the genericly named hash property to sha1.
2022-09-24 21:43:07 +02:00
Hornwitser bddde30be4 Add web UI for mod packs
Implement create, import, show, export, update, and delete UI for mod
packs on the master server.
2022-09-24 21:17:18 +02:00
Hornwitser 3eb63db313 Add search mods request
Add paged search mods request suitable for showing a real time list of
results for a user provided search expression.
2022-09-24 21:10:38 +02:00
Hornwitser 6039715a53 Wrap section header extra content under the header
Make the extra content for section headers flow under the heading when
there is not enough space to show both the heading and the extra content
in a single line.
2022-09-24 00:49:56 +02:00
Hornwitser 85cec761e1 Use overflow clip in site layout
Use overflow clip instead of hidden in the page area of the site layout
to avoid creating a formatting context that would make sticky not work
as expected inside the page area.
2022-09-24 00:46:38 +02:00
Hornwitser 476f460f75 Add react wrapper for navigator.clipboard
Add a thin wrapper of the navigator.clipboard interface suitable for
use with React.
2022-09-24 00:44:13 +02:00
Hornwitser 40a0b929d0 Break mod details out into a component 2022-09-24 00:39:16 +02:00
Hornwitser 82c6448149 Use no-break space in formatBytes
Prevent tables cells containing byte sizes from having a line break
inserted between the number and the byte unit when they get squished by
using a no-break space instead of a regular space.
2022-09-24 00:30:18 +02:00
Hornwitser 9fb3d6d8db Implement mod pack storage
Add ModPack data type with corresponding storage on the master, messages
to create, update and delete them, as well as commands to invoke them.
The ModPack data type contains a list of mods with versions and optional
sha1 hashes, and mod settings to be used.
2022-09-16 02:44:06 +02:00
Hornwitser dfcbc559b8 Add parseSearchString to helpers
Implement parsing of a search string into terms which can be used to
match results with them.
2022-09-16 02:44:06 +02:00
Hornwitser 3b57c1e0ae Add shared mods management
Add the ability to manage a set of mods to be shared by the master
server to the rest of the cluster.  This implements storage, uploads,
downloads, deletetion, and listing details of mods but does not actually
do anything with the stored mods.
2022-09-13 19:15:46 +02:00
Hornwitser 2ab915cc00 Move formatBytes to libHelpers 2022-08-24 15:42:26 +02:00
Hornwitser 921ebad8fb Allow importing libHash to succeed in browser
Alsthough this does not make libHash work in the browser it allows other
modules to require libHash while still being exported to the browser.
2022-08-24 15:42:26 +02:00
Hornwitser a40fefc8d7 Pull findRoot out into libZipOps
The findRoot function useful for managing mod zip files on the master.
2022-08-24 15:42:26 +02:00
Hornwitser 9a1c7b2ecd Bad Windows names also apply with any extension
A file name con.zip is also treated in the same way as the special CON
redirection and may not be used as a normal filesystem path in Windows.
This includes any extension, even with multiple dots.  Fix checkFilename
and cleaneFilename not handling these cases.
2022-08-24 15:42:26 +02:00
Hornwitser 14934a0d3a Move checkFilename and cleanFilename to libFileOps
These are also useful for managing mod zip files on the master.
2022-08-24 15:42:26 +02:00
Arvids Godjuks e82914c4e1 Merge pull request #473 from rstrom1763/master
Corrected assorted spelling and grammar in README
2022-07-30 23:38:28 +03:00
Ryan 190db2f98b Corrected assorted spelling and grammar in README
Corrected assorted spelling and grammar in the README.md file.
2022-07-30 15:02:26 -05:00
Hornwitser 5570d2da38 Update instructions for publishing
Manual workflow for now.
2022-07-20 15:27:37 +02:00
Hornwitser 949ba708ea Hotfix installer wiping package.json
Fix the installer wiping the package.json file due to a call to
outputFile that needed to target the original file being incorrectly
changed to safeOutputFile.
2022-07-20 14:40:41 +02:00
Hornwitser bcb2365c9a 2.0.0-alpha.13 v2.0.0-alpha.13 2022-07-20 13:30:35 +02:00
Hornwitser 259d18eb30 Fix Web UI not displaying date for last seen 2022-07-20 13:30:35 +02:00
Hornwitser 04852196ad Rename play time to online time
Be a bit more accurate in the online time stat name and call it for what
it is.  It counts time spend online on the server, not necessarily
time spent playing.
2022-07-20 13:18:47 +02:00
Hornwitser fc1daa7e71 Bump path traversal test timeout (#472)
Double timeout on these two tests as they sometimes time out on GitHub
Actions.
2022-07-19 21:24:44 +02:00
Hornwitser e234d3db36 Fix disconnect_reason missing before Factorio 1.1.3 (#471)
Provide "quit" as the reason for disconnecting in versions of Factorio
before 1.1.3 which added reason to the on_player_left_game event.
2022-07-19 21:24:26 +02:00
Hornwitser 7b8127fef8 Refactor inventory_sync serialisation (#470)
Fix broken support for retrying uploads and background downloads by
making crafting queue serialisation non-destructive and only performing
the serialisation and deserialisation while the player is online.

This removes the /save-crafts and /restore-crafts commands because the
existing implementation would voids the non-saved crafting queue items
if /save-crafts is performed and then new items are added to the
crafting queue before switching server.

Fixes #419.
2022-07-19 21:24:12 +02:00
Hornwitser db84b5a6ce Shut up Dependabot (#469)
If only the bot was clever enough to see that node-forge is only used
for a test that has no user input it might have had the foresight to
realize that crying wolf about completely irrelevant security issues
will only lead to legitimate issues being ignored in the future. But
alas, the AI overlords are not taking over any time soon.
2022-07-19 21:23:33 +02:00
Hornwitser c79ced28dd Merge pull request #468 from Hornwitser/installer-fixes
Installer fixes
2022-07-19 21:23:09 +02:00
Hornwitser 2408dc8985 Remove obsolete Factorio download instructions
On Linux the installer offers to correctly download and install the
latest version of Factorio.  Remove no longer needed instructions for
how to do it incorrectly.
2022-07-18 20:10:08 +02:00
Hornwitser 2953eb17d6 Refuse installing Clusterio as root
I have seen multiple people have installed Clusterio as the root account
and then run it as root when tasked with setting up Clusterio on Linux.
Make this mistake harder to do by refusing to install as root by
default.
2022-07-18 20:05:37 +02:00