nodestatus-server 1.2.0-beta.1 → 1.2.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/app.js +89 -49
- package/build/dist/hotaru-admin/assets/LayoutHandler.b089a58e.js +61 -0
- package/build/dist/hotaru-admin/assets/{Login.c5e63214.js → Login.f0e98411.js} +1 -1
- package/build/dist/hotaru-admin/assets/{UserOutlined.7b9f806f.js → UserOutlined.cd1982fa.js} +1 -1
- package/build/dist/hotaru-admin/assets/{index.428ce2ed.js → index.d444c75b.js} +1 -1
- package/build/dist/hotaru-admin/assets/{vendor.6aba3586.js → vendor.7188e8d8.js} +1 -1
- package/build/dist/hotaru-admin/index.html +2 -2
- package/build/dist/hotaru-theme/assets/index.4ac25127.js +4 -0
- package/build/dist/hotaru-theme/assets/{index.f03b9a48.css → index.73784281.css} +1 -1
- package/build/dist/hotaru-theme/index.html +2 -2
- package/package.json +6 -5
- package/prisma/schema.prisma +10 -0
- package/scripts/init.js +83 -0
- package/build/dist/hotaru-admin/assets/LayoutHandler.a07fa60e.js +0 -61
- package/build/dist/hotaru-theme/assets/index.1aed404b.js +0 -4
- package/scripts/postinstall.js +0 -33
- package/scripts/prestart.js +0 -16
- package/scripts/utils.js +0 -13
package/build/app.js
CHANGED
|
@@ -53260,11 +53260,15 @@ exports.Option = Option;
|
|
|
53260
53260
|
}(commander, commander.exports));
|
|
53261
53261
|
|
|
53262
53262
|
dotenv__default["default"].config({ path: require$$1$1.resolve(require$$1$3.homedir(), ".nodestatus/.env.local") });
|
|
53263
|
-
commander.exports.program.option("-db, --database <db>", "the path of database", require$$1$3.platform() === "win32" ? require$$1$1.resolve(require$$1$3.homedir(), ".nodestatus/db.sqlite") : "
|
|
53263
|
+
commander.exports.program.option("-db, --database <db>", "the path of database", require$$1$3.platform() === "win32" ? `file:${require$$1$1.resolve(require$$1$3.homedir(), ".nodestatus/db.sqlite")}` : "file:/usr/local/NodeStatus/server/db.sqlite").option("-p, --port <port>", "the port of NodeStatus", "35601").option("-i, --interval <interval>", "update interval", "1500").parse(process.argv);
|
|
53264
53264
|
const options = commander.exports.program.opts();
|
|
53265
|
+
let database = process.env.DATABASE || (process.env.NODE_ENV === "TEST" ? require$$1$1.resolve(__dirname, "../../db.base.sqlite") : options.database);
|
|
53266
|
+
if (!(database.includes("file:") || database.includes("mysql:") || database.includes("postgresql:"))) {
|
|
53267
|
+
database = `file:${database}`;
|
|
53268
|
+
}
|
|
53265
53269
|
const config = {
|
|
53266
53270
|
NODE_ENV: process.env.NODE_ENV,
|
|
53267
|
-
database
|
|
53271
|
+
database,
|
|
53268
53272
|
port: Number(process.env.PORT || options.port),
|
|
53269
53273
|
interval: Number(process.env.INTERVAL || options.interval),
|
|
53270
53274
|
verbose: process.env.VERBOSE === "true",
|
|
@@ -54750,11 +54754,11 @@ var bcryptjs = bcrypt.exports;
|
|
|
54750
54754
|
const prisma = new client.PrismaClient({
|
|
54751
54755
|
datasources: {
|
|
54752
54756
|
db: {
|
|
54753
|
-
url:
|
|
54757
|
+
url: `${config.database}`
|
|
54754
54758
|
}
|
|
54755
54759
|
}
|
|
54756
54760
|
});
|
|
54757
|
-
const actions = new Set(["create", "createMany", "update", "updateMany", "upsert"]);
|
|
54761
|
+
const actions = /* @__PURE__ */ new Set(["create", "createMany", "update", "updateMany", "upsert"]);
|
|
54758
54762
|
const parseFields = async (server) => {
|
|
54759
54763
|
for (const key in server) {
|
|
54760
54764
|
if (server[key] === "") {
|
|
@@ -54778,7 +54782,7 @@ prisma.$use(async (params, next) => {
|
|
|
54778
54782
|
});
|
|
54779
54783
|
|
|
54780
54784
|
let isInitial = true;
|
|
54781
|
-
const orderMap = new Map();
|
|
54785
|
+
const orderMap = /* @__PURE__ */ new Map();
|
|
54782
54786
|
const resolveResult = (item) => {
|
|
54783
54787
|
if (!item)
|
|
54784
54788
|
return item;
|
|
@@ -54786,7 +54790,7 @@ const resolveResult = (item) => {
|
|
|
54786
54790
|
delete item[key];
|
|
54787
54791
|
return Object.assign(item, { order: orderMap.get(item.id) || item.id || 0 });
|
|
54788
54792
|
};
|
|
54789
|
-
const
|
|
54793
|
+
const updateCacheOrder = (order, shouldEmit = true) => {
|
|
54790
54794
|
orderMap.clear();
|
|
54791
54795
|
const orderList = order === "" ? [] : order.split(",");
|
|
54792
54796
|
for (let i = 0; i < orderList.length; ++i) {
|
|
@@ -54801,18 +54805,18 @@ const queryOrder = async () => {
|
|
|
54801
54805
|
}
|
|
54802
54806
|
});
|
|
54803
54807
|
isInitial = false;
|
|
54804
|
-
return
|
|
54808
|
+
return updateCacheOrder(order?.value || "");
|
|
54805
54809
|
};
|
|
54806
|
-
async function
|
|
54810
|
+
async function updateOrder(order, Prisma = prisma) {
|
|
54807
54811
|
const shouldEmit = Prisma === prisma;
|
|
54808
54812
|
await Prisma.option.upsert({
|
|
54809
54813
|
where: { name: "order" },
|
|
54810
54814
|
update: { value: order },
|
|
54811
54815
|
create: { name: "order", value: order }
|
|
54812
54816
|
});
|
|
54813
|
-
|
|
54817
|
+
updateCacheOrder(order, shouldEmit);
|
|
54814
54818
|
}
|
|
54815
|
-
async function
|
|
54819
|
+
async function readServer(username) {
|
|
54816
54820
|
const item = await prisma.server.findUnique({
|
|
54817
54821
|
where: {
|
|
54818
54822
|
username
|
|
@@ -54820,7 +54824,7 @@ async function getServer$1(username) {
|
|
|
54820
54824
|
});
|
|
54821
54825
|
return resolveResult(item);
|
|
54822
54826
|
}
|
|
54823
|
-
async function
|
|
54827
|
+
async function readServerPassword(username) {
|
|
54824
54828
|
const item = await prisma.server.findUnique({
|
|
54825
54829
|
where: {
|
|
54826
54830
|
username
|
|
@@ -54828,7 +54832,7 @@ async function getServerPassword(username) {
|
|
|
54828
54832
|
});
|
|
54829
54833
|
return item?.password || null;
|
|
54830
54834
|
}
|
|
54831
|
-
async function
|
|
54835
|
+
async function readServersList() {
|
|
54832
54836
|
const queries = [prisma.server.findMany()];
|
|
54833
54837
|
isInitial && queries.push(queryOrder());
|
|
54834
54838
|
const [items] = await Promise.all(queries);
|
|
@@ -54839,7 +54843,7 @@ async function createServer(item) {
|
|
|
54839
54843
|
const server = await prisma2.server.create({ data: item });
|
|
54840
54844
|
const order = Array.from(orderMap.keys());
|
|
54841
54845
|
order.push(server.id);
|
|
54842
|
-
await
|
|
54846
|
+
await updateOrder(order.join(","), prisma2);
|
|
54843
54847
|
});
|
|
54844
54848
|
emitter.emit("update", item.username);
|
|
54845
54849
|
}
|
|
@@ -54848,11 +54852,11 @@ async function bulkCreateServer(items) {
|
|
|
54848
54852
|
const order = [];
|
|
54849
54853
|
await Promise.all(items.map((item) => prisma2.server.create({ data: item }).then((server) => order.push(server.id))));
|
|
54850
54854
|
const newOrder = Array.from(orderMap.keys()).concat(order);
|
|
54851
|
-
await
|
|
54855
|
+
await updateOrder(newOrder.join(","), prisma2);
|
|
54852
54856
|
});
|
|
54853
54857
|
emitter.emit("update");
|
|
54854
54858
|
}
|
|
54855
|
-
async function
|
|
54859
|
+
async function deleteServer(username) {
|
|
54856
54860
|
await prisma.$transaction(async (prisma2) => {
|
|
54857
54861
|
const server = await prisma2.server.delete({
|
|
54858
54862
|
where: {
|
|
@@ -54860,11 +54864,11 @@ async function delServer$2(username) {
|
|
|
54860
54864
|
}
|
|
54861
54865
|
});
|
|
54862
54866
|
orderMap.delete(server.id);
|
|
54863
|
-
await
|
|
54867
|
+
await updateOrder(Array.from(orderMap.keys()).join(","), prisma2);
|
|
54864
54868
|
});
|
|
54865
54869
|
emitter.emit("update", username, true);
|
|
54866
54870
|
}
|
|
54867
|
-
async function
|
|
54871
|
+
async function updateServer(username, obj) {
|
|
54868
54872
|
await prisma.server.update({
|
|
54869
54873
|
where: {
|
|
54870
54874
|
username
|
|
@@ -54876,6 +54880,24 @@ async function setServer$2(username, obj) {
|
|
|
54876
54880
|
obj.username && emitter.emit("update", obj.username, true);
|
|
54877
54881
|
}
|
|
54878
54882
|
|
|
54883
|
+
const createEvent = (username) => prisma.event.create({
|
|
54884
|
+
data: {
|
|
54885
|
+
username
|
|
54886
|
+
}
|
|
54887
|
+
});
|
|
54888
|
+
const updateEvent = (username, resolved = true) => prisma.event.updateMany({
|
|
54889
|
+
where: {
|
|
54890
|
+
AND: [
|
|
54891
|
+
{ username },
|
|
54892
|
+
{ resolved: false }
|
|
54893
|
+
]
|
|
54894
|
+
},
|
|
54895
|
+
data: {
|
|
54896
|
+
resolved
|
|
54897
|
+
}
|
|
54898
|
+
});
|
|
54899
|
+
const readEvents = () => prisma.event.findMany({});
|
|
54900
|
+
|
|
54879
54901
|
async function handleRequest$1(ctx, handler) {
|
|
54880
54902
|
try {
|
|
54881
54903
|
ctx.body = createRes({ data: await handler });
|
|
@@ -54884,8 +54906,8 @@ async function handleRequest$1(ctx, handler) {
|
|
|
54884
54906
|
ctx.body = createRes(1, err.message);
|
|
54885
54907
|
}
|
|
54886
54908
|
}
|
|
54887
|
-
const
|
|
54888
|
-
await handleRequest$1(ctx,
|
|
54909
|
+
const getListServers$1 = async (ctx) => {
|
|
54910
|
+
await handleRequest$1(ctx, readServersList().then((data) => data.sort((x, y) => y.order - x.order)));
|
|
54889
54911
|
};
|
|
54890
54912
|
const setServer$1 = async (ctx) => {
|
|
54891
54913
|
const { username } = ctx.request.body;
|
|
@@ -54897,7 +54919,7 @@ const setServer$1 = async (ctx) => {
|
|
|
54897
54919
|
}
|
|
54898
54920
|
if (username === data.username)
|
|
54899
54921
|
delete data.username;
|
|
54900
|
-
await handleRequest$1(ctx,
|
|
54922
|
+
await handleRequest$1(ctx, updateServer(username, data));
|
|
54901
54923
|
};
|
|
54902
54924
|
const addServer$1 = async (ctx) => {
|
|
54903
54925
|
const data = ctx.request.body;
|
|
@@ -54918,33 +54940,37 @@ const addServer$1 = async (ctx) => {
|
|
|
54918
54940
|
await handleRequest$1(ctx, createServer(data));
|
|
54919
54941
|
}
|
|
54920
54942
|
};
|
|
54921
|
-
const
|
|
54943
|
+
const removeServer$1 = async (ctx) => {
|
|
54922
54944
|
const { username = "" } = ctx.params;
|
|
54923
54945
|
if (!username) {
|
|
54924
54946
|
ctx.status = 400;
|
|
54925
54947
|
ctx.body = createRes(1, "Wrong request");
|
|
54926
54948
|
return;
|
|
54927
54949
|
}
|
|
54928
|
-
await handleRequest$1(ctx,
|
|
54950
|
+
await handleRequest$1(ctx, deleteServer(username));
|
|
54929
54951
|
};
|
|
54930
54952
|
const modifyOrder = async (ctx) => {
|
|
54931
|
-
const { order =
|
|
54932
|
-
if (!order) {
|
|
54953
|
+
const { order = [] } = ctx.request.body;
|
|
54954
|
+
if (!order.length) {
|
|
54933
54955
|
ctx.status = 400;
|
|
54934
54956
|
ctx.body = createRes(1, "Wrong request");
|
|
54935
54957
|
return;
|
|
54936
54958
|
}
|
|
54937
|
-
await handleRequest$1(ctx,
|
|
54959
|
+
await handleRequest$1(ctx, updateOrder(order.join(",")));
|
|
54960
|
+
};
|
|
54961
|
+
const queryEvents = async (ctx) => {
|
|
54962
|
+
await handleRequest$1(ctx, readEvents());
|
|
54938
54963
|
};
|
|
54939
54964
|
|
|
54940
54965
|
const router = new router$1({ prefix: "/api" });
|
|
54941
54966
|
router.get("/session", verifySession);
|
|
54942
54967
|
router.post("/session", createSession);
|
|
54943
|
-
router.get("/server",
|
|
54968
|
+
router.get("/server", getListServers$1);
|
|
54944
54969
|
router.post("/server", addServer$1);
|
|
54945
54970
|
router.put("/server", setServer$1);
|
|
54946
54971
|
router.put("/server/order", modifyOrder);
|
|
54947
|
-
router.delete("/server/:username",
|
|
54972
|
+
router.delete("/server/:username", removeServer$1);
|
|
54973
|
+
router.get("/event", queryEvents);
|
|
54948
54974
|
|
|
54949
54975
|
var bufferUtil$1 = {exports: {}};
|
|
54950
54976
|
|
|
@@ -61287,7 +61313,7 @@ async function handleRequest(handler) {
|
|
|
61287
61313
|
return createRes({ data });
|
|
61288
61314
|
}
|
|
61289
61315
|
async function authServer(username, password) {
|
|
61290
|
-
const res = await handleRequest(
|
|
61316
|
+
const res = await handleRequest(readServerPassword(username));
|
|
61291
61317
|
if (res.code || !res.data)
|
|
61292
61318
|
return false;
|
|
61293
61319
|
return bcryptjs.compare(password, res.data);
|
|
@@ -61296,13 +61322,13 @@ function addServer(obj) {
|
|
|
61296
61322
|
return handleRequest(createServer(obj));
|
|
61297
61323
|
}
|
|
61298
61324
|
function setServer(username, obj) {
|
|
61299
|
-
return handleRequest(
|
|
61325
|
+
return handleRequest(updateServer(username, obj));
|
|
61300
61326
|
}
|
|
61301
|
-
function
|
|
61302
|
-
return handleRequest(
|
|
61327
|
+
function removeServer(username) {
|
|
61328
|
+
return handleRequest(deleteServer(username));
|
|
61303
61329
|
}
|
|
61304
61330
|
async function getListServers() {
|
|
61305
|
-
const result = await handleRequest(
|
|
61331
|
+
const result = await handleRequest(readServersList());
|
|
61306
61332
|
if (result.code)
|
|
61307
61333
|
return result;
|
|
61308
61334
|
const obj = {};
|
|
@@ -61315,7 +61341,7 @@ async function getListServers() {
|
|
|
61315
61341
|
return createRes({ data: obj });
|
|
61316
61342
|
}
|
|
61317
61343
|
async function getServer(username) {
|
|
61318
|
-
const result = await handleRequest(
|
|
61344
|
+
const result = await handleRequest(readServer(username));
|
|
61319
61345
|
if (result.code || !result.data)
|
|
61320
61346
|
return result;
|
|
61321
61347
|
const { data } = result;
|
|
@@ -61325,7 +61351,13 @@ async function getServer(username) {
|
|
|
61325
61351
|
return createRes({ data: item });
|
|
61326
61352
|
}
|
|
61327
61353
|
function getRawListServers() {
|
|
61328
|
-
return handleRequest(
|
|
61354
|
+
return handleRequest(readServersList());
|
|
61355
|
+
}
|
|
61356
|
+
function createNewEvent(username) {
|
|
61357
|
+
return handleRequest(createEvent(username));
|
|
61358
|
+
}
|
|
61359
|
+
function resolveEvent(username) {
|
|
61360
|
+
return handleRequest(updateEvent(username, true));
|
|
61329
61361
|
}
|
|
61330
61362
|
|
|
61331
61363
|
function callHook(instance, hook, ...args) {
|
|
@@ -61338,14 +61370,20 @@ function callHook(instance, hook, ...args) {
|
|
|
61338
61370
|
}
|
|
61339
61371
|
}
|
|
61340
61372
|
class NodeStatus {
|
|
61373
|
+
options;
|
|
61374
|
+
server;
|
|
61375
|
+
ioPub = new ws.Server({ noServer: true });
|
|
61376
|
+
ioConn = new ws.Server({ noServer: true });
|
|
61377
|
+
ipMap = new WeakMap();
|
|
61378
|
+
userMap = /* @__PURE__ */ new Map();
|
|
61379
|
+
isBanned = /* @__PURE__ */ new Map();
|
|
61380
|
+
servers = {};
|
|
61381
|
+
serversPub = [];
|
|
61382
|
+
onServerConnect;
|
|
61383
|
+
onServerBanned;
|
|
61384
|
+
onServerConnected;
|
|
61385
|
+
onServerDisconnected;
|
|
61341
61386
|
constructor(server, options) {
|
|
61342
|
-
this.ioPub = new ws.Server({ noServer: true });
|
|
61343
|
-
this.ioConn = new ws.Server({ noServer: true });
|
|
61344
|
-
this.ipMap = new WeakMap();
|
|
61345
|
-
this.userMap = new Map();
|
|
61346
|
-
this.isBanned = new Map();
|
|
61347
|
-
this.servers = {};
|
|
61348
|
-
this.serversPub = [];
|
|
61349
61387
|
this.server = server;
|
|
61350
61388
|
this.options = options;
|
|
61351
61389
|
emitter.on("update", this.updateStatus.bind(this));
|
|
@@ -61417,12 +61455,14 @@ class NodeStatus {
|
|
|
61417
61455
|
}
|
|
61418
61456
|
socket.send(`You are connecting via: ${ipType}`);
|
|
61419
61457
|
logger.info(`${address} has connected to server`);
|
|
61458
|
+
resolveEvent(username).then();
|
|
61420
61459
|
socket.on("message", (buf2) => this.servers[username].status = decode(buf2));
|
|
61421
61460
|
this.userMap.set(username, socket);
|
|
61422
61461
|
callHook(this, "onServerConnected", socket, username);
|
|
61423
61462
|
socket.once("close", () => {
|
|
61424
61463
|
this.userMap.delete(username);
|
|
61425
61464
|
this.servers[username] && (this.servers[username].status = {});
|
|
61465
|
+
createNewEvent(username).then();
|
|
61426
61466
|
logger.warn(`${address} disconnected`);
|
|
61427
61467
|
callHook(this, "onServerDisconnected", socket, username);
|
|
61428
61468
|
});
|
|
@@ -61501,7 +61541,7 @@ function createIpc() {
|
|
|
61501
61541
|
break;
|
|
61502
61542
|
}
|
|
61503
61543
|
case "del": {
|
|
61504
|
-
const status = await
|
|
61544
|
+
const status = await removeServer(payload);
|
|
61505
61545
|
client.write(JSON.stringify(status));
|
|
61506
61546
|
break;
|
|
61507
61547
|
}
|
|
@@ -62000,8 +62040,8 @@ var dist = createHttpsProxyAgent;
|
|
|
62000
62040
|
|
|
62001
62041
|
function createPush(options) {
|
|
62002
62042
|
const pushList = [];
|
|
62003
|
-
const timerMap = new Map();
|
|
62004
|
-
const entities = new Set(["_", "*", "[", "]", "(", ")", "~", "`", ">", "#", "+", "-", "=", "|", "{", "}", ".", "!", "\\"]);
|
|
62043
|
+
const timerMap = /* @__PURE__ */ new Map();
|
|
62044
|
+
const entities = /* @__PURE__ */ new Set(["_", "*", "[", "]", "(", ")", "~", "`", ">", "#", "+", "-", "=", "|", "{", "}", ".", "!", "\\"]);
|
|
62005
62045
|
const parseEntities = (msg) => {
|
|
62006
62046
|
let str;
|
|
62007
62047
|
if (typeof msg !== "string")
|
|
@@ -62037,15 +62077,15 @@ function createPush(options) {
|
|
|
62037
62077
|
str += "\n\n";
|
|
62038
62078
|
return;
|
|
62039
62079
|
}
|
|
62040
|
-
str += `\
|
|
62080
|
+
str += `\u8D1F\u8F7D: ${parseEntities(item.status.load.toFixed(2))}
|
|
62041
62081
|
`;
|
|
62042
|
-
str +=
|
|
62082
|
+
str += `CPU: ${Math.round(item.status.cpu)}%
|
|
62043
62083
|
`;
|
|
62044
|
-
str += `\
|
|
62084
|
+
str += `\u5185\u5B58: ${Math.round(item.status.memory_used / item.status.memory_total * 100)}%
|
|
62045
62085
|
`;
|
|
62046
|
-
str += `\
|
|
62086
|
+
str += `\u786C\u76D8: ${Math.round(item.status.hdd_used / item.status.hdd_total * 100)}%
|
|
62047
62087
|
`;
|
|
62048
|
-
str += "\n
|
|
62088
|
+
str += "\n";
|
|
62049
62089
|
});
|
|
62050
62090
|
return `\u{1F34A}*NodeStatus*
|
|
62051
62091
|
\u{1F916} \u5F53\u524D\u6709 ${this.serversPub.length} \u53F0\u670D\u52A1\u5668, \u5176\u4E2D\u5728\u7EBF ${online} \u53F0
|