Commit Graph
2475 Commits
Author SHA1 Message Date
Hornwitser 6f85ec9dd6 Log files written to aid debugging
Log to the verbose level when a datastore file read or written to in
order to make it easier to diagnose whether the files are written or
not.
2024-10-28 20:07:34 +01:00
Hornwitser 34da073800 Fix setting instance config fields not being saved
If only the config of an instance is updated the dirty flag of the
instance is not set, which results in changes being discarded when the
controller shuts down afterwards.

Fix by always triggering the update logic when an instance field is
changed.
2024-10-28 19:30:03 +01:00
Cooldude2606 300db5cbfd Change display title for controller.external_address (#674)
* Rename controller.external_address

* Revert and correct title to avoid breaking change

* Update change log
2024-10-28 17:53:37 +00:00
Cooldude2606 c49bc07e15 Add hidden and readonly config properties (#665) 2024-10-27 23:02:45 +00:00
Cooldude2606 c31671d1e6 Added 2.0 zip file name to version matcher (#671)
* Added 2.0 zip file name to version matcher

Fixes: Install problem ? #668

* Add changelog entry for 671.
2024-10-27 22:53:34 +00:00
Cooldude2606 9d18d18603 Update CI to support testing of multiple factorio versions (#672)
We have plans to support the latest version and one minor previous. 2.0 will be added to CI once enough changes have been made to support it.
2024-10-27 22:24:15 +00:00
Cooldude2606 8a47fd8414 Update tests 2024-09-21 18:09:29 +01:00
Cooldude2606 49d584394d Add security logic to readonly and object support 2024-09-21 17:41:46 +01:00
Cooldude2606 e3eb266704 Add hidden and readonly config property 2024-09-21 01:52:01 +01:00
Cooldude2606 3e6806ff0e Merge pull request #664 from Cooldude2606/feature/role-drop-down
Add InputRole as a drop down selector
2024-09-21 01:22:52 +01:00
Cooldude2606 76349fa780 Merge branch 'master' into feature/role-drop-down 2024-09-21 01:06:07 +01:00
Cooldude2606 d4b0e658c3 Change log updates 2024-09-21 01:03:51 +01:00
Cooldude2606 549ec3d1e7 Add InputRole as a drop down selector 2024-09-21 01:01:36 +01:00
Hornwitser d5f3ac0f4c Merge pull request #663 from Hornwitser/config-credentials
Implement shared Factorio credentials
2024-09-19 00:42:52 +02:00
Hornwitser a09a564358 Log where Factorio credentials taken from
Provide ease of diagnosing credential issues by accurately logging if
the credentials were sourced from the instance config, the host config,
the controller config, or if no credentials were found.
2024-09-18 23:41:45 +02:00
Hornwitser f873f4b369 Add autocomplete attribute to credential fields
Prevent browsers from automatically autofilling the password entry box
for the Factorio credentials by setting the autocomplete property to
new-password on the password input.
2024-09-18 23:10:31 +02:00
Hornwitser 44e5847a1d Implement shared Factorio credentials
Add config entries to controller and host for the Factorio username and
token to use when talking to the Factorio APIs.  If set an username and
token is not set in factorio.settings then these settings are used,
making it easy to configure one set of credentials for a cluster/host.

For running more public provide your own hardware clusters, there's an
option to disable controller sharing the credential with the hosts so
that each host have to set their own credentials.
2024-09-16 23:23:21 +02:00
Hornwitser eedf5b8f67 Credential option for config entries
Implement a credential option to config entries which is a list of
locations the config entry can be read from.  When specified and the
option is a string field this gets rendered as a password field in the
config UI.  If the credential is not readable from control the value of
the fields is cleared when the UI is refreshed.
2024-09-16 23:23:21 +02:00
Cooldude2606 77fea7e295 Fix unrelibable datastore tests (#662)
* Use incrementDateMs

* Change wait time to 15ms

* Fix loop condition
2024-09-14 17:20:52 +01:00
Hornwitser a1c7173dd2 Merge pull request #661 from Hornwitser/windows-rework
Rework Factorio server stop logic
2024-09-14 18:15:19 +02:00
Cooldude2606 dfc406d025 Host shutdown on duplicate connection (#647)
* Update no-shadow lint rule for enums

https://typescript-eslint.io/rules/no-shadow/

* Add websocket close codes enum

* Pass close code and reason to event handlers

* Shutdown host on duplicate connection

* Add connection refusal

* Fix lib/link tests

* Response to comments

* Additional Tests

* Removed missed codes in close event
2024-09-14 16:39:59 +01:00
Hornwitser 10a857c4ad Gracefully handle RCON connection dropping
Handle the edge cases of RCON authentication failing and RCON connection
failing during startup so that server stop still works in these cases.
2024-09-14 16:09:17 +02:00
Hornwitser e4aeafaf14 Set a map limit to speed up integration test 2024-09-14 15:05:13 +02:00
Hornwitser a1e7b24298 Fix lingering killed server flag
Fix killing the Factorio server causing the next run of it to report a
different error when it's killed by an external factor than what's
expected.
2024-09-14 15:05:13 +02:00
Hornwitser 7ff06f2b96 Rewrite Factorio server shutdown logic
Rewrite shutdown logic for Factorio servers to send a /quit command via
RCON for both Linux and Windows when stopping a server to avoid having
two confusingly intermixed code paths for Windows and Unix systems.
This makes shutdown on Windows tell clients the server shut down instead
of abruptly stoping to respond.
2024-09-14 15:05:13 +02:00
Hornwitser 36fc2ac1db Support nested factorio dirs in server test
Source the factorio directory from the host config as with other tests
and handle it pointing to a folder of Factorio installations.
2024-09-14 15:05:13 +02:00
Hornwitser 64cc9c2b64 Use factorioDir for alt-host config
Source the factorio installation from the host config for the alt host
test like with other tests.
2024-09-14 14:58:55 +02:00
Hornwitser c0e631e251 Fix tables sorting being broken
Newer versions of Ant Design requires either dataIndex or key to be
defined on columns for sorting of the tables to work.  Add missing key
entries on columns.
2024-09-12 22:32:42 +02:00
Hornwitser 8e21290b22 Enable skipped tests on Windows
Use the stop host command to stop alt-host so that the tests that depend
on it can also be run on Windows.
2024-09-12 15:26:12 +02:00
Hornwitser a05aef260f Allow iterating through datastores like a Map
Support the for (const [k, v] of datastore) syntax which is commonly
used with maps by adding a Symbol.iterator function returning the
appropriate iterator.
2024-09-04 13:43:56 +02:00
Hornwitser 7547a48fd6 Fix controller not accepting old hosts.json format
Migrate the content of the hosts.json file before attempting to loading
it into the new datastore format.
2024-09-04 13:40:15 +02:00
Arvids Godjuks 33c9542524 Merge pull request #660 from clusterio/bugfix/special-case-base-mod
Fix built-in mods showing up as missing in web UI
2024-09-04 14:36:29 +03:00
Hornwitser 95396ff1c3 Fix this is not a constructor error on startup
When passing methods around they lose their binding to this, which means
the fromJSON methods no longer has this be their class.  Fix by binding
the methods to the class they belong to before passing them on to the
datastore.
2024-09-04 13:32:38 +02:00
Arvids Godjuks 59091d74f5 Fix built-in mods showing up as missing in web ui
Added "builtInMods" array that contains a list of built-in mod names that we check against to not show an error and remove ability to delete those mods from mod packs

Fixes #581
2024-09-04 14:14:55 +03:00
Hornwitser 6226a45d0b Fix safeOutputFile writing to wrong directory (#659)
When renaming a file over another file the operation is only atomic if
both the source file and the target file is in the same directory.  Fix
safeOutputFile writing the temporary file to a different directory than
the target file due to the path separator not being included when
creating the temporary file path.
2024-09-04 00:14:47 +02:00
Hornwitser 84958e3f9d Merge pull request #629 from Cooldude2606/feature/datastore
Impliment datastores to reduce boilerplate
2024-09-04 00:14:16 +02:00
Hornwitser a2ea2f2604 Merge branch 'master' into feature/datastore 2024-09-04 00:08:52 +02:00
Hornwitser 5d97e8e816 Source factorio dir from config-host.json in tests
If a factorio dir is configured in config-host.json then use that in the
tests.  This removes the requirement of having a factorio installation
in ./factorio or linking to one there when running the tests.
2024-09-03 21:58:45 +02:00
Hornwitser f3150a9261 Add tests for Address.addressedTo
Make sure the confusing logic in addressedTo is working correctly by
adding tests for it.
2024-09-03 21:58:45 +02:00
Hornwitser 4068129124 Remove useless div on drop zone
This would render on top of modals and doesn't appear to be necessary.
2024-09-03 21:58:45 +02:00
Hornwitser a883e692e4 Add changelog for #619 2024-09-03 21:58:45 +02:00
Hornwitser 5a73a73c36 Fix installer setting bad controller_url
The host.controller_url config is required to end with a / for the url
joining logic to work.  Fix code added #619 setting this to a value not
ending with a /.
2024-09-03 21:58:45 +02:00
Hornwitser a1856e6edf Merge pull request #573 from CCpersonguy/feature/instance-version-2
Display Instance's Factorio version in the web UI
2024-09-03 21:57:42 +02:00
Arvids Godjuks b2f0000a64 Update CHANGELOG.md
Fixed extra new line in changelog
2024-09-03 14:58:38 +03:00
Cooldude2606 8054bd66d2 Fix instance subscriptions (#655)
Remove some assumptions that prevent subscription listeners from working on an
instance.  This means allowing the host to forward the event from the instance
to the controller; correctly storing subscription listeners by address rather
than by connection; and a bunch of network and event stuff to correctly clean up
a listener.

Remove the assumption that all subscriptions events contains the updates
property.  This meant fixing inconsistent types; always checking if the property
existed; fixing lots of the tests that made incorrect assumptions.

Minior fixes:
- Fix double firing of listener callbacks on first connection.
- Fix synced being set to true too early on first connection.
- Fix edge case interaction between last response and last snapshot for values
  with updated set as 0.

Also change the the output made during the start of tests to indicate something
is happening when start up is slow and allow for silent testing to reduce the
amount of text output to the console.
2024-09-03 12:31:32 +02:00
Arvids Godjuks 0c63852a2c Merge branch 'master' into feature/instance-version-2 2024-09-03 02:09:28 +03:00
Hornwitser 47896247fe Add option to set path to server executable (#657)
Allow overriding the logic selecting the path to the Factorio
executable.  This is mainly useful when working with development
versions of the game.
2024-09-03 01:04:50 +02:00
Arvids Godjuks 1687f2f896 Merge pull request #654 from Cooldude2606/feature/plugin-mono-repos
Include mono repo plugins in build
2024-09-03 02:01:04 +03:00
Arvids Godjuks 7e5608e2d8 Merge pull request #656 from clusterio/bugfix/numeric-user-name-as-string
Fix bootstrap command missing type declaration for admin name
2024-09-03 01:31:57 +03:00
Arvids Godjuks 55fcd90ed2 Fix bootstrap command missing type declaration for admin name
Lack of typing was resulting in admin name being serialized to storage as a number and breaking websocket communications protocol due to type mismatch: expected string, got number.

Fixes #536
2024-09-03 01:24:24 +03:00