mixio 1.10.1
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,2 +1,5 @@
|
|||||||
node_modules/
|
node_modules/
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
storage/
|
||||||
|
logs/
|
||||||
|
config/
|
||||||
@@ -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-----
|
|
||||||
@@ -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-----
|
|
||||||
@@ -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
555
mixio.js
@@ -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
199
package-lock.json
generated
@@ -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": {
|
||||||
|
|||||||
@@ -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"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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.
@@ -1,2 +0,0 @@
|
|||||||
{
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
@echo off
|
|
||||||
cd /d %~dp0
|
|
||||||
reg delete hklm\software\microsoft\windows\currentversion\run /v MixIO
|
|
||||||
pause
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
@echo off
|
|
||||||
cd /d %~dp0
|
|
||||||
mixio.exe start
|
|
||||||
pause
|
|
||||||
2
storage/.gitignore
vendored
2
storage/.gitignore
vendored
@@ -1,2 +0,0 @@
|
|||||||
reserve/
|
|
||||||
mixio.db
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"version":"1.10.0",
|
|
||||||
"platform":"src",
|
|
||||||
"node-version":"16"
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user