1
0
mirror of https://github.com/louislam/uptime-kuma.git synced 2025-06-27 00:51:30 +02:00

upload logo and expose ./data/upload to url

This commit is contained in:
LouisLam
2021-09-21 21:22:35 +08:00
parent 61c737c53c
commit 15c00d9158
7 changed files with 353 additions and 210 deletions

View File

@ -2,6 +2,9 @@ const { R } = require("redbean-node");
const { checkLogin, setSettings } = require("../util-server");
const dayjs = require("dayjs");
const { debug } = require("../../src/util");
const ImageDataURI = require("../image-data-uri");
const Database = require("../database");
const fs = require("fs");
module.exports.statusPageSocketHandler = (socket) => {
@ -67,18 +70,35 @@ module.exports.statusPageSocketHandler = (socket) => {
});
// Save Status Page
// imgDataUrl Only Accept PNG!
socket.on("saveStatusPage", async (config, imgDataUrl, publicGroupList, callback) => {
try {
checkLogin(socket);
const header = "data:image/png;base64,";
// Check logo format
// If is image data url, convert to png file
// Else assume it is a url, nothing to do
if (imgDataUrl.startsWith("data:")) {
if (! imgDataUrl.startsWith(header)) {
throw new Error("Only allowed PNG logo.");
}
// Convert to file
await ImageDataURI.outputFile(imgDataUrl, Database.uploadDir + "logo.png");
config.logo = "/upload/logo.png?t=" + Date.now();
} else {
config.icon = imgDataUrl;
}
// Save Config
await setSettings("statusPage", config);
await R.transaction(async (trx) => {
// Save Icon
// Save Public Group List
const groupIDList = [];
let groupOrder = 1;