first version of webdav save
This commit is contained in:
86
server.js
86
server.js
@@ -1,6 +1,7 @@
|
||||
var PORT = 8080; //Set port for the app
|
||||
var accessToken = ""; //Can be set here or as start parameter (node server.js --accesstoken=MYTOKEN)
|
||||
var disableSmallestScreen = false; //Can be set to true if you dont want to show (node server.js --disablesmallestscreen=true)
|
||||
var enableWebDavSave = false; //Can be set to true if you want to allow webdav save (node server.js --webdavsave=true)
|
||||
|
||||
var fs = require("fs-extra");
|
||||
var express = require('express');
|
||||
@@ -11,6 +12,8 @@ const { JSDOM } = require('jsdom');
|
||||
const window = (new JSDOM('')).window;
|
||||
const DOMPurify = createDOMPurify(window);
|
||||
|
||||
const { createClient } = require("webdav");
|
||||
|
||||
var s_whiteboard = require("./s_whiteboard.js");
|
||||
|
||||
var app = express();
|
||||
@@ -26,6 +29,9 @@ if (process.env.accesstoken) {
|
||||
if (process.env.disablesmallestscreen) {
|
||||
disablesmallestscreen = true;
|
||||
}
|
||||
if (process.env.webdavsave) {
|
||||
enableWebDavSave = true;
|
||||
}
|
||||
|
||||
var startArgs = getArgs();
|
||||
if (startArgs["accesstoken"]) {
|
||||
@@ -34,6 +40,9 @@ if (startArgs["accesstoken"]) {
|
||||
if (startArgs["disablesmallestscreen"]) {
|
||||
disableSmallestScreen = true;
|
||||
}
|
||||
if (startArgs["webdavsave"]) {
|
||||
enableWebDavSave = true;
|
||||
}
|
||||
|
||||
if (accessToken !== "") {
|
||||
console.log("AccessToken set to: " + accessToken);
|
||||
@@ -76,8 +85,18 @@ app.post('/upload', function (req, res) { //File upload
|
||||
|
||||
form.on('end', function () {
|
||||
if (accessToken === "" || accessToken == formData["fields"]["at"]) {
|
||||
progressUploadFormData(formData);
|
||||
res.send("done");
|
||||
progressUploadFormData(formData, function (err) {
|
||||
if (err) {
|
||||
if (err == "403") {
|
||||
res.status(403);
|
||||
} else {
|
||||
res.status(500);
|
||||
}
|
||||
res.end();
|
||||
} else {
|
||||
res.send("done");
|
||||
}
|
||||
});
|
||||
} else {
|
||||
res.status(401); //Unauthorized
|
||||
res.end();
|
||||
@@ -87,7 +106,7 @@ app.post('/upload', function (req, res) { //File upload
|
||||
form.parse(req);
|
||||
});
|
||||
|
||||
function progressUploadFormData(formData) {
|
||||
function progressUploadFormData(formData, callback) {
|
||||
console.log("Progress new Form Data");
|
||||
var fields = escapeAllContentStrings(formData.fields);
|
||||
var files = formData.files;
|
||||
@@ -96,7 +115,12 @@ function progressUploadFormData(formData) {
|
||||
var name = fields["name"] || "";
|
||||
var date = fields["date"] || (+new Date());
|
||||
var filename = whiteboardId + "_" + date + ".png";
|
||||
|
||||
var webdavaccess = fields["webdavaccess"] || false;
|
||||
try {
|
||||
webdavaccess = JSON.parse(webdavaccess);
|
||||
} catch (e) {
|
||||
webdavaccess = false;
|
||||
}
|
||||
fs.ensureDir("./public/uploads", function (err) {
|
||||
if (err) {
|
||||
console.log("Could not create upload folder!", err);
|
||||
@@ -109,14 +133,61 @@ function progressUploadFormData(formData) {
|
||||
fs.writeFile('./public/uploads/' + filename, imagedata, 'base64', function (err) {
|
||||
if (err) {
|
||||
console.log("error", err);
|
||||
callback(err);
|
||||
} else {
|
||||
if (webdavaccess) { //Save image to webdav
|
||||
if (enableWebDavSave) {
|
||||
saveImageToWebdav('./public/uploads/' + filename, filename, webdavaccess, function (err) {
|
||||
if (err) {
|
||||
console.log("error", err);
|
||||
callback(err);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
})
|
||||
} else {
|
||||
callback("Webdav is not enabled on the server!");
|
||||
}
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
callback("no imagedata!");
|
||||
console.log("No image Data found for this upload!", name);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function saveImageToWebdav(imagepath, filename, webdavaccess, callback) {
|
||||
if (webdavaccess) {
|
||||
var webdavserver = webdavaccess["webdavserver"] || "";
|
||||
var webdavpath = webdavaccess["webdavpath"] || "/";
|
||||
var webdavusername = webdavaccess["webdavusername"] || "";
|
||||
var webdavpassword = webdavaccess["webdavpassword"] || "";
|
||||
|
||||
const client = createClient(
|
||||
webdavserver,
|
||||
{
|
||||
username: webdavusername,
|
||||
password: webdavpassword
|
||||
}
|
||||
)
|
||||
client.getDirectoryContents(webdavpath).then((items) => {
|
||||
var cloudpath = webdavpath+ '' + filename;
|
||||
console.log("webdav saving to:", cloudpath);
|
||||
fs.createReadStream(imagepath).pipe(client.createWriteStream(cloudpath));
|
||||
callback();
|
||||
}).catch((error) => {
|
||||
callback("403");
|
||||
console.log("Could not connect to webdav!")
|
||||
});
|
||||
} else {
|
||||
callback("Error: no access data!")
|
||||
}
|
||||
}
|
||||
|
||||
var smallestScreenResolutions = {};
|
||||
io.on('connection', function (socket) {
|
||||
var whiteboardId = null;
|
||||
@@ -211,4 +282,9 @@ function getArgs() {
|
||||
}
|
||||
})
|
||||
return args
|
||||
}
|
||||
}
|
||||
|
||||
process.on('unhandledRejection', error => {
|
||||
// Will print "unhandledRejection err is not defined"
|
||||
console.log('unhandledRejection', error.message);
|
||||
})
|
||||
Reference in New Issue
Block a user