mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-01-14 00:04:59 -05:00
Merge pull request #5330 from si458/fix-webdav-upload
Fix webdav upload
This commit is contained in:
commit
a3dfc30607
52
db.js
52
db.js
@ -3071,39 +3071,37 @@ module.exports.CreateDB = function (parent, func) {
|
||||
|
||||
// Upload to the WebDAV folder
|
||||
function performWebDavUpload(client, filepath) {
|
||||
var fileStream = require('fs').createReadStream(filepath);
|
||||
fileStream.on('close', function () { if (func) { func('WebDAV upload completed'); } })
|
||||
fileStream.on('error', function (err) { if (func) { func('WebDAV (fileUpload) error: ' + err); } })
|
||||
fileStream.pipe(client.createWriteStream('/' + webdavfolderName + '/' + require('path').basename(filepath)));
|
||||
if (func) { func('Uploading using WebDAV...'); }
|
||||
require('fs').stat(filepath, function(err,stat){
|
||||
var fileStream = require('fs').createReadStream(filepath);
|
||||
fileStream.on('close', function () { if (func) { func('WebDAV upload completed'); } })
|
||||
fileStream.on('error', function (err) { if (func) { func('WebDAV (fileUpload) error: ' + err); } })
|
||||
fileStream.pipe(client.createWriteStream('/' + webdavfolderName + '/' + require('path').basename(filepath), { headers: { "Content-Length": stat.size } }));
|
||||
if (func) { func('Uploading using WebDAV...'); }
|
||||
});
|
||||
}
|
||||
|
||||
if (func) { func('Attempting WebDAV upload...'); }
|
||||
const { createClient } = require('webdav');
|
||||
const client = createClient(parent.config.settings.autobackup.webdav.url, { username: parent.config.settings.autobackup.webdav.username, password: parent.config.settings.autobackup.webdav.password });
|
||||
var directoryItems = client.getDirectoryContents('/');
|
||||
directoryItems.then(
|
||||
function (files) {
|
||||
var folderFound = false;
|
||||
for (var i in files) { if ((files[i].basename == webdavfolderName) && (files[i].type == 'directory')) { folderFound = true; } }
|
||||
if (folderFound == false) {
|
||||
client.createDirectory(webdavfolderName).then(function (a) {
|
||||
if (a.statusText == 'Created') {
|
||||
if (func) { func('WebDAV folder created'); }
|
||||
performWebDavUpload(client, filename);
|
||||
} else {
|
||||
if (func) { func('WebDAV (createDirectory) status: ' + a.statusText); }
|
||||
}
|
||||
}).catch(function (err) {
|
||||
if (func) { func('WebDAV (createDirectory) error: ' + err); }
|
||||
});
|
||||
} else {
|
||||
performWebDavCleanup(client);
|
||||
const client = createClient(parent.config.settings.autobackup.webdav.url, {
|
||||
username: parent.config.settings.autobackup.webdav.username,
|
||||
password: parent.config.settings.autobackup.webdav.password,
|
||||
maxContentLength: Infinity,
|
||||
maxBodyLength: Infinity
|
||||
});
|
||||
client.exists(webdavfolderName).then(function(a){
|
||||
if(a){
|
||||
performWebDavCleanup(client);
|
||||
performWebDavUpload(client, filename);
|
||||
}else{
|
||||
client.createDirectory(webdavfolderName, {recursive: true}).then(function (a) {
|
||||
if (func) { func('WebDAV folder created'); }
|
||||
performWebDavUpload(client, filename);
|
||||
}
|
||||
}).catch(function (err) {
|
||||
if (func) { func('WebDAV (createDirectory) error: ' + err); }
|
||||
});
|
||||
}
|
||||
).catch(function (err) {
|
||||
if (func) { func('WebDAV (getDirectoryContents) error: ' + err); }
|
||||
}).catch(function (err) {
|
||||
if (func) { func('WebDAV (exists) error: ' + err); }
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -4023,12 +4023,12 @@ function mainStart() {
|
||||
// Setup encrypted zip support if needed
|
||||
if (config.settings.autobackup && config.settings.autobackup.zippassword) {
|
||||
modules.push('archiver-zip-encrypted');
|
||||
// Enable Google Drive Support
|
||||
if (typeof config.settings.autobackup.googledrive == 'object') { modules.push('googleapis'); }
|
||||
// Enable WebDAV Support
|
||||
if (typeof config.settings.autobackup.webdav == 'object') {
|
||||
if ((typeof config.settings.autobackup.webdav.url != 'string') || (typeof config.settings.autobackup.webdav.username != 'string') || (typeof config.settings.autobackup.webdav.password != 'string')) { addServerWarning("Missing WebDAV parameters.", 2, null, !args.launch); } else { modules.push('webdav@4.11.2'); }
|
||||
}
|
||||
}
|
||||
// Enable Google Drive Support
|
||||
if (typeof config.settings.autobackup.googledrive == 'object') { modules.push('googleapis'); }
|
||||
// Enable WebDAV Support
|
||||
if (typeof config.settings.autobackup.webdav == 'object') {
|
||||
if ((typeof config.settings.autobackup.webdav.url != 'string') || (typeof config.settings.autobackup.webdav.username != 'string') || (typeof config.settings.autobackup.webdav.password != 'string')) { addServerWarning("Missing WebDAV parameters.", 2, null, !args.launch); } else { modules.push('webdav@4.11.3'); }
|
||||
}
|
||||
|
||||
// Setup common password blocking
|
||||
|
Loading…
Reference in New Issue
Block a user