Commit Graph
970 Commits
Author SHA1 Message Date
Hornwitser 4eda983cf4 Port filter out lower levels when syncing research
Fix the next level of an infinite research getting updated with the
progress of the previous level from other nodes in the cluster by
filtering out infinite researches with a lower level than the local
level.

This is a port of 075d54f.
2019-10-12 22:45:43 +02:00
Hornwitser 7f82680511 Port set progress when completing infinite researches
Set the progress for the next level of an infinite research when
unlocking it via a script.  This is necessary when the research is
actively being researched  as Factorio will carry over the progress for
the current level into the next one when set via a script.

It's possible for the new progress to be non-zero if the next level was
on the research queue.

This is a port of 62f3a99.
2019-10-12 22:45:07 +02:00
Hornwitser 9098b3cf19 Port rename research to tech
Use tech as the loop variable for researches as this is consistent with
the rest of the researchSync module.

This is a port of 3b1ed1a
2019-10-12 22:44:13 +02:00
Hornwitser 183902ced3 Port fix incorrect property checks in researchSync
Fix naive checks for properties being set of the form obj[key] into the
proper form Object.hasOwnProperty.call(obj, key).  The reason for this
is that if the key has a value of a built-in property like 'constructor'
then a check of the form obj[key] will always return true even if that
property hasn't been set on the object.

This is a port of 6a6274e.
2019-10-12 22:43:27 +02:00
Arvids Godjuks b3eae22221 Merge pull request #241 from Hornwitser/port-1.2.1-fixes
Port version 1.2.1 fixes
2019-09-19 15:43:08 +02:00
Hornwitser 0b3e4fe6f4 Port fix license in package.json
Correct license entry being ISC instead of MIT in package.json.

This is a port of 7e2ca58.
2019-09-19 14:50:21 +02:00
Hornwitser 7d1942b615 Port spawn factorio server deteached in client.js
Sending ^C via the terminal on Linux may cause SIGINT to be sent twice
to the factorio process, causing it to exit without completing the
saving.  This happens because the shell sends the interupt to all
members of the process group for the job and this includes both the
node client process and the factorio server process.

Avoid this situation by passing detached to spawn when the platform is
Linux, which causes the process to be created with its own process group
and therefore not targeted by a SIGINT from the shell.

This unfortunately does not work on Windows as we can't send SIGINT or
^C to a process there.  Doing subprocces.kill on Windows terminates the
process similarly to how SIGKILL works on Linux.

This is a port of 6b090cd.
2019-09-19 14:50:21 +02:00
Hornwitser 9eb9291314 Port update node-factorio-api to 0.3.8
Note that the versions 0.3.6 and 0.3.7 had issues with an old
mod_cache.json being present.

This is a port of 78de723.
2019-09-19 14:50:21 +02:00
Arvids Godjuks b068550775 Merge pull request #238 from Hornwitser/move-templates
Move EJS templates
2019-09-18 18:16:00 +02:00
Hornwitser 6726c2b16f Refactor EJS string gluing code
Rewrite awful string gluing of HTML with JS to use the slightly less
awful EJS string gluing method.
2019-09-18 16:54:26 +02:00
Hornwitser 706a1dbd39 Indent static/browserconfig.xml
Make static/browserconfig.xml readable by indenting it's content.
2019-09-18 16:54:26 +02:00
Hornwitser a62e8d17a3 Move ejs templates to views/
Move the ejs templates to the default Express.js views/ folder and
change their extension to .ejs.  Reconfigure Express.js to look for
templates in the views folders as well as the plugins folder.  This
enables plugins to render templates using paths of following format
"pluginName/path/to/page-or-view".
2019-09-18 16:54:11 +02:00
Arvids Godjuks a4983d75fb Merge pull request #237 from Hornwitser/missing-coverage
Add missing files to coverage report
2019-09-18 15:35:29 +02:00
Hornwitser 1fd8ae954b Add missing files to coverage report
Add missing.js test files that requires any files that currently does
not have any unit tests defined for them.  This should hopefully make it
so that when unit tests are added for parts of these files the coverage
will increase instead of decreasing.

Note that this does not include CLI Tools/ as those are not testable.
2019-09-18 15:25:19 +02:00
Arvids Godjuks e15462439a Merge pull request #235 from Hornwitser/config-part-3
Config Rewrite Part 3
2019-09-18 14:06:50 +02:00
Arvids Godjuks 312c45bda5 Merge pull request #236 from Hornwitser/dedup-clustertools
Remove duplicated clusterTools code
2019-09-18 14:05:05 +02:00
Hornwitser aaf43143df Add compression to getInstanceName
Set the compression header when doing requests in getInstanceName.
2019-09-18 13:55:01 +02:00
Hornwitser c5cae30d83 Remove duplicated clusterTools code
Remove getCommand, getInstanceName, getSafeLua, and
checkHotpatchInstallation definitions from plugins and use the
implementation in lib/clusterTools for these functions instead.
2019-09-18 13:54:22 +02:00
Hornwitser a783bd9651 Refactor out config injection in modManager
Change config in modManager to be passed to each individual functions
instead of requiring it be present at load time.
2019-09-16 16:04:08 +02:00
Hornwitser 5f33cf4d3b Remove config management
Remove lib/manager/configManager.js and the config management command
line interface as well as the serverManager's web interface for config
management.  The configuration rewrite will work differently and is not
compatible with configManager.js.
2019-09-16 16:04:08 +02:00
Hornwitser dd865b42b5 Fix incorrect handling of instance ids
After 651b09b the instance ID would be treated differently depending on
wheteher it was a string or a number in the master server.  This caused
researchSync to break as it would send the ID as a number while the
master server would have it stored as a string.

Fix by coercing instanceID to a string in the master HTTP API.
2019-09-16 16:04:08 +02:00
Hornwitser 858449c57a Move client config loading to startClient
Move the configuration loading step in client.js into the startClient
function in order to separate it from the client code definition.
2019-09-16 16:04:08 +02:00
Hornwitser 53a5ce062b Ensure instance name is a valid Windows file name
Add check for instance name that ensures it being a valid Windows file.
See the microsoft article about naming files for more details:
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
2019-09-16 16:04:02 +02:00
Hornwitser 1ba9e68603 Move instance directory to Instance class
Replace the instancedirectory variable with an Instance class that holds
the directory and has a .path() to get paths relative to the instance
directory.
2019-09-15 13:43:14 +02:00
Arvids Godjuks ec223e9d9e Merge pull request #234 from Hornwitser/move-tests
Move unit tests to test/ folder
2019-09-14 18:21:09 +02:00
Hornwitser a63c341209 Move unit tests to test/ folder
Move unit tests for client, master, and the lib to test/ and move plugin
unit tests to <plugin dir>/test.
2019-09-14 14:49:52 +02:00
Arvids Godjuks 74c99b9e13 Merge pull request #233 from Hornwitser/client-refactor-and-fixes
Client refactor and fixes
2019-09-14 02:14:38 +02:00
Hornwitser bcb22d2af7 Securely generate rcon password
Replace Math.random() based password generation for the rcon interface
with a more secure method based crypto.randomBytes.
2019-09-14 01:18:51 +02:00
Hornwitser eb1b863cec Remove unimplemented mods update command
Remove the mods update command from the client command line interface as
this calls the non-existant modManager.updateAllMods function.
2019-09-14 01:15:36 +02:00
Hornwitser 2428cba2bd Default to ports in the dynamic range
Use random ports in the dynamic range as define by RFC 6335 for
instaces.
2019-09-14 01:15:01 +02:00
Hornwitser 500c9584eb Remove commented out itemStats code
Remove old commented out code dealing with item statistics that is no
longer relevant.
2019-09-14 00:56:22 +02:00
Hornwitser 18a904d9de Use as-table for listInstances
Rewrite listInstances to use as-table instead of manually coded table
generation.
2019-09-14 00:54:32 +02:00
Hornwitser 85daf6df19 Rename listPlugins to listInstances
Rename incorrectly named function listPlugins to listInstances.
2019-09-14 00:53:50 +02:00
Arvids Godjuks a57b0a3b5e Merge pull request #231 from Hornwitser/auth-master
Port socket.io Authentication to master
2019-09-11 17:52:10 +02:00
Hornwitser 8aa66e9e68 Port authentication of socket.io server
Authenticate connections made to the socket.io server via a token query
parameter that's validated in a similar manner to the x-access-token for
HTTP requests.

This is a port of 0c45e57.
2019-09-11 16:59:11 +02:00
Hornwitser d378287941 Restructure Changelog
Make "Changelog" the top level header, and move the existing headers one
level down.
2019-09-10 23:53:21 +02:00
AlienXAXS ea5c0d5aa3 Fixes editSlaveMeta and db AddItem errors (#228)
Fixed editSlaveMeta to pass a number to db.addItem method
2019-09-10 17:52:09 +02:00
Arvids Godjuks 094d44a7f5 Merge pull request #227 from Hornwitser/config-part-2
Config Rewrite Part 2
2019-09-09 14:06:50 +02:00
Hornwitser 1bbf1542d2 Refactor client.js command handling into functions
Move the various actions performed by client.js into separate async
functions and do the command action logic if client.js is invoked as a
module directly.
2019-09-09 12:44:09 +02:00
Hornwitser 98900e72dc Merge masterIP and masterPort into masterURL
Merge the masterIP and masterPort configuration entries into a single
masterURL entry.  Fixes the problem with connecting to an HTTPS version
of the master server and also makes it easier to host the master server
behind a reverse proxy.

This breaks all known code interfacing Clusterio.
2019-09-09 12:44:09 +02:00
Hornwitser da99b39402 Remove compiled TypeScript code
Remove the compiled output of veladon's clusterioModel project.  The
source code can be found at https://github.com/veladon/clusterioModel
and doesn't really belong in Clusterio as it's specific to the train
teleports plugin.
2019-09-06 15:43:44 +02:00
Arvids Godjuks aba22960a6 Merge pull request #226 from Hornwitser/check-tests
Check the exit status of the tests script
2019-09-06 12:55:17 +02:00
Hornwitser 0ec37414c2 Deduplicate test script and check exit status
Remove the explicit ignoring of the exit status of the test scripts.
This makes the Travis CI build be considered a failure if one of the
tests fail.  Also rewrite the fast-test script to use the test script.
2019-09-06 00:16:13 +02:00
Arvids Godjuks 2e50921d32 Documentation adjustments (#225)
README.md update - adjusted install instruction to be against the stable branch
2019-09-05 14:55:42 +02:00
TheAIBot e14f7c22fd Merge pull request #222 from Hornwitser/config-part-1
Config Rewrite Part 1
2019-09-05 11:33:43 +02:00
Hornwitser a31778c7ff Remove unused config parameter to pluginManager
Remove the unused library initialization parameter config to
pluginManager and reorganize pluginManager to no longer be defined by a
function.
2019-09-04 20:43:13 +02:00
Hornwitser 35546b4b18 Move loading of config in master to startServer
Move the loading of the config file in the master server to the
startServer function.  Remove config.json.test as it's no longer needed.
2019-09-04 20:43:13 +02:00
Hornwitser 651b09b613 Refactor database and item retreival
Change the ugly global slaves object to be a member of the db object and
implement the items database as a separate integrety verifying class in
lib/database.
2019-09-04 20:43:13 +02:00
Arvids Godjuks e1263a40b1 Merge pull request #221 from Hornwitser/fix-socketio
Fix master socket.io broken by a3fc1dd
2019-09-04 18:28:22 +02:00
Hornwitser 23ce86aef6 Fix master socket.io broken by a3fc1dd
Add missing attach calls to the master socket.io object that was
accidentally removed by the refactoring in a3fc1dd.  Unfortunately I've
been unable to determine if socket.io actually supports listening on
multiple servers at the same time, this needs further investigation.
2019-09-04 17:39:49 +02:00