diff --git a/BodyshopUploader/Properties/AssemblyInfo.cs b/BodyshopUploader/Properties/AssemblyInfo.cs index ed5e0f3..4a24647 100644 --- a/BodyshopUploader/Properties/AssemblyInfo.cs +++ b/BodyshopUploader/Properties/AssemblyInfo.cs @@ -51,7 +51,7 @@ using System.Windows; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.4")] -[assembly: AssemblyFileVersion("1.0.3")] +[assembly: AssemblyVersion("1.0.4.0")] +[assembly: AssemblyFileVersion("1.0.4.0")] //Setting Squirrel Aware Version. [assembly: AssemblyMetadata("SquirrelAwareVersion", "1")] \ No newline at end of file diff --git a/BodyshopUploader/Utils/HTTPServer.cs b/BodyshopUploader/Utils/HTTPServer.cs index db17851..2e90c51 100644 --- a/BodyshopUploader/Utils/HTTPServer.cs +++ b/BodyshopUploader/Utils/HTTPServer.cs @@ -10,6 +10,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using BodyshopPartner.Models; using ToastNotifications.Messages; +using System.Threading; namespace BodyshopPartner.Utils { @@ -18,6 +19,9 @@ namespace BodyshopPartner.Utils private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); public delegate void HttpLogger(string s); private static HttpLogger hlog; + public static CancellationTokenSource tokenSource = new CancellationTokenSource(); + public static CancellationToken token = tokenSource.Token; + public static void InitHttpServer(HttpLogger HttpLogger) { Route.Add("/qb/", (req, res, props) => @@ -34,12 +38,13 @@ namespace BodyshopPartner.Utils logger.Trace("Starting HTTP server..."); hlog = HttpLogger; - + //TODO As a part of the installer, add netsh http add urlacl url=http://+:1337/ user="Everyone try { - HttpServer.ListenAsync(1337, System.Threading.CancellationToken.None, Route.OnHttpRequestAsync).Wait(); - hlog("ImEX Online connection server started..."); + hlog("ImEX Online connection server starting..."); + HttpServer.ListenAsync(1337, token, Route.OnHttpRequestAsync).Wait(); + } catch (Exception Ex) { @@ -49,8 +54,8 @@ namespace BodyshopPartner.Utils string msg = "Unable to connect to ImEX Online Web App. Please ensure your firewall allows the connection."; hlog("ImEX Online connection server could not start. Please restart the partner to try again."); Utils.Notifications.notifier.ShowError(msg); - bool AddedException = Utils.SquirrelAwareHelper.AddHttpExcetion(); - + bool AddedException = Utils.SquirrelAwareHelper.AddHttpExcetion(); + //Growler.AddNotification(new Notification() //{ // Title = Properties.Resources.Msg_NewJobUploaded, @@ -58,6 +63,7 @@ namespace BodyshopPartner.Utils // //Message = item.Job?.vehicle?.data?.v_model_yr?.Value + " " + item.Job?.vehicle?.data?.v_make_desc?.Value + " " + item.Job?.vehicle?.data?.v_model_desc?.Value //}); }); + Utils.SquirrelAwareHelper.AddHttpExcetion(); } } diff --git a/BodyshopUploader/Utils/Queries/JobsQueries.cs b/BodyshopUploader/Utils/Queries/JobsQueries.cs index 5fa134d..edcfb0c 100644 --- a/BodyshopUploader/Utils/Queries/JobsQueries.cs +++ b/BodyshopUploader/Utils/Queries/JobsQueries.cs @@ -32,7 +32,7 @@ namespace BodyshopPartner.Utils.Queries try { var d = await Utils.GraphQL.ExecuteQuery(r); - return d.jobs?[0].id; + return d?.jobs?[0]?.id; } catch (ArgumentOutOfRangeException Ex) diff --git a/BodyshopUploader/Utils/SquirrelAwareHelper.cs b/BodyshopUploader/Utils/SquirrelAwareHelper.cs index 14e9fcd..aaecd53 100644 --- a/BodyshopUploader/Utils/SquirrelAwareHelper.cs +++ b/BodyshopUploader/Utils/SquirrelAwareHelper.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -13,14 +14,35 @@ namespace BodyshopPartner.Utils public static bool AddHttpExcetion() { logger.Debug("Attempting to add HTTP Exclusion for web-server"); - System.Diagnostics.Process process = new System.Diagnostics.Process(); - System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); - startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; - startInfo.FileName = "cmd.exe"; - startInfo.Arguments = "netsh http add urlacl url=http://+:1337/ user=\"Everyone\""; - startInfo.Verb = "runas"; - process.StartInfo = startInfo; - return process.Start(); + + string args = string.Format(@"http add urlacl url={0} user={1}", "http://+:1337/", "Everyone"); + + ProcessStartInfo psi = new ProcessStartInfo("netsh", args); + psi.Verb = "runas"; + psi.CreateNoWindow = true; + psi.WindowStyle = ProcessWindowStyle.Hidden; + psi.UseShellExecute = true; + try + { + Process.Start(psi).WaitForExit(); + logger.Debug("Attempting to add HTTP Exclusion for web-server"); + return true; + } + catch (Exception Ex) + { + logger.Error("Unable to register exception " + Ex.ToString()); + return false; + } + + + // System.Diagnostics.Process process = new System.Diagnostics.Process(); + // System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); + // startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; + // startInfo.FileName = "cmd.exe"; + // startInfo.Arguments = "netsh http add urlacl url=http://+:1337/ user=\"Everyone\""; + // startInfo.Verb = "runas"; + // process.StartInfo = startInfo; + //return process.Start(); } public static void InitializeSquirrelAware() @@ -35,7 +57,7 @@ namespace BodyshopPartner.Utils logger.Debug("Installing via Squirrel Aware Helper. ", v); try { - + bool successful = AddHttpExcetion(); if (successful) diff --git a/BodyshopUploader/ViewModels/MainViewModel.cs b/BodyshopUploader/ViewModels/MainViewModel.cs index 8d9a173..5623bc3 100644 --- a/BodyshopUploader/ViewModels/MainViewModel.cs +++ b/BodyshopUploader/ViewModels/MainViewModel.cs @@ -208,7 +208,7 @@ namespace BodyshopPartner.ViewModels if (string.IsNullOrEmpty(SettingsSelectedShopUuid)) { ActiveShop = ShopData[0] ?? null; - Properties.Settings.Default.LastSelectedShop = ShopData[0].Id ?? null; + Properties.Settings.Default.LastSelectedShop = ShopData[0]?.Id ?? null; Properties.Settings.Default.Save(); } else @@ -262,33 +262,7 @@ namespace BodyshopPartner.ViewModels public async Task TestGql() { - try - { - logger.Debug("Attempting to add HTTP Exclusion for web-server"); - System.Diagnostics.Process process = new System.Diagnostics.Process(); - System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); - startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; - startInfo.FileName = "cmd.exe"; - startInfo.Arguments = "add netsh http add urlacl url=http://+:1337/ user=\"Everyone\""; - startInfo.Verb = "runas"; - process.StartInfo = startInfo; - bool successful = process.Start(); - if (successful) - { - logger.Debug("Successfully added exception."); - } - else - { - logger.Fatal("Unable to set exception for http port"); - AddHttpStatus("Unable to add exception for the port! Please run as an administrator."); - - } - - } - catch (Exception Ex) - { - logger.Fatal("Unable to set exception for http port", Ex.ToString()); - } + Utils.SquirrelAwareHelper.AddHttpExcetion(); } } diff --git a/BodyshopUploader/Views/Main.xaml b/BodyshopUploader/Views/Main.xaml index 72a3e7f..d9bdb7d 100644 --- a/BodyshopUploader/Views/Main.xaml +++ b/BodyshopUploader/Views/Main.xaml @@ -4,7 +4,6 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:tb="http://www.hardcodet.net/taskbar" xmlns:p="clr-namespace:BodyshopPartner.Properties" xmlns:properties="clr-namespace:BodyshopPartner.Properties" xmlns:util="clr-namespace:BodyshopPartner.Utils" @@ -21,7 +20,8 @@ Background="{DynamicResource MaterialDesignPaper}" FontFamily="{DynamicResource MaterialDesignFont}" Loaded="Window_Loaded" - Closing="Window_Closing"> + Closing="Window_Closing" + > @@ -54,7 +54,7 @@ IsIndeterminate="{Binding IndeterminateLoading}" Height="8" /> - - + --> diff --git a/BodyshopUploader/Views/Main.xaml.cs b/BodyshopUploader/Views/Main.xaml.cs index 179e941..a4b69bd 100644 --- a/BodyshopUploader/Views/Main.xaml.cs +++ b/BodyshopUploader/Views/Main.xaml.cs @@ -32,8 +32,10 @@ namespace BodyshopPartner.Views private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { - e.Cancel = true ; - this.Hide(); + //e.Cancel = true ; + //this.Hide(); + Utils.HTTPServer.tokenSource.Cancel(); + Application.Current.Shutdown(); } private void TextBox_TextChanged(object sender, TextChangedEventArgs e) @@ -41,5 +43,6 @@ namespace BodyshopPartner.Views Properties.Settings.Default.QuickBooksFilePath = ((System.Windows.Controls.TextBox)sender).Text; Properties.Settings.Default.Save(); } + } }