Commit Graph
404 Commits
Author SHA1 Message Date
Hornwitser 08e7434d24 Add command to extract play time from save
Add command that extracts play time (and players) from the currently
running save to the recorded instance statistics.  This is useful for
getting correct play time statistics when an existing save game is
imported.
2022-07-13 00:31:02 +02:00
Hornwitser 0245ccd16c Share player stats with master server
Send the per player stats with the player event updates to the master
server and expose it to the Web UI and ctl interfaces.
2022-07-12 23:03:50 +02:00
Hornwitser deb6842a4d Record all players as leaving on server exit
In the case of shutdown the Factorio server will not notify the
currently online players as leaving the game.  Notify the master server
that all remaining online players quit the game in this case.
2022-07-12 23:03:50 +02:00
Hornwitser ac62f66aa1 Move PlayerStats to separate data class 2022-07-12 23:03:50 +02:00
Hornwitser 9a3edc8c11 Fix web build broken by assert and buffer imports
Not sure what made it break, but it seems like it shouldn't have worked
to begin with.
2022-07-08 01:00:54 +02:00
Hornwitser 096f338277 Add live updating of users
Provied a subscription for user updates and send updates whenever the
details of a user account is changed.
2022-07-08 01:00:54 +02:00
Hornwitser db562ce6a0 Provide reason for player leaving
Expose the reason for why a player is leaving a server in playerEvent.
2022-07-08 01:00:54 +02:00
Hornwitser 3cb9843f23 Add player online autosave pool
Add separate autosave pool for autosaves that have had players online
since the previous autosave.
2022-06-30 01:03:29 +02:00
Hornwitser a063cf2db5 Track player stats on instances
Track which players are online and record basic stats for each player on
each instance including when save patching is disabled.
2022-06-29 21:35:56 +02:00
Hornwitser 72357dfd23 Fix wrong action in load scenario error message 2022-06-29 21:25:25 +02:00
Hornwitser 0df6701326 Use consistent path for saves in Instance 2022-06-29 21:25:25 +02:00
Hornwitser f5e558cb2f Sneaky tab removal 2022-06-29 21:25:25 +02:00
Hornwitser ef74436cde Fix jsdoc for #462
Fix references and missing files from the jsdoc output after the
refactor in #462.
2022-06-23 16:57:52 +02:00
Hornwitser 51c025c79b Fix Log out button not logging out 2022-06-23 16:57:52 +02:00
Hornwitser 826d89c7dc Fix race condition on creating instance directory 2022-06-23 00:09:28 +02:00
Hornwitser 393652c1d9 Allow instance names to be any string
Replace bad characters with underscore instead of rejecting bad instance
names.
2022-06-23 00:08:23 +02:00
Hornwitser 246ce73d94 Break commands out of ctl.js 2022-06-22 22:33:54 +02:00
Hornwitser 951bad4134 Refactor slave code
Move classes from slave.js monolit into their own source files.
2022-06-22 22:16:58 +02:00
Hornwitser ae17b00b6f Hide start button based on permissions
Hide the start/stop buttin in instance view if the current used does not
have permission to use it.
2022-06-22 21:26:41 +02:00
Hornwitser 7e9604a254 Fix LogConsole scroll anchor trasmutation
Fix react mutating the scroll anchor element in LogConsole into a log
line and breaking scroll anchoring to the bottom as a result.
2022-06-19 16:38:02 +02:00
Hornwitser 654465e4eb Fix LogConsole using duplicated keys
Fix past lines loaded from the log containing keys that clash with new
items logged.
2022-06-09 00:53:12 +02:00
Hornwitser c5a0c0a873 Migrate to new <Menu> syntax
The use of <Menu.Item> children to <Menu> is deprecated, convert
existing code to use the new items={...} syntax.
2022-06-09 00:52:27 +02:00
Hornwitser 3e836c1dd3 Fix web interface breaking when disabling plugins
Fix incorrect logic to set up plugins in the web interface causing an
emptry plugin to be atempted to be loaded when a plugin was disabled.
2022-06-08 23:26:33 +02:00
Hornwitser ddf15f9b92 Add option to turn on authentication server bans
Factorio 1.1.40 added a feature to use a centralized banlist maintained
by Wube.  For the dedicated server this needs to be turned on with the
command line flag --use-authserver-bans.
2022-06-08 22:43:58 +02:00
Hornwitser 54897c1447 Fix deserializing to a smaller inventory
Void excess slots when deserializing an inventory to a target that has
fewer slots than what was serialized.  This fixs inventory sync failing
when a stored inventory has trash slots in use but the player does not
have the slots unlocked.
2022-06-08 22:26:08 +02:00
Hornwitser 2a221456d9 Fix exported data loading in web interface
Store exported data files with a hash in the filename to allow the new
caching stategy for static files to work with it and provide a manifest
for the web interface to find the exported files with.
2022-06-08 21:01:36 +02:00
Hornwitser 48a57bf16c Use name of the cluster as web title
Set the title attribute of the web interface page to the name of the
cluster.
2022-06-08 21:01:36 +02:00
Hornwitser 8742b4127c Improve pre-loaded feedback of website
Render the web interface as early as possible with a black background
and show a message to indicate whether the interface is actually loading
or if an error occured loading the main bundle.
2022-06-08 21:01:36 +02:00
Hornwitser e32637503d Move all web assets to shared cached space
Put all web assets including plugin assets under a shared static/ route
in the web interface that's declared as immutable and cacheable for 1
year.  This allows all JavaScript bundles to be loaded from disk instead
of having to check with the web server each time and significantly
speeds up the web interface load time.  It also fixes the public path
issue when using the --dev-plugin option behind a proxy.

To prevent collisions and stale data all assets now include a hash in
the filename.  This means the entrypoint is now dynamic and specified in
a manifest.json file created from the web build.  For plugins this means
the filename attribute needs to be removed from webpack.config.js.
2022-06-08 21:01:36 +02:00
Hornwitser 4d5597a1da Use prepare instead of build as script
The prepare script runs before publishing a package, after installation
of a package from source, and when running npm install without
arguments in the repository.  These are the times where a build of the
web interface files are required to make the web interface work and
removes a manual step from using the package(s). The "build" script on
the other hand is never automatically invoked by npm.
2022-06-05 16:13:53 +02:00
Hornwitser 2973485321 Replace npm and lerna with pnpm
Save disk space, time and sanity by replacing npm and lerna with pnpm.
This is more performant and doesn't have developer experience ruining
bugs like npm link removing all previous links before creating the
requested one.
2022-06-05 16:13:53 +02:00
Hornwitser 1e4292876c v2.0.0-alpha.12 2022-04-22 12:36:00 +02:00
Hornwitser 38c249ec70 Implement save transfer
Add ability to move or copy saves between instances.  For instances on
the same slave the saves are transferred with filesystem operations, for
instances on two different slaves the proxy stream interface is used to
send the save via the master server.
2022-03-28 20:42:08 +02:00
Hornwitser 2e1c1fd3c8 Remove duplicated instance check
Deduplicate instance existence check for requests in master.
2022-03-28 20:42:08 +02:00
Hornwitser 4edc7a2949 Implement rename and copy save
Add ability to rename and copy existing saves on an instance.
2022-03-27 19:59:29 +02:00
Hornwitser 9b5c6f8554 Remove duplicated request checks
Move duplicated checking of save filenames and instance existing from
requests into separate functions.
2022-03-27 18:50:15 +02:00
Hornwitser 0de964ec02 Reorganise instance save commands
Move create, list, upload and dalete save management commands to its own
'instance save' namespace in the command line interface.
2022-03-27 15:50:42 +02:00
Hornwitser 7db091d427 Simplify wording of save permissions
Use shorter and more consise titles for the save management related
permissions.
2022-03-27 15:39:40 +02:00
Hornwitser 854d2b3c79 Suggested grammar fix 2022-03-26 20:27:59 +01:00
Hornwitser 946847c95d Send save list update after manual save
Trigger a save list update in the event an admin manually saves the game
with the /server-save command.
2022-03-25 23:15:07 +01:00
Hornwitser ce95f868fd Fix curently typo 2022-03-25 23:15:07 +01:00
Hornwitser e5a63a3508 Add start-stop button to instance list 2022-03-25 23:15:07 +01:00
Hornwitser 1e4d709a06 Implement kill instance
Add ability to kill running instances in case it is desirable to stop
the server without saving over the current save file.
2022-03-25 20:52:31 +01:00
Hornwitser a93f048814 Add support for sidebar groups
Allow sidebar entries to be grouped together by specifiying a name under
which they will be grouped.  To avoid confusion groups are rendered at
the bottom of the list.
2022-02-10 14:51:51 +01:00
Hornwitser 5319ff3907 Add hook to add extra content to Web UI pages
Allow plugins to extend Web UI pages provided by Clusterio by
adding components in the componentExtra property of the plugin.
2022-02-10 14:51:51 +01:00
Hornwitser 68b8ac6b8c Add onMasterConfigFieldChanged hook
Add hook for master plugin code to react to the master config changing.
2022-02-10 10:29:47 +01:00
Hornwitser dec5467538 Use anonymous master metrics
Convert the master metrics to void instead of storing them in a variable
as they are completely self contained, and this makes it more clear that
there are no use of references to the metrics.
2022-01-05 19:45:24 +01:00
Hornwitser 61cd5bd76c Fix issues detected by lgtm.com 2022-01-03 19:45:46 +01:00
Hornwitser 1ff1e3e5f8 v2.0.0-alpha.11 2021-12-19 15:57:08 +01:00
Hornwitser decee0ecc2 Merge pull request #445 from Hornwitser/log-fix
Fix logs
2021-12-19 15:14:52 +01:00