|
|
@ -5,13 +5,13 @@ const server = http.createServer(app); |
|
|
|
const { Server } = require("socket.io"); |
|
|
|
const io = new Server(server); |
|
|
|
const dayjs = require("dayjs"); |
|
|
|
const {R} = require("redbean-node"); |
|
|
|
const { R } = require("redbean-node"); |
|
|
|
const passwordHash = require('password-hash'); |
|
|
|
const jwt = require('jsonwebtoken'); |
|
|
|
const Monitor = require("./model/monitor"); |
|
|
|
const fs = require("fs"); |
|
|
|
const {getSettings} = require("./util-server"); |
|
|
|
const {Notification} = require("./notification") |
|
|
|
const { getSettings } = require("./util-server"); |
|
|
|
const { Notification } = require("./notification") |
|
|
|
const args = require('args-parser')(process.argv); |
|
|
|
|
|
|
|
const version = require('../package.json').version; |
|
|
@ -30,7 +30,7 @@ let needSetup = false; |
|
|
|
|
|
|
|
app.use('/', express.static("dist")); |
|
|
|
|
|
|
|
app.get('*', function(request, response, next) { |
|
|
|
app.get('*', function (request, response, next) { |
|
|
|
response.sendFile(process.cwd() + '/dist/index.html'); |
|
|
|
}); |
|
|
|
|
|
|
@ -190,7 +190,7 @@ let needSetup = false; |
|
|
|
try { |
|
|
|
checkLogin(socket) |
|
|
|
|
|
|
|
let bean = await R.findOne("monitor", " id = ? ", [ monitor.id ]) |
|
|
|
let bean = await R.findOne("monitor", " id = ? ", [monitor.id]) |
|
|
|
|
|
|
|
if (bean.user_id !== socket.userID) { |
|
|
|
throw new Error("Permission denied.") |
|
|
@ -328,7 +328,7 @@ let needSetup = false; |
|
|
|
try { |
|
|
|
checkLogin(socket) |
|
|
|
|
|
|
|
if (! password.currentPassword) { |
|
|
|
if (!password.currentPassword) { |
|
|
|
throw new Error("Invalid new password") |
|
|
|
} |
|
|
|
|
|
|
@ -467,7 +467,7 @@ async function checkOwner(userID, monitorID) { |
|
|
|
userID, |
|
|
|
]) |
|
|
|
|
|
|
|
if (! row) { |
|
|
|
if (!row) { |
|
|
|
throw new Error("You do not own this monitor."); |
|
|
|
} |
|
|
|
} |
|
|
@ -522,7 +522,7 @@ async function getMonitorJSONList(userID) { |
|
|
|
} |
|
|
|
|
|
|
|
function checkLogin(socket) { |
|
|
|
if (! socket.userID) { |
|
|
|
if (!socket.userID) { |
|
|
|
throw new Error("You are not logged in."); |
|
|
|
} |
|
|
|
} |
|
|
@ -530,7 +530,7 @@ function checkLogin(socket) { |
|
|
|
async function initDatabase() { |
|
|
|
const path = './data/kuma.db'; |
|
|
|
|
|
|
|
if (! fs.existsSync(path)) { |
|
|
|
if (!fs.existsSync(path)) { |
|
|
|
console.log("Copy Database") |
|
|
|
fs.copyFileSync("./db/kuma.db", path); |
|
|
|
} |
|
|
@ -547,7 +547,7 @@ async function initDatabase() { |
|
|
|
"jwtSecret" |
|
|
|
]); |
|
|
|
|
|
|
|
if (! jwtSecretBean) { |
|
|
|
if (!jwtSecretBean) { |
|
|
|
console.log("JWT secret is not found, generate one.") |
|
|
|
jwtSecretBean = R.dispense("setting") |
|
|
|
jwtSecretBean.key = "jwtSecret" |
|
|
@ -634,7 +634,7 @@ async function sendHeartbeatList(socket, monitorID) { |
|
|
|
let result = []; |
|
|
|
|
|
|
|
for (let bean of list) { |
|
|
|
result.unshift(bean.toJSON()) |
|
|
|
result.unshift(bean.toJSON()) |
|
|
|
} |
|
|
|
|
|
|
|
socket.emit("heartbeatList", monitorID, result) |
|
|
|