diff --git a/.vscode/launch.json b/.vscode/launch.json index 95c9b301..6b9a0d68 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -50,7 +50,7 @@ "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", "AYANOVA_METRICS_USE_INFLUXDB": "false", - "AYANOVA_SERVER_TEST_MODE":"false", + "AYANOVA_SERVER_TEST_MODE":"true", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL":"small", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET":"-7", "AYANOVA_BACKUP_PG_DUMP_PATH":"C:\\data\\code\\PostgreSQLPortable_12.0\\App\\PgSQL\\bin\\" diff --git a/server/AyaNova/generator/CoreJobBackup.cs b/server/AyaNova/generator/CoreJobBackup.cs index ee0c4071..74281b97 100644 --- a/server/AyaNova/generator/CoreJobBackup.cs +++ b/server/AyaNova/generator/CoreJobBackup.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using AyaNova.Models; @@ -69,14 +70,20 @@ namespace AyaNova.Biz var Arguments = $"{DBNameParameter} -Fc > {DataBackupFile}"; - var RunCommand=$"\"{BackupUtilityCommand} {Arguments}\""; + var RunCommand=$"/C {BackupUtilityCommand} {Arguments}"; log.LogInformation("BACKUP STUB: DATA BACKUP RUNNING NOW - TORA TORA TORA!"); - log.LogInformation($"CALLING BACKUP COMMAND: {BackupUtilityCommand} {Arguments}"); + //log.LogInformation($"CALLING BACKUP COMMAND: {BackupUtilityCommand} {Arguments}"); //RUN THE BACKUP //var Result = RunProgram.Run(BackupUtilityCommand, Arguments, log); - var Result = RunProgram.Run(RunCommand,"", log); + List args=new List(); + args.Add(RunCommand); + // args.Add("--dbname=postgresql://postgres:raven@127.0.0.1:5432/AyaNova"); + // args.Add("-Fc"); + // args.Add(">"); + // args.Add(DataBackupFile); + var Result = RunProgram.Run("cmd.exe",args, log); log.LogInformation($"BACKUP RESULT: {Result}"); diff --git a/server/AyaNova/util/RunProgram.cs b/server/AyaNova/util/RunProgram.cs index 05eabcda..ec804d90 100644 --- a/server/AyaNova/util/RunProgram.cs +++ b/server/AyaNova/util/RunProgram.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Diagnostics; using System.Runtime.InteropServices; using Microsoft.Extensions.Logging; @@ -9,7 +10,7 @@ namespace AyaNova.Util { - public static string Run(string cmd, string arguments, ILogger log = null) + public static string Run(string cmd, List arguments, ILogger log = null) { try { @@ -45,7 +46,7 @@ namespace AyaNova.Util - private static string RunWindows(string cmd, string arguments) + private static string RunWindows(string cmd, List arguments) { /* process.StartInfo.UseShellExecute = false; @@ -81,13 +82,15 @@ process.BeginOutputReadLine(); process.StartInfo = new ProcessStartInfo { FileName = cmd, - Arguments = arguments, + // Arguments = arguments, RedirectStandardOutput = true, RedirectStandardError = true, UseShellExecute = false, CreateNoWindow = true, }; + foreach (string s in arguments) + process.StartInfo.ArgumentList.Add(s); process.Start(); string result = $"{process.StandardOutput.ReadToEnd()}{process.StandardError.ReadToEnd()} "; @@ -96,7 +99,7 @@ process.BeginOutputReadLine(); } } - private static string RunLinuxBash(string cmd, string arguments) + private static string RunLinuxBash(string cmd, List arguments) { var escapedArgs = $"{cmd} {arguments}".Replace("\"", "\\\""); @@ -105,11 +108,13 @@ process.BeginOutputReadLine(); process.StartInfo = new ProcessStartInfo { FileName = "/bin/bash", - Arguments = $"-c \"{escapedArgs}\"", + // Arguments = $"-c \"{escapedArgs}\"", RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true, }; + foreach (string s in arguments) + process.StartInfo.ArgumentList.Add(s); process.Start(); string result = process.StandardOutput.ReadToEnd(); @@ -119,18 +124,21 @@ process.BeginOutputReadLine(); } - private static string RunOSX(string cmd, string arguments) + private static string RunOSX(string cmd, List arguments) { using (var process = new Process()) { process.StartInfo = new ProcessStartInfo { FileName = cmd, - Arguments = arguments, + + // Arguments = arguments, RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true, }; + foreach (string s in arguments) + process.StartInfo.ArgumentList.Add(s); process.Start(); string result = process.StandardOutput.ReadToEnd();