mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-13 07:04:53 +09:00
Lua side does not work, JS seems to be fine
This commit is contained in:
1 parent
95a04c1221
commit
1f707d0aad
9 files changed
+4110
No files matched your search
+29
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
@@ -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] + ")")
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -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
File diff suppressed because it is too large.
Load diff
@@ -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
Binary file not shown.
@@ -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"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user