Commit Graph
127 Commits
Author SHA1 Message Date
Hornwitser 9082b40abd Update rcon-client
Update rcon-client to 4.2.0 in order to remove workaround for issue with
rcon-client 4.1.0 that has been resolved.
2019-10-28 21:54:19 +01:00
Hornwitser be02e57012 Remove mkdirp dependency
Replace usage of mkdirp with fs-extra.mkdirp and remove the mkdirp
dependency and the unused mkdirp-promise dependency.
2019-10-28 19:46:22 +01:00
Hornwitser 6bde8a2219 Remove .js suffix from node invocations
Remove the .js suffix from help texts of node invocations as well as
actual invocations as this is not necessary.  Removing it opens up the
possibility of restructuring the code into a directory with the same
name.
2019-10-28 19:45:32 +01:00
Hornwitser a9a382b993 Mark package as 2.0.0 development version
Change the version in package.json to 2.0.0-alpha
2019-10-28 19:44:56 +01:00
Hornwitser 1a035e849e Replace Hotpatch with save patching
Remove Hotpatch and implement a save patcher in its place.  The save
patcher takes a normal Factorio save and adds modules to it that's
loaded by a generated control.lua file.  This greatly reduces the
difficulty of adding an existing game to Clusterio and using scenario
code in plugins.

The mechanism for selecting what code to patch into the saves from
plugins is temorary and expected to change with #220.
2019-10-24 22:49:16 +02:00
Hornwitser a01b971ba2 Rewrite Factorio server spawning
Break out the server process management to a new FactorioServer class in
lib/factorio.  This class takes responsibility for managing a factorio
server, communicating with it and handling the stopping of it.  It also
replaces the previous effort to do this in lib/factorioServer.

This change also updates the version of rcon-client, and since the
author of it has updated it to use UTF-8 the fork is no longer
necessary.  It also removes the messageInterface implementation
in favor of just calling the rcon-client library directly since
this has rate limiting logic built in.

The lib/factorio library is intended to abstract all the interfacing
that happens with Factorio.
2019-10-14 18:56:46 +02:00
Hornwitser 33e9f9d983 Link lib/scenarios instead of copying it
Link the instance directory's scenario folder to lib/scenarios instead
of copying it.  This ensures it stays up to date.
2019-10-14 15:51:45 +02:00
Hornwitser 6a870be233 Implement symlinking of shared mods
Add symlinkMods function which takes an instance and a shared mods
folder as input and updates or creates the instance mods folder from it
by symlinking the mods in the shared mods folder to the instance mods
folder.

On Windows this uses hard links as the symlinks require elevated
privileges.
2019-10-14 15:51:45 +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 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
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
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
Hornwitser fb2519cb50 Add fast-test and fast-cover npm scripts
Add alternate test and coverage scripts that skips tests that are slow.
2019-08-24 11:25:40 +02:00
Hornwitser 0a9ddef120 Check for globals leaking during test
Add --check-leaks to mocha to have it report globals that leak during
the testing.
2019-08-24 11:02:50 +02:00
Hornwitser c1699fe33d Update dependencies
Update old dependencies.  Fix change in mocha causing it to not exist
afer the tests are done and a change in the command parsing causing the
tests to no longer be detected.
2019-08-23 14:51:10 +02:00
Hornwitser 69a1ff7817 Use Node.js version 10
Update instructions, Dockerfile and Travis CI to use Node.js 10.
Specify that Node.js version 10 or greater is needed in the engines
section of package.json (note that this is only advisory.)  And document
this as a breaking change in CHANGELOG.md.
2019-08-23 14:50:22 +02:00
Hornwitser bfa8a99daa Cleanup travis and coverage script
Do not install git, tar and curl as these packages are installed by
default on Travis CI.  Move the codecov upload to the travis script and
do not include the codecov token as it's not needed when uploaded from
Travis CI.  Make the cover npm script into something that can be runned
locally and move the Travis CI version to a new ci-cover script.  Remove
the verbose flag from the tar extration of the factorio headless server.
2019-08-23 14:17:56 +02:00
Hornwitser 71c07fa527 Change GitHub references (#205)
Change references to Danielv123/factorioClusterio on GitHub to
clusterio/factorioClusterio.
2019-08-21 23:18:17 +02:00
Hornwitser 79ff52aa20 Replace istanbul with nyc
Use nyc instead of istanbul as the later has been deprecated and is no
longer being developed.  Fix the cover and test scripts to work again
with nyc and add the output dir for nyc into .gitignore.
2019-08-07 15:21:30 +02:00
Hornwitser bc7f3804c8 Remove right-pad
Remove unused dependency right-pad.
2019-08-07 10:18:14 +02:00
Hornwitser a452749caa Remove app-root-path
Resolve the relative path using path.relative instead of some hacky
string substitutions.
2019-08-07 10:18:14 +02:00
Hornwitser 1e8fb85122 Remove bcryptjs
Remove unused dependency bcryptjs.
2019-08-07 10:18:14 +02:00
Hornwitser 66c0238a3d Remove undescore
A 50 kb library is not needed to make a function run once, especially
not when it doesn't work.  _.once does not modify the function passed to
it to only run once it returns a new function that only runs once.
Since the result of once was discarded, it had no effect.

Remove underscore and implement instanceManagement running once properly
with 3 lines of code.
2019-08-07 10:18:14 +02:00
Hornwitser ca0281ae58 Remove pointless micro-optimization
This saved 30ms of the startup on my machine.  Even if it saved a second
it's still pretty pointless as we're not depending on the master server
startup being super fast.
2019-08-07 10:18:14 +02:00
Hornwitser d0afcbf0ac Move html5-validator to devDependencies
html5-validator is only used for testing the master server web interface
and does not need to be included on production installs.
2019-08-07 10:18:14 +02:00
Hornwitser 13a069a798 Reimplement hashFile locally
Replace the 10 MB of dependencies that is hash-files with a homebrew
Promise based implementation of hashFile that uses crypto and fs.  This
somehow also ends up being the same amount of code as the one using
hash-files.
2019-08-07 10:18:14 +02:00
Hornwitser 0e849488e2 Remove snyk
It's not supposed to be installed as a dependency in the first place,
and this seems like the wrong solution to there being too many stinking
dependencies to keep track the security of.
2019-08-07 10:18:14 +02:00
Hornwitser 6264bd9888 Update node-factorio-api
The 0.3.5 release of node-factorio-api removed the dependency to
documentation, which itself pulls in another 500 dependencies.  Update
to 0.3.5 to avoid having this pulled in.
2019-08-07 10:18:14 +02:00
Hornwitser cbd1939a74 Stop pretending there's documentation
Remove docs scripts, documentation.yml and the documentation dependency.
2019-08-07 10:18:14 +02:00
Godmave 0df1b8e1fd Add tailing of files and move socketio connect after plugin load (#191)
#add tailing of files to prevent lost data between factorio and clusterio
#move socketio connect to the bottom after the plugins are loaded 
  to prevent plugins not getting the connection event
#add some more transfer compression in different places
2019-08-05 07:47:57 +02:00
Hornwitser f76c84c3f1 Move node_modules/_app/ into lib/ as a package (#190)
Move the contents of node_modules/_app into lib/ as there shouldn't be
any content in node_modules.  This directory is automatically managed
and pruned by npm.

Add lib/ as a local package in package.json, this allows scripts
everywhere to require it's content as "lib/path" instead of relying on
local paths.  This shadows the StdLib Node.js Bindings package, but I
could care less.

Change all requires with lib as a local path and _app to use just lib.
2019-08-04 15:52:36 +02:00
Hornwitser a13d4c6805 Use published version of rcon-client-fork (#188)
Switch to a version of rcon-client-fork that's published on npm.  Avoids
having to put build files in the git repo.
2019-07-30 16:28:43 +03:00
Sander Homan 5fd3a6b188 Switch to rcon-client git dep with dep build output in it 2019-07-30 14:03:56 +02:00
Hornwitser a00183e94c Switch to rcon-client fork (#183)
Switch to using fork of rcon-client where the commands and the responses
are not converted to ASCII before being sent over the wire.  Should fix
the issue with Russian text showing up as garbled letters in the chat as
well as the issue with train schedules using >= and <= conditions.

If rcon-client upstream is updated with the utf8 patch this commit can
be reverted with the version the patch was included in.
2019-07-28 14:42:44 +02:00
Danielv123 a1237d8cfd Added CLI script for deleting players from playerManager 2019-07-26 23:55:33 +02:00
Daniel Vestøl d66d22a9cd Updated rcon-client 2019-07-05 23:07:25 +02:00
veladon bf4b7fe1b8 Added cluster model js to /lib/ 2019-06-10 21:40:31 +01:00
snyk-bot 3f29a722bb fix: .snyk & package.json to reduce vulnerabilities
The following vulnerabilities are fixed with a Snyk patch:
- https://snyk.io/vuln/npm:hawk:20160119
- https://snyk.io/vuln/npm:http-signature:20150122
- https://snyk.io/vuln/npm:mime:20170907
- https://snyk.io/vuln/npm:minimatch:20160620
- https://snyk.io/vuln/npm:request:20160119
- https://snyk.io/vuln/npm:tunnel-agent:20170305
- https://snyk.io/vuln/npm:uglify-js:20151024
2019-02-25 06:48:23 +00:00
Daniel Vestøl 846853813a Added rcon tool and better prometheus monitoring for websockets 2019-01-05 14:35:43 +01:00
Daniel Vestøl 9b6f8cf652 Fixed error related to getting playerCount 2018-11-17 16:09:46 +01:00
Daniel Vestøl 8766529e5b Removed linvodb/leveldown dependency 2018-10-22 11:06:21 +02:00
Daniel Vestøl 810e4a27b5 Removed snyk 2018-09-27 10:35:25 +02:00
Daniel Vestøl a76e07c07b Enable and disable plugins from the commandline (non functional as of yet) 2018-08-15 23:15:01 +02:00
Daniel Vestøl e71c183b48 Collet http performance statistics for plugins as well 2018-08-14 13:05:17 +02:00
Daniel Vestøl 8518cd54c6 Introduce more tools for use by plugins 2018-08-10 15:50:46 +02:00
Daniel Vestøl 8abeb26dce Commandline tools to install/uninstall plugins from github 2018-07-25 01:14:43 +02:00
Daniel dc52d64c7e Merge pull request #123 from Danielv123/snyk-fix-y7mchf
[Snyk] Fix for 1 vulnerable dependencies
2018-07-18 10:42:34 +02:00
Daniel Vestøl e73a6052fe Instance creation with external instance paths are now working 2018-07-15 17:43:26 +02:00
snyk-bot f8bf979327 fix: .snyk & package.json to reduce vulnerabilities
The following vulnerabilities are fixed with a Snyk patch:
- https://snyk.io/vuln/npm:lodash:20180130
2018-07-03 06:07:59 +00:00
Daniel Vestøl 443e5dc286 Arguments: --port --masterPort --sslPort --config --rcon-port --rcon-password 2018-06-24 16:46:31 +02:00