Fixed sqldump pw escaping on windows

Noah Zalev committed Apr 10, 2021 at 20:11 UTC 72afaaa908f732dc853098990742fad586e6ce4f
1 file changed +7 -3
db.js
+7 -3
@@ -1618,10 +1618,12 @@ module.exports.CreateDB = function (parent, func) {
1618 var props = (obj.databaseType == 4) ? parent.args.mariadb : parent.args.mysql;
1619 var mysqldumpPath = 'mysqldump';
1620 if (parent.config.settings.autobackup && parent.config.settings.autobackup.mysqldumppath) { mysqldumpPath = parent.config.settings.autobackup.mysqldumppath; }
1621 - var cmd = '\"' + mysqldumpPath + '\" --user=\'' + props.user + '\' --password=\'' + props.password + '\'';
1621 + var cmd = '\"' + mysqldumpPath + '\" --user=\'' + props.user + '\'';
1622 + // Windows will treat ' as part of the pw. Linux/Unix requires it to escape.
1623 + cmd += (parent.platform == 'win32') ? ' --password=\"' + props.password + '\"' : ' --password=\'' + props.password + '\'';
1624 if (props.host) { cmd += ' -h ' + props.host; }
1625 if (props.port) { cmd += ' -P ' + props.port; }
1624 - cmd += ' meshcentral --result-file=' + ((parent.platform == 'win32') ? '\"nul\"' : '\"/dev/null\"');
1626 + cmd += ' meshcentral > ' + ((parent.platform == 'win32') ? '\"nul\"' : '\"/dev/null\"');
1627 const child_process = require('child_process');
1628 child_process.exec(cmd, { cwd: backupPath }, function(error, stdout, stdin) {
1629 try {
@@ -1815,7 +1817,9 @@ module.exports.CreateDB = function (parent, func) {
1817 var props = (obj.databaseType == 4) ? parent.args.mariadb : parent.args.mysql;
1818 var mysqldumpPath = 'mysqldump';
1819 if (parent.config.settings.autobackup && parent.config.settings.autobackup.mysqldumppath) { mysqldumpPath = parent.config.settings.autobackup.mysqldumppath; }
1818 - var cmd = '\"' + mysqldumpPath + '\" --user=\'' + props.user + '\' --password=\'' + props.password + '\'';
1820 + var cmd = '\"' + mysqldumpPath + '\" --user=\'' + props.user + '\'';
1821 + // Windows will treat ' as part of the pw. Linux/Unix requires it to escape.
1822 + cmd += (parent.platform == 'win32') ? ' --password=\"' + props.password + '\"' : ' --password=\'' + props.password + '\'';
1823 if (props.host) { cmd += ' -h ' + props.host; }
1824 if (props.port) { cmd += ' -P ' + props.port; }
1825 cmd += ' meshcentral --result-file=\"' + newBackupPath + '.sql\"';