Lua side does not work, JS seems to be fine

This commit is contained in:
Danielv123 committed 2016-08-12 21:01:50 +02:00
1 parent 95a04c1221
commit 1f707d0aad
9 files changed
+4110

No files matched your search

+29
View File
@@ -0,0 +1,29 @@
# Logs
logs
*.log
npm-debug.log*
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directory
# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git
node_modules
Factorio*
+20
View File
@@ -0,0 +1,20 @@
Copyright (c) 2012, Tiiffi <tiiffi_at_gmail_dot_com>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
+111
View File
@@ -0,0 +1,111 @@
Name: mcrcon (minecraft rcon)
Version: 0.0.5
Date: 31.08.2012
License: zlib/libpng License
Contact:
WWW: http://sourceforge.net/projects/mcrcon/
MAIL: tiiffi_at_gmail_dot_com
IRC: tiiffi @ quakenet
Description:
Mcrcon is powerful IPv6 compliant minecraft rcon client with bukkit coloring support.
It is well suited for remote administration and to be used as part of automated server maintenance scripts.
Does not cause "IO: Broken pipe" or "IO: Connection reset" spam in server console.
Features:
- Interacive terminal mode. Keeps the connection alive.
- Send multiple commands in one command line.
- Silent mode. Does not print rcon output.
- Support for bukkit coloring on Windows and Linux (sh compatible shells).
- Multiplatform code. Compiles on many platforms with only minor changes.
Version history:
0.0.5
- IPv6 support!
* Thanks to 'Tanja84dk' for addressing the real need of IPv6.
- Fixed bug causing crash / segmentation fault (invalid write) when receiving malformed rcon packet.
- Program makes use of C99 feature (variable-length arrays) so "-std=gnu99" flag on
GCC-compiler must be used to avoid unecessary warnings.
- Rcon receive buffer is now bigger (2048 bytes -> 10240 bytes).
* Thanks to 'gman_ftw' @ Bukkit forums.
- Fixed invalid error message when receiving empty rcon packet (10 bytes).
* Thanks to 'pkmnfrk' @ bukkit forums.
- Terminal mode now closes automatically when rcon socket is closed by server
or if packet size cannot be retrieved correctly.
- Client now tries to clean the incoming socket data if last package was out of spec.
0.0.4
- Reverted back to default getopts options error handler (opterr = 1).
Custom error handler requires rewriting.
- Some comestic fixes in program output strings.
- Program usage(); function now waits for enter before exiting on Windows.
0.0.3
- Colors are now supported on Windows too!
- Terminal mode is now triggered with "-t" flag. "-i" flag still works for
backwards compatibility.
- Bug fixes (Packet size check always evaluating false and color validity
check always evaluating true).
0.0.2
- License changed from 'ISC License' to 'zlib/libpng License'.
- Bug fixes & code cleanups
- Interactive mode (-i flag). Client acts as interactive terminal.
- Program return value is now the number of rcon commmands sent successfully.
If connecting or authentication fails, the return value is -1.
- Colors are now enabled by default. Now '-c' flag disables the color support.
0.0.1
- Added experimental support for bukkit colors.
Should work with any sh compatible shell.
- Packet string data limited to max 2048 (DATA_BUFFSIZE) bytes.
No idea how Minecraft handles multiple rcon packets.
If someone knows, please mail me so I can implement it.
===================================================================================
Batch (.bat) scripts included in Windows binary package:
launch.bat:
Prompts user for server information and starts mcrcon.exe in terminal mode.
create_shortcut.bat:
Prompts user for server infromation and creates .bat launch script.
This launch (shortcut) script can be used for connecting to the server fast and easily.
===================================================================================
Usage: mcrcon [OPTIONS]... [COMMANDS]...
Sends rcon commands to minecraft server.
Option:
-h Prints usage.
-s Silent mode. Do not print data received from rcon.
-t Terminal mode. Acts as interactive terminal.
-p Rcon password. Default: "".
-H Host address or ip.
-P Port. Default: 25575.
-c Do not print colors. Disables bukkit color printing.
Invidual commands must be separated with spaces.
Example:
mcrcon -c -H 192.168.1.42 -P 9999 -p password cmd1 "cmd2 with spaces"
minecraft rcon (mcrcon) 0.0.5.
Report bugs to tiiffi_at_gmail_dot_com.
+65
View File
@@ -0,0 +1,65 @@
var fs = require('fs');
var needle = require("needle")
var Rcon = require('rcon')
// connect us to the server with rcon
// IP, port, password
var conn = new Rcon('localhost', 12345, '123');
conn.on('auth', function() {
console.log("Authed!");
}).on('response', function(str) {
console.log("Got response: " + str);
}).on('end', function() {
console.log("Socket closed!");
process.exit();
});
conn.connect();
// trigger when something happens to output.txt
fs.watch("Factorio 0.13.9/script-output/output.txt", "utf8", function(eventType, filename) {
// get array of lines in file
items = fs.readFileSync("Factorio 0.13.9/script-output/output.txt", "utf8").split("\n");
// if you found anything, reset the file
if(items[0]) {
fs.writeFileSync("Factorio 0.13.9/script-output/output.txt", "")
}
for(i = 0;i < items.length; i++) {
if(items[i]) {
g = items[i].split(" ");
g[0] = g[0].replace("\u0000", "");
console.log(g);
// send our entity and count to the master for him to keep track of
needle.post('localhost:8080/place', {name:g[0], count:g[1]},
function(err, resp, body){
console.log(body);
});
}
}
})
fs.watch("Factorio 0.13.9/script-output/orders.txt", "utf8", function(eventType, filename) {
// get array of lines in file
items = fs.readFileSync("Factorio 0.13.9/script-output/orders.txt", "utf8").split("\n");
// if you found anything, reset the file
if(items[0]) {
fs.writeFileSync("Factorio 0.13.9/script-output/orders.txt", "")
}
for(i = 0;i < items.length; i++) {
if(items[i]) {
g = items[i].split(" ");
g[0] = g[0].replace("\u0000", "");
console.log(g);
// send our entity and count to the master for him to keep track of
needle.post('localhost:8080/remove', {name:g[0], count:g[1]}, function(err, resp, body){
console.log(body);
if(body == "success") {
conn.send("/c remote.call('clusterio', 'import', '" + g[0] + "', " + g[1] + ")")
}
});
}
}
})
+31
View File
@@ -0,0 +1,31 @@
@echo off
@cls
@set /p host="Enter host (default: "127.0.0.1"): "
@if "%host%"=="" set host=127.0.0.1
@set /p port="Enter port (default: 25575): "
@if "%port%"=="" set port=25575
@set /p passwd="Enter password: "
@if "%passwd%"=="" set passwd=
set name=connect_%host%-%port%
@set /p name="Enter shortcut name (default: "%name%.bat"): "
@if "%name%"=="" set name=connect_%host%-%port%
set command=@mcrcon.exe -t -H %host% -P %port% -p %passwd%
@echo %command% >> %name%.bat
@echo.
@echo Command: "%command%"
@echo.
@echo Shortcut "%name%.bat" created!
@echo.
@set "host="
@set "port="
@set "passwd="
@pause
+3749
View File
File diff suppressed because it is too large. Load diff
+82
View File
@@ -0,0 +1,82 @@
// Library for create folder if it does not exist
var mkdirp = require("mkdirp");
var nedb = require("nedb")
var fs = require("fs");
var express = require("express");
// Required for express post requests
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// Set folder to serve static content from (the website)
app.use(express.static('static'));
// set up database
var Datastore = require('nedb');
db = {};
db.items = new Datastore({ filename: 'database/items.db', autoload: true });
db.items.additem = function(object) {
db.items.findOne({name:object.name}, function (err, doc) {
// console.dir(doc);
if (doc) {
// Update existing items if item name already exists
object.count = Number(object.count) + Number(doc.count);
db.items.update(doc, object, {multi:true}, function (err, numReplaced) {
});
} else {
// If command does not match an entry, insert new document
db.items.insert(object);
console.log('Item created!');
}
})
}
db.items.removeitem = function(object) {
db.items.findOne({name:object.name}, function (err, doc) {
// console.dir(doc);
if (doc) {
// Update existing items if item name already exists
if(Number(doc.count) > Number(object.count)) {
object.count = Number(doc.count) - Number(object.count);
db.items.update(doc, object, {multi:true}, function (err, numReplaced) {});
return true;
} else {
return false;
}
} else {
return false;
}
})
}
// endpoint to send items to
app.post("/place", function(req, res) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
console.log(req.body);
// save items we get
db.items.additem(req.body)
// Attempt confirming
res.send("success!");
});
// endpoint to remove items from DB when client orders items
app.post("/place", function(req, res) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
console.log(req.body);
// save items we get
if(db.items.removeitem(req.body);) {
// if true, the action was successfull
res.send("success");
} else {
res.send('failure');
}
});
var server = app.listen(8080, function () {
console.log("Listening on port %s...", server.address().port);
});
BIN
View File
Binary file not shown.
+23
View File
@@ -0,0 +1,23 @@
{
"name": "factorio-clusterio",
"version": "1.0.0",
"description": "Factorio cluster???",
"main": "master.js",
"scripts": {
"test": "nodemon master.js"
},
"keywords": [
"factorio"
],
"author": "Danielv123",
"license": "ISC",
"dependencies": {
"body-parser": "^1.15.2",
"express": "^4.14.0",
"fs": "0.0.2",
"mkdirp": "^0.5.1",
"nedb": "^1.8.0",
"needle": "^1.1.0",
"rcon": "^1.0.2"
}
}