mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-01-14 08:14: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
|
// Upload to the WebDAV folder
|
||||||
function performWebDavUpload(client, filepath) {
|
function performWebDavUpload(client, filepath) {
|
||||||
var fileStream = require('fs').createReadStream(filepath);
|
require('fs').stat(filepath, function(err,stat){
|
||||||
fileStream.on('close', function () { if (func) { func('WebDAV upload completed'); } })
|
var fileStream = require('fs').createReadStream(filepath);
|
||||||
fileStream.on('error', function (err) { if (func) { func('WebDAV (fileUpload) error: ' + err); } })
|
fileStream.on('close', function () { if (func) { func('WebDAV upload completed'); } })
|
||||||
fileStream.pipe(client.createWriteStream('/' + webdavfolderName + '/' + require('path').basename(filepath)));
|
fileStream.on('error', function (err) { if (func) { func('WebDAV (fileUpload) error: ' + err); } })
|
||||||
if (func) { func('Uploading using WebDAV...'); }
|
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...'); }
|
if (func) { func('Attempting WebDAV upload...'); }
|
||||||
const { createClient } = require('webdav');
|
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 });
|
const client = createClient(parent.config.settings.autobackup.webdav.url, {
|
||||||
var directoryItems = client.getDirectoryContents('/');
|
username: parent.config.settings.autobackup.webdav.username,
|
||||||
directoryItems.then(
|
password: parent.config.settings.autobackup.webdav.password,
|
||||||
function (files) {
|
maxContentLength: Infinity,
|
||||||
var folderFound = false;
|
maxBodyLength: Infinity
|
||||||
for (var i in files) { if ((files[i].basename == webdavfolderName) && (files[i].type == 'directory')) { folderFound = true; } }
|
});
|
||||||
if (folderFound == false) {
|
client.exists(webdavfolderName).then(function(a){
|
||||||
client.createDirectory(webdavfolderName).then(function (a) {
|
if(a){
|
||||||
if (a.statusText == 'Created') {
|
performWebDavCleanup(client);
|
||||||
if (func) { func('WebDAV folder created'); }
|
performWebDavUpload(client, filename);
|
||||||
performWebDavUpload(client, filename);
|
}else{
|
||||||
} else {
|
client.createDirectory(webdavfolderName, {recursive: true}).then(function (a) {
|
||||||
if (func) { func('WebDAV (createDirectory) status: ' + a.statusText); }
|
if (func) { func('WebDAV folder created'); }
|
||||||
}
|
|
||||||
}).catch(function (err) {
|
|
||||||
if (func) { func('WebDAV (createDirectory) error: ' + err); }
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
performWebDavCleanup(client);
|
|
||||||
performWebDavUpload(client, filename);
|
performWebDavUpload(client, filename);
|
||||||
}
|
}).catch(function (err) {
|
||||||
|
if (func) { func('WebDAV (createDirectory) error: ' + err); }
|
||||||
|
});
|
||||||
}
|
}
|
||||||
).catch(function (err) {
|
}).catch(function (err) {
|
||||||
if (func) { func('WebDAV (getDirectoryContents) error: ' + err); }
|
if (func) { func('WebDAV (exists) error: ' + err); }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4023,12 +4023,12 @@ function mainStart() {
|
|||||||
// Setup encrypted zip support if needed
|
// Setup encrypted zip support if needed
|
||||||
if (config.settings.autobackup && config.settings.autobackup.zippassword) {
|
if (config.settings.autobackup && config.settings.autobackup.zippassword) {
|
||||||
modules.push('archiver-zip-encrypted');
|
modules.push('archiver-zip-encrypted');
|
||||||
// Enable Google Drive Support
|
}
|
||||||
if (typeof config.settings.autobackup.googledrive == 'object') { modules.push('googleapis'); }
|
// Enable Google Drive Support
|
||||||
// Enable WebDAV Support
|
if (typeof config.settings.autobackup.googledrive == 'object') { modules.push('googleapis'); }
|
||||||
if (typeof config.settings.autobackup.webdav == 'object') {
|
// Enable WebDAV Support
|
||||||
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'); }
|
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
|
// Setup common password blocking
|
||||||
|
Loading…
Reference in New Issue
Block a user