mixio 1.10.1

This commit is contained in:
Eason010212
2023-03-11 11:42:26 +08:00
parent c9c4c2e71e
commit 9fa55ba442
24 changed files with 561 additions and 311 deletions

5
.gitignore vendored
View File

@@ -1,2 +1,5 @@
node_modules/ node_modules/
package-lock.json package-lock.json
storage/
logs/
config/

View File

@@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICRDCCAa0CFCVQzFjsGbbYOOlCxMGn1sZyBzwVMA0GCSqGSIb3DQEBCwUAMGEx
CzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdCZWlqaW5n
MQ4wDAYDVQQKDAVNaXhseTEOMAwGA1UECwwFTWl4SU8xDjAMBgNVBAMMBU1peElP
MB4XDTIyMDEyOTA4MDE0MVoXDTIzMDEyOTA4MDE0MVowYTELMAkGA1UEBhMCQ04x
EDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0JlaWppbmcxDjAMBgNVBAoMBU1p
eGx5MQ4wDAYDVQQLDAVNaXhJTzEOMAwGA1UEAwwFTWl4SU8wgZ8wDQYJKoZIhvcN
AQEBBQADgY0AMIGJAoGBAM3xzY1n5V05vAZbYniDbMoNXCzgL5puebmV2mIkMAHv
QnhMZHv2O938ezFae0l3A6zRkhWgX4XLmGUwKria3xCC9E0soF2wM0JfIFpDIQ5g
WnixtCiI8MjV8hXQ0Nh1hJ0MMwEX6g72N/YyH5Y/P9lsmr6OiG7dXe4oyaROY/U5
AgMBAAEwDQYJKoZIhvcNAQELBQADgYEASvGJMK+h09mGCsza7h2ieVe75ogbG/nK
+c7KYYOBR2OXTNk90Od+2tJog5hJl8M1nRDHdOEPgTPDYKVz0hXjJBZnM5NtcoYS
pq6vf83MtY8polmly/EZsZqiVPaEsH97nniRoMOP4JdyKlqU2g94yFDUiTTZW4cS
iURo4pW8gRE=
-----END CERTIFICATE-----

View File

@@ -1,16 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAM3xzY1n5V05vAZb
YniDbMoNXCzgL5puebmV2mIkMAHvQnhMZHv2O938ezFae0l3A6zRkhWgX4XLmGUw
Kria3xCC9E0soF2wM0JfIFpDIQ5gWnixtCiI8MjV8hXQ0Nh1hJ0MMwEX6g72N/Yy
H5Y/P9lsmr6OiG7dXe4oyaROY/U5AgMBAAECgYB8zETFpeoF/lCEgahAY1PvdP0g
bJIsQToeTkLSKh+1bGmZQKG7xNEuiiuVEsGXGTnu5ehilpaMG340A2ZADAmTf552
Zr7AHSWmg4YEEykihSoJ2owfmqamm5Fsyoe/oxijsWwXAiZIv6VkDznchnQ+1I/w
Ioyigp+dHbHS3OjiAQJBAOaDx0XjofpJQe4oCufTIqltomRtxtP4fFbeEbmQrXRt
zNvH6QeKeanA+F4JQGVKcDSt6rz5yi8MqukOpZKBcdkCQQDktp4hfgvCQN8U50t+
izZVImXGb47tfNKCWkNdrVnMI597ad3Qx+NV41oohMV4SFNCA8VgTq2onkhBbRjP
YSJhAkBp9n2t5Nvan75M6d9JfcbbN2iE3emeGwWdMOvY72astKSNCzJVoxQWMnx5
TatqZHN7486aHAES67HM/EykMhjRAkArlooog+clzEs3pqUCpvFh5D5VRSmOJT3R
TfaMwd7dQuTAFnsJsS6oTb3+/t7Lf60uZZ2WLyh1fET1Ax+5Vh/BAkEAlNxqK/DI
Fu1JviGs33vE55YHu4F0u822PUT9XN8NNzFhsvK5Oza+O7Tyyq7WJejR7I8IjzOb
RvSzVsDN3/+4ug==
-----END PRIVATE KEY-----

View File

@@ -1,20 +0,0 @@
{
"MIXIO_HTTP_PORT": 8080,
"MIXIO_HTTPS_PORT": 8081,
"MAX_PROJECT_NUM_PER_USER": 20,
"MAX_MESSAGE_PER_USER": 1000,
"MAX_MESSAGE_PER_SECOND": 5,
"ALLOW_REGISTER": true,
"ALLOW_HOOK": true,
"OFFLINE_MODE": true,
"BAIDU_MAP_AK": "",
"BAIDU_MAP_SERVER_AK": "",
"ADMIN_USERNAME":"admin",
"ADMIN_PASSWORD":"public",
"STORAGE_ENGINE":"sqlite",
"MYSQL_HOST":"localhost",
"MYSQL_PORT":3306,
"MYSQL_USER":"",
"MYSQL_PASS":"",
"MYSQL_DB":"mixio"
}

555
mixio.js
View File

@@ -1,3 +1,5 @@
var VERSION = "1.10.0"
// change pwd to src // change pwd to src
if (process.argv[0].indexOf("node") != -1) { if (process.argv[0].indexOf("node") != -1) {
// exec from source // exec from source
@@ -16,7 +18,7 @@ var logFileName = "logs/" + [
[spawnTime.getFullYear(), spawnTime.getMonth() + 1, spawnTime.getDate()].join("-"), [spawnTime.getHours() >= 10 ? spawnTime.getHours() : ("0" + spawnTime.getHours()), spawnTime.getMinutes() >= 10 ? spawnTime.getMinutes() : ("0" + spawnTime.getMinutes()), spawnTime.getSeconds() >= 10 ? spawnTime.getSeconds() : ("0" + spawnTime.getSeconds())].join("-") [spawnTime.getFullYear(), spawnTime.getMonth() + 1, spawnTime.getDate()].join("-"), [spawnTime.getHours() >= 10 ? spawnTime.getHours() : ("0" + spawnTime.getHours()), spawnTime.getMinutes() >= 10 ? spawnTime.getMinutes() : ("0" + spawnTime.getMinutes()), spawnTime.getSeconds() >= 10 ? spawnTime.getSeconds() : ("0" + spawnTime.getSeconds())].join("-")
].join("-") + ".log" ].join("-") + ".log"
const { spawn, exec } = require('child_process'); const { spawn, exec } = require('child_process');
var fs = require('fs') var fs = require('fs-extra')
var express = require('express'); var express = require('express');
var session = require('express-session'); var session = require('express-session');
const sqlite3 = require('sqlite3').verbose(); const sqlite3 = require('sqlite3').verbose();
@@ -33,26 +35,211 @@ var jq = require("jquery");
const mqtt = require('mqtt'); const mqtt = require('mqtt');
var { JSLang, arrLang, lang } = require("./js/lang.js") var { JSLang, arrLang, lang } = require("./js/lang.js")
const path = require('path'); const path = require('path');
var readline = require('readline');
var iconv = require('iconv-lite');
var versionPath = "version.json" function init(cb){
var VERSION = JSON.parse(fs.readFileSync(versionPath), "utf-8")["version"] if (!fs.existsSync("logs")) {
var configPath = "config/config.json" fs.mkdirSync("logs")
var configs = fs.readFileSync(configPath); }
configs = JSON.parse(configs.toString()); if (!fs.existsSync("config")) {
fs.mkdirSync("config")
var STORAGE_ENGINE = configs["STORAGE_ENGINE"] var defaultConfig = `{
"MIXIO_HTTP_PORT": 8080,
"MIXIO_HTTPS_PORT": 8443,
"MAX_PROJECT_NUM_PER_USER": 20,
"MAX_MESSAGE_PER_USER": 1000,
"MAX_MESSAGE_PER_SECOND": 5,
"ALLOW_REGISTER": true,
"ALLOW_HOOK": true,
"OFFLINE_MODE": true,
"BAIDU_MAP_AK": "",
"BAIDU_MAP_SERVER_AK": "",
"ADMIN_USERNAME":"admin",
"ADMIN_PASSWORD":"public",
"STORAGE_ENGINE":"sqlite",
"MYSQL_HOST":"localhost",
"MYSQL_PORT":3306,
"MYSQL_USER":"",
"MYSQL_PASS":"",
"MYSQL_DB":"mixio"
}`
fs.writeFileSync("config/config.json", defaultConfig)
fs.mkdirSync("config/certs")
var defaultCrt =
`-----BEGIN CERTIFICATE-----
MIICRDCCAa0CFCVQzFjsGbbYOOlCxMGn1sZyBzwVMA0GCSqGSIb3DQEBCwUAMGEx
CzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdCZWlqaW5n
MQ4wDAYDVQQKDAVNaXhseTEOMAwGA1UECwwFTWl4SU8xDjAMBgNVBAMMBU1peElP
MB4XDTIyMDEyOTA4MDE0MVoXDTIzMDEyOTA4MDE0MVowYTELMAkGA1UEBhMCQ04x
EDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0JlaWppbmcxDjAMBgNVBAoMBU1p
eGx5MQ4wDAYDVQQLDAVNaXhJTzEOMAwGA1UEAwwFTWl4SU8wgZ8wDQYJKoZIhvcN
AQEBBQADgY0AMIGJAoGBAM3xzY1n5V05vAZbYniDbMoNXCzgL5puebmV2mIkMAHv
QnhMZHv2O938ezFae0l3A6zRkhWgX4XLmGUwKria3xCC9E0soF2wM0JfIFpDIQ5g
WnixtCiI8MjV8hXQ0Nh1hJ0MMwEX6g72N/YyH5Y/P9lsmr6OiG7dXe4oyaROY/U5
AgMBAAEwDQYJKoZIhvcNAQELBQADgYEASvGJMK+h09mGCsza7h2ieVe75ogbG/nK
+c7KYYOBR2OXTNk90Od+2tJog5hJl8M1nRDHdOEPgTPDYKVz0hXjJBZnM5NtcoYS
pq6vf83MtY8polmly/EZsZqiVPaEsH97nniRoMOP4JdyKlqU2g94yFDUiTTZW4cS
iURo4pW8gRE=
-----END CERTIFICATE-----
`
fs.writeFileSync("config/certs/file.crt", defaultCrt)
var defaultPem =
`-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAM3xzY1n5V05vAZb
YniDbMoNXCzgL5puebmV2mIkMAHvQnhMZHv2O938ezFae0l3A6zRkhWgX4XLmGUw
Kria3xCC9E0soF2wM0JfIFpDIQ5gWnixtCiI8MjV8hXQ0Nh1hJ0MMwEX6g72N/Yy
H5Y/P9lsmr6OiG7dXe4oyaROY/U5AgMBAAECgYB8zETFpeoF/lCEgahAY1PvdP0g
bJIsQToeTkLSKh+1bGmZQKG7xNEuiiuVEsGXGTnu5ehilpaMG340A2ZADAmTf552
Zr7AHSWmg4YEEykihSoJ2owfmqamm5Fsyoe/oxijsWwXAiZIv6VkDznchnQ+1I/w
Ioyigp+dHbHS3OjiAQJBAOaDx0XjofpJQe4oCufTIqltomRtxtP4fFbeEbmQrXRt
zNvH6QeKeanA+F4JQGVKcDSt6rz5yi8MqukOpZKBcdkCQQDktp4hfgvCQN8U50t+
izZVImXGb47tfNKCWkNdrVnMI597ad3Qx+NV41oohMV4SFNCA8VgTq2onkhBbRjP
YSJhAkBp9n2t5Nvan75M6d9JfcbbN2iE3emeGwWdMOvY72astKSNCzJVoxQWMnx5
TatqZHN7486aHAES67HM/EykMhjRAkArlooog+clzEs3pqUCpvFh5D5VRSmOJT3R
TfaMwd7dQuTAFnsJsS6oTb3+/t7Lf60uZZ2WLyh1fET1Ax+5Vh/BAkEAlNxqK/DI
Fu1JviGs33vE55YHu4F0u822PUT9XN8NNzFhsvK5Oza+O7Tyyq7WJejR7I8IjzOb
RvSzVsDN3/+4ug==
-----END PRIVATE KEY-----
`
fs.writeFileSync("config/certs/private.pem", defaultPem)
}
if (!fs.existsSync("storage")) {
fs.mkdirSync("storage")
var newDB = new sqlite3.Database("storage/mixio.db", sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, function(err) {
if (err) {
console.log(err)
cb(false)
}
else{
newDB.run(`CREATE TABLE "devices" (
"userName" TEXT,
"clientid" TEXT,
"timestamp" INTEGER DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY("clientid")
)`,function(err){
if(err){
console.log(err)
cb(false)
}
else
{
newDB.run(`CREATE TABLE "project" (
"projectName" TEXT,
"userName" TEXT,
"projectLayout" TEXT,
"dataStorage" TEXT,
"logicStorage" TEXT,
"timestamp" INTEGER DEFAULT CURRENT_TIMESTAMP,
"projectType" INTEGER
)`, function(err){
if(err){
console.log(err)
cb(false)
}
else
{
newDB.run(`CREATE TABLE "share" (
"shareid" TEXT,
"userName" TEXT,
"projectName" TEXT,
"projectLayout" TEXT,
"dataStorage" TEXT,
"logicStorage" TEXT,
"timeStamp" INTEGER DEFAULT CURRENT_TIMESTAMP,
"status" INTEGER DEFAULT 1,
"shareCount" INTEGER DEFAULT 0
)`, function(err){
if(err){
console.log(err)
cb(false)
}
else
{
newDB.run(`CREATE TABLE "share_key" (
"userName" TEXT,
"projectPass" TEXT,
"projectName" TEXT,
"share_key" TEXT
)`, function(err){
if(err)
{
console.log(err)
cb(false)
}
else
{
newDB.run(`CREATE TABLE "user" (
"id" INTEGER,
"username" TEXT,
"password" TEXT,
"salt" TEXT,
"is_superuser" INTEGER DEFAULT 0,
"verified" INTEGER DEFAULT 1,
"question" TEXT,
"answer" TEXT,
PRIMARY KEY("id" AUTOINCREMENT)
)`, function(err){
if(err)
{
console.log(err)
cb(false)
}
else
{
newDB.close()
fs.mkdirSync("storage/reserve")
fs.writeFileSync("storage/reserve/filter.json", "{}")
var newDB1 = new sqlite3.Database("storage/reserve/1.db", sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, function(err) {
if(err)
{
console.log(err)
cb(false)
}
else
{
newDB1.run(`CREATE TABLE "reserve" (
"id" INTEGER,
"userName" TEXT NOT NULL,
"topic" TEXT NOT NULL,
"message" TEXT NOT NULL,
"time" INTEGER DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY("id" AUTOINCREMENT)
)`, function(err){
if(err)
{
console.log(err)
cb(false)
}
else
{
newDB1.close()
for(var i = 2;i<=8;i = i+1){
fs.copyFileSync("storage/reserve/1.db","storage/reserve/" + i + ".db")
}
cb(true)
}
})
}
})
}
})
}
})
}
})
}
})
}
})
}
})
}
else
cb(true)
}
var mysql = require('mysql8'); var mysql = require('mysql8');
var MYSQL_HOST = configs["MYSQL_HOST"]
var MYSQL_USER = configs["MYSQL_USER"]
var MYSQL_PASS = configs["MYSQL_PASS"]
var MYSQL_DB = configs["MYSQL_DB"]
var MYSQL_PORT = configs["MYSQL_PORT"]
var MAX_MESSAGE_PER_USER = configs["MAX_MESSAGE_PER_USER"]
var MAX_MESSAGE_PER_SECOND = configs["MAX_MESSAGE_PER_SECOND"]
var serverStatus = true var serverStatus = true
var globalWeather = {} var globalWeather = {}
@@ -1845,132 +2032,238 @@ async function startOnce() {
} }
const args = process.argv.slice(2) const args = process.argv.slice(2)
if (args.length != 1) {
console.log("Invalid parameter(s). Use \"mixio help\" for help.")
} else {
if (args[0] == "debug")
{
daemon_start()
startOnce()
}
else if (args[0] == "start")
{
var parent_exit = function(child){
var logFile = fs.openSync(logFileName, 'r')
while(true){
// check log file for database connection
var data = fs.readFileSync(logFile, 'utf8')
if(data[data.length-1] == "\n")
data = data.slice(0, -1)
if(data!="")
console.log(data)
if(data.toString().indexOf("Database Connected!") != -1)
{
console.log("MixIO server is running now.")
child.unref()
process.exit()
}
else if(data.toString().indexOf("Error") != -1)
{
console.error("An error occured while initializing MixIO server. Log file: " + process.cwd() + logFileName)
child.unref()
process.exit()
}
}
}
// child process to run 'mixio' in background
var logFile = fs.openSync(logFileName, 'a')
if(process.argv[0].indexOf("node") != -1)
{
var child = spawn(process.argv[0], [process.argv[1], "debug"], { detached: true , stdio:['ignore', logFile, logFile]})
parent_exit(child)
}
else
{
var child = spawn(process.argv[0], [process.argv[1], "debug"], { detached: true , stdio:['ignore', logFile, logFile]})
parent_exit(child)
}
} var startMixIO = function(){
else if (args[0] == "stop") var parent_exit = function(child){
{ var logFile = fs.openSync(logFileName, 'r')
// kill 'mixio' process if it is running while(true){
if(process.argv[0].indexOf("node") != -1) // check log file for database connection
{ var data = fs.readFileSync(logFile, 'utf8')
if(process.platform == "win32") if(data[data.length-1] == "\n")
data = data.slice(0, -1)
if(data!="")
console.log(data)
if(data.toString().indexOf("Database Connected!") != -1)
{ {
console.log("Shutting down MixIO server...") console.log("MixIO server is running now.")
exec('taskkill /F /IM node.exe', function(err, stdout, stderr) { child.unref()
if (err) { for (var t = Date.now(); Date.now() - t <= 2000;);
console.log(err) process.exit()
}
})
} }
else else if(data.toString().indexOf("Error") != -1)
{ {
console.log("Shutting down MixIO server...") console.error("An error occured while initializing MixIO server. Log file: " + process.cwd() + logFileName)
exec('pkill node', function(err, stdout, stderr) { child.unref()
if (err) { for (var t = Date.now(); Date.now() - t <= 2000;);
console.log(err) process.exit()
}
})
}
}
else
{
if(process.platform == "win32")
{
console.log("Shutting down MixIO server...")
exec('taskkill /F /IM mixio.exe', function(err, stdout, stderr) {
if (err) {
console.log(err)
}
})
}
else
{
console.log("Shutting down MixIO server...")
exec('pkill mixio', function(err, stdout, stderr) {
if (err) {
console.log(err)
}
})
} }
} }
} }
else if (args[0] == "version") // child process to run 'mixio' in background
var logFile = fs.openSync(logFileName, 'a')
if(process.argv[0].indexOf("node") != -1)
{ {
console.log(fs.readFileSync("version.json", "utf8")) var child = spawn(process.argv[0], [process.argv[1], "debug"], { detached: true , stdio:['ignore', logFile, logFile]})
} parent_exit(child)
else if (args[0] == "update")
{
// use git
console.log("Updating MixIO server...")
exec('git pull', function(err, stdout, stderr) {
if (err) {
console.log(err)
}
else
{
console.log("Update finished.")
}
})
}
else if (args[0] == "help")
{
console.log("MixIO server help:")
console.log("mixio start: start MixIO server in background.")
console.log("mixio stop: stop MixIO server.")
console.log("mixio debug: start MixIO server in foreground.")
console.log("mixio version: show MixIO server version.")
console.log("mixio update: update MixIO server.")
} }
else else
{ {
console.log("Invalid parameter(s). Use \"mixio help\" for help.") var child = spawn(process.argv[0], [process.argv[1], "debug"], { detached: true , stdio:['ignore', logFile, logFile]})
parent_exit(child)
} }
} }
var stopMixIO = function(){
// kill 'mixio' process if it is running
if(process.argv[0].indexOf("node") != -1)
{
if(process.platform == "win32")
{
console.log("Shutting down MixIO server...")
exec('taskkill /F /IM node.exe', function(err, stdout, stderr) {
if (err) {
console.log(err)
}
})
}
else
{
console.log("Shutting down MixIO server...")
exec('pkill node', function(err, stdout, stderr) {
if (err) {
console.log(err)
}
})
}
}
else
{
if(process.platform == "win32")
{
console.log("Shutting down MixIO server...")
exec('taskkill /F /IM mixio.exe', function(err, stdout, stderr) {
if (err) {
console.log(err)
}
})
}
else
{
console.log("Shutting down MixIO server...")
exec('pkill mixio', function(err, stdout, stderr) {
if (err) {
console.log(err)
}
})
}
}
}
init(function(res){
if(res)
{
configPath = "config/config.json"
configs = fs.readFileSync(configPath);
configs = JSON.parse(configs.toString());
STORAGE_ENGINE = configs["STORAGE_ENGINE"]
MYSQL_HOST = configs["MYSQL_HOST"]
MYSQL_USER = configs["MYSQL_USER"]
MYSQL_PASS = configs["MYSQL_PASS"]
MYSQL_DB = configs["MYSQL_DB"]
MYSQL_PORT = configs["MYSQL_PORT"]
MAX_MESSAGE_PER_USER = configs["MAX_MESSAGE_PER_USER"]
MAX_MESSAGE_PER_SECOND = configs["MAX_MESSAGE_PER_SECOND"]
if (args.length > 1 || (args.length == 0 && process.platform != "win32")) {
console.log("Invalid parameter(s). Use \"mixio help\" for help.")
} else {
var show = function(){
if(args.length == 0){
// wait for user input, 1 for start, 2 for stop, 3 for autoStart, 4 for remove autoStart
console.log("1. Start MixIO server")
console.log("2. Stop MixIO server")
console.log("3. Set MixIO server to auto start")
console.log("4. Remove MixIO server from auto start")
console.log("5. Exit")
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
rl.question("Please select an option: ", function(answer) {
rl.close()
if (answer == "1") {
startMixIO()
} else if (answer == "2") {
stopMixIO()
} else if (answer == "3") {
var child = spawn("schtasks", ["/create", "/sc", "onlogon", "/tn", "MixIO", "/tr", process.execPath + " start", "/rl", "highest", "/f"])
child.stdout.on('data', function(data) {
// encode to ANSI
console.log(iconv.decode(data, 'cp936').toString())
})
child.stderr.on('data', function(data) {
// encode to ANSI
console.log(iconv.decode(data, 'cp936').toString())
})
child.on("close", function() {
show();
})
} else if (answer == "4") {
var child = spawn("schtasks", ["/delete", "/tn", "MixIO", "/f"])
child.stdout.on('data', function(data) {
// encode to ANSI
console.log(iconv.decode(data, 'cp936').toString())
})
child.stderr.on('data', function(data) {
// encode to ANSI
console.log(iconv.decode(data, 'cp936').toString())
})
child.on("close", function() {
show();
})
} else if (answer == "5") {
process.exit()
} else {
console.log("Invalid option.")
}
})
}
else if (args[0] == "debug")
{
if(res){
daemon_start()
startOnce()
}
}
else if (args[0] == "start")
{
startMixIO()
}
else if (args[0] == "stop")
{
stopMixIO()
}
else if (args[0] == "version")
{
console.log(VERSION)
}
else if (args[0] == "install" && process.platform == "linux")
{
var install_shell = `
service="
[UNIT]
Description=MixIO.Service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=forking
Restart=always
RestartSec=1
WorkingDirectory="`+ process.argv[0].slice(0,process.argv[0].lastIndexOf("/"))+`"
ExecStart=`+ process.argv[0].slice(0,process.argv[0].lastIndexOf("/"))+`/mixio start
ExecStop=`+ process.argv[0].slice(0,process.argv[0].lastIndexOf("/"))+`/mixio stop
[Install]
WantedBy=multi-user.target
"
echo "${service}" > /etc/systemd/system/mixio.service
`
//exec shell
exec(install_shell, function(err, stdout){
if(err)
console.log(err)
else
console.log(stdout)
})
}
else if (args[0] == "help")
{
console.log("MixIO server help:")
console.log("mixio start: start MixIO server in background.")
console.log("mixio stop: stop MixIO server.")
console.log("mixio debug: start MixIO server in foreground.")
console.log("mixio version: show MixIO server version.")
if(process.platform == "linux")
console.log("mixio install: install MixIO service.")
}
else
{
console.log("Invalid parameter(s). Use \"mixio help\" for help.")
}
}
show();
}
}
})
//MixIO //MixIO

199
package-lock.json generated
View File

@@ -13,12 +13,15 @@
"express": "^4.17.2", "express": "^4.17.2",
"express-session": "^1.17.2", "express-session": "^1.17.2",
"forever-monitor": "^3.0.3", "forever-monitor": "^3.0.3",
"fs-extra": "^11.1.0",
"iconv-lite": "^0.6.3",
"jquery": "^3.6.0", "jquery": "^3.6.0",
"js-md5": "^0.7.3", "js-md5": "^0.7.3",
"jsdom": "^19.0.0", "jsdom": "^19.0.0",
"mqtt": "^4.3.7", "mqtt": "^4.3.7",
"mysql8": "^2.17.3", "mysql8": "^2.17.3",
"net": "^1.0.2", "net": "^1.0.2",
"readline": "^1.3.0",
"sqlite3": "^5.0.2", "sqlite3": "^5.0.2",
"websocket-stream": "^5.5.2" "websocket-stream": "^5.5.2"
}, },
@@ -633,7 +636,7 @@
}, },
"node_modules/at-least-node": { "node_modules/at-least-node": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
"dev": true, "dev": true,
"engines": { "engines": {
@@ -755,6 +758,17 @@
"ms": "2.0.0" "ms": "2.0.0"
} }
}, },
"node_modules/body-parser/node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/brace-expansion": { "node_modules/brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -1429,18 +1443,6 @@
"iconv-lite": "^0.6.2" "iconv-lite": "^0.6.2"
} }
}, },
"node_modules/encoding/node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"optional": true,
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/end-of-stream": { "node_modules/end-of-stream": {
"version": "1.4.4", "version": "1.4.4",
"resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -2073,18 +2075,16 @@
"dev": true "dev": true
}, },
"node_modules/fs-extra": { "node_modules/fs-extra": {
"version": "9.1.0", "version": "11.1.0",
"resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==",
"dev": true,
"dependencies": { "dependencies": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0", "graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1", "jsonfile": "^6.0.1",
"universalify": "^2.0.0" "universalify": "^2.0.0"
}, },
"engines": { "engines": {
"node": ">=10" "node": ">=14.14"
} }
}, },
"node_modules/fs-minipass": { "node_modules/fs-minipass": {
@@ -2386,11 +2386,11 @@
} }
}, },
"node_modules/iconv-lite": { "node_modules/iconv-lite": {
"version": "0.4.24", "version": "0.6.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dependencies": { "dependencies": {
"safer-buffer": ">= 2.1.2 < 3" "safer-buffer": ">= 2.1.2 < 3.0.0"
}, },
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
@@ -2761,7 +2761,6 @@
"version": "6.1.0", "version": "6.1.0",
"resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"dependencies": { "dependencies": {
"universalify": "^2.0.0" "universalify": "^2.0.0"
}, },
@@ -3909,6 +3908,36 @@
"pkg-fetch": "lib-es5/bin.js" "pkg-fetch": "lib-es5/bin.js"
} }
}, },
"node_modules/pkg-fetch/node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true,
"dependencies": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/pkg/node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true,
"dependencies": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/posix-character-classes": { "node_modules/posix-character-classes": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
@@ -4093,6 +4122,17 @@
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/raw-body/node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/rc": { "node_modules/rc": {
"version": "1.2.8", "version": "1.2.8",
"resolved": "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz", "resolved": "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz",
@@ -4161,6 +4201,11 @@
"safe-buffer": "~5.1.0" "safe-buffer": "~5.1.0"
} }
}, },
"node_modules/readline": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
"integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
},
"node_modules/regex-not": { "node_modules/regex-not": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz", "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz",
@@ -5216,7 +5261,6 @@
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true,
"engines": { "engines": {
"node": ">= 10.0.0" "node": ">= 10.0.0"
} }
@@ -5438,17 +5482,6 @@
"node": ">=12" "node": ">=12"
} }
}, },
"node_modules/whatwg-encoding/node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/whatwg-mimetype": { "node_modules/whatwg-mimetype": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
@@ -6177,7 +6210,7 @@
}, },
"at-least-node": { "at-least-node": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
"dev": true "dev": true
}, },
@@ -6275,6 +6308,14 @@
"requires": { "requires": {
"ms": "2.0.0" "ms": "2.0.0"
} }
},
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
} }
} }
}, },
@@ -6818,17 +6859,6 @@
"optional": true, "optional": true,
"requires": { "requires": {
"iconv-lite": "^0.6.2" "iconv-lite": "^0.6.2"
},
"dependencies": {
"iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"optional": true,
"requires": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
}
}
} }
}, },
"end-of-stream": { "end-of-stream": {
@@ -7360,12 +7390,10 @@
"dev": true "dev": true
}, },
"fs-extra": { "fs-extra": {
"version": "9.1.0", "version": "11.1.0",
"resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==",
"dev": true,
"requires": { "requires": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0", "graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1", "jsonfile": "^6.0.1",
"universalify": "^2.0.0" "universalify": "^2.0.0"
@@ -7618,11 +7646,11 @@
} }
}, },
"iconv-lite": { "iconv-lite": {
"version": "0.4.24", "version": "0.6.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"requires": { "requires": {
"safer-buffer": ">= 2.1.2 < 3" "safer-buffer": ">= 2.1.2 < 3.0.0"
} }
}, },
"ieee754": { "ieee754": {
@@ -7915,7 +7943,6 @@
"version": "6.1.0", "version": "6.1.0",
"resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"requires": { "requires": {
"graceful-fs": "^4.1.6", "graceful-fs": "^4.1.6",
"universalify": "^2.0.0" "universalify": "^2.0.0"
@@ -8793,6 +8820,20 @@
"prebuild-install": "6.1.4", "prebuild-install": "6.1.4",
"resolve": "^1.22.0", "resolve": "^1.22.0",
"stream-meter": "^1.0.4" "stream-meter": "^1.0.4"
},
"dependencies": {
"fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true,
"requires": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
}
}
} }
}, },
"pkg-fetch": { "pkg-fetch": {
@@ -8809,6 +8850,20 @@
"semver": "^7.3.5", "semver": "^7.3.5",
"tar-fs": "^2.1.1", "tar-fs": "^2.1.1",
"yargs": "^16.2.0" "yargs": "^16.2.0"
},
"dependencies": {
"fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true,
"requires": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
}
}
} }
}, },
"posix-character-classes": { "posix-character-classes": {
@@ -8948,6 +9003,16 @@
"http-errors": "2.0.0", "http-errors": "2.0.0",
"iconv-lite": "0.4.24", "iconv-lite": "0.4.24",
"unpipe": "1.0.0" "unpipe": "1.0.0"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
}
} }
}, },
"rc": { "rc": {
@@ -9011,6 +9076,11 @@
} }
} }
}, },
"readline": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
"integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
},
"regex-not": { "regex-not": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz", "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz",
@@ -9872,8 +9942,7 @@
"universalify": { "universalify": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
"dev": true
}, },
"unpipe": { "unpipe": {
"version": "1.0.0", "version": "1.0.0",
@@ -10055,16 +10124,6 @@
"integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
"requires": { "requires": {
"iconv-lite": "0.6.3" "iconv-lite": "0.6.3"
},
"dependencies": {
"iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
}
}
} }
}, },
"whatwg-mimetype": { "whatwg-mimetype": {

View File

@@ -5,12 +5,15 @@
"express": "^4.17.2", "express": "^4.17.2",
"express-session": "^1.17.2", "express-session": "^1.17.2",
"forever-monitor": "^3.0.3", "forever-monitor": "^3.0.3",
"fs-extra": "^11.1.0",
"iconv-lite": "^0.6.3",
"jquery": "^3.6.0", "jquery": "^3.6.0",
"js-md5": "^0.7.3", "js-md5": "^0.7.3",
"jsdom": "^19.0.0", "jsdom": "^19.0.0",
"mqtt": "^4.3.7", "mqtt": "^4.3.7",
"mysql8": "^2.17.3", "mysql8": "^2.17.3",
"net": "^1.0.2", "net": "^1.0.2",
"readline": "^1.3.0",
"sqlite3": "^5.0.2", "sqlite3": "^5.0.2",
"websocket-stream": "^5.5.2" "websocket-stream": "^5.5.2"
}, },

View File

@@ -1,18 +0,0 @@
service="
[Unit]
Description=MixIO Service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=forking
Restart=always
RestartSec=1
WorkingDirectory="$(pwd)"
ExecStart="$(pwd)"/mixio start
ExecStop="$(pwd)"/mixio stop
[Install]
WantedBy=multi-user.target
"
echo "${service}" > /etc/systemd/system/mixio.service

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,2 +0,0 @@
{
}

View File

@@ -5,31 +5,13 @@ version="{
\"platform\":\"win-x64\", \"platform\":\"win-x64\",
\"node-version\":\"16\" \"node-version\":\"16\"
}" }"
gitignore="config/*
logs/*
storage/*
"
cd ../../ cd ../../
rm -rf mixio_win_x64 rm -rf mixio_win_x64
mkdir mixio_win_x64 mkdir mixio_win_x64
cd mixio_win_x64
echo "${version}" > version.json
echo "${gitignore}" > .gitignore
mkdir logs
mkdir storage
mkdir config
cd ../
chmod -R 777 mixio chmod -R 777 mixio
cd mixio cd mixio
npm install npm install
pkg -t node16-win-x64 package.json pkg -t node16-win-x64 package.json
mv -f mixio ../mixio_win_x64/ mv -f mixio ../mixio_win_x64/
cp -r config ../mixio_win_x64/ cd ../
cd pkg_tools
cp win/autoStart.bat ../../mixio_win_x64/
cp win/removeAutoStart.bat ../../mixio_win_x64/
cp win/start.bat ../../mixio_win_x64/
cp mixio.empty.db ../../mixio_win_x64/storage/mixio.db
cp -r reserve ../../mixio_win_x64/storage/
cd ../../
chmod -R 777 mixio_win_x64 chmod -R 777 mixio_win_x64

View File

@@ -1,4 +0,0 @@
@echo off
cd /d %~dp0
reg add hklm\software\microsoft\windows\currentversion\run /v MixIO /t reg_sz /d "%cd%\start.bat"
pause

View File

@@ -1,4 +0,0 @@
@echo off
cd /d %~dp0
reg delete hklm\software\microsoft\windows\currentversion\run /v MixIO
pause

View File

@@ -1,4 +0,0 @@
@echo off
cd /d %~dp0
mixio.exe start
pause

2
storage/.gitignore vendored
View File

@@ -1,2 +0,0 @@
reserve/
mixio.db

View File

@@ -1,5 +0,0 @@
{
"version":"1.10.0",
"platform":"src",
"node-version":"16"
}