From 345d01c9524fc3d15ec154f806952b77880fe2dd Mon Sep 17 00:00:00 2001 From: rinrab Date: Sat, 6 Jan 2024 15:37:40 +0100 Subject: [PATCH] Delete and Create vpn connection if profile changed instead of using Session.ModifyInstance(). --- AOVpnManager.Tests/GpUpdateProcessorTests.cs | 6 ++++-- AOVpnManager/ConsoleLogger.cs | 5 ----- AOVpnManager/EventSourceLogger.cs | 6 ------ AOVpnManager/GpUpdateProcessor.cs | 12 ++++++++---- AOVpnManager/ILogger.cs | 1 - AOVpnManager/IVpnManager.cs | 1 - AOVpnManager/VpnManager.cs | 18 ------------------ 7 files changed, 12 insertions(+), 37 deletions(-) diff --git a/AOVpnManager.Tests/GpUpdateProcessorTests.cs b/AOVpnManager.Tests/GpUpdateProcessorTests.cs index ef35027..0f65bc9 100644 --- a/AOVpnManager.Tests/GpUpdateProcessorTests.cs +++ b/AOVpnManager.Tests/GpUpdateProcessorTests.cs @@ -39,10 +39,12 @@ public void Test() mocks.BackToRecordAll(); vpnManager.Expect(x => x.EnumarateVpnConnections()).Return(new VpnConnectionInfo[] { new VpnConnectionInfo("Name 1", "Profile 1") }); - vpnManager.Expect(x => x.UpdateVpnConnection("Name 1", "Profile 2")); + vpnManager.Expect(x => x.DeleteVpnConnection("Name 1")); + vpnManager.Expect(x => x.CreateVpnConnection("Name 1", "Profile 2")); policyProvider.Expect(x => x.ReadSettings()).Return(new GroupPolicySettings("Profile 2", "Name 1")); logger.Expect(x => x.Trace(null)).Repeat.Any().IgnoreArguments(); - logger.Expect(x => x.VpnConnectionUpdated("Name 1")); + logger.Expect(x => x.VpnConnectionDeleted("Name 1")); + logger.Expect(x => x.VpnConnectionCreated("Name 1")); mocks.ReplayAll(); diff --git a/AOVpnManager/ConsoleLogger.cs b/AOVpnManager/ConsoleLogger.cs index 0b6644a..e3fc1d7 100644 --- a/AOVpnManager/ConsoleLogger.cs +++ b/AOVpnManager/ConsoleLogger.cs @@ -24,11 +24,6 @@ public void VpnConnectionCreated(string connectionName) Console.WriteLine("Vpn connection \"{0}\" created.", connectionName); } - public void VpnConnectionUpdated(string connectionName) - { - Console.WriteLine("Vpn connection \"{0}\" updated.", connectionName); - } - public void VpnConnectionDeleted(string connectionName) { Console.WriteLine("Vpn connection \"{0}\" deleted.", connectionName); diff --git a/AOVpnManager/EventSourceLogger.cs b/AOVpnManager/EventSourceLogger.cs index a15965f..d0859d8 100644 --- a/AOVpnManager/EventSourceLogger.cs +++ b/AOVpnManager/EventSourceLogger.cs @@ -29,12 +29,6 @@ public void VpnConnectionCreated(string connectionName) WriteEvent(4, connectionName); } - [Event(5, Level = EventLevel.Informational, Channel = EventChannel.Operational, Message = "Vpn connection \"{0}\" updated.")] - public void VpnConnectionUpdated(string connectionName) - { - WriteEvent(5, connectionName); - } - [Event(6, Level = EventLevel.Informational, Channel = EventChannel.Operational, Message = "Vpn connection \"{0}\" deleted.")] public void VpnConnectionDeleted(string connectionName) { diff --git a/AOVpnManager/GpUpdateProcessor.cs b/AOVpnManager/GpUpdateProcessor.cs index 01575c1..3b9032b 100644 --- a/AOVpnManager/GpUpdateProcessor.cs +++ b/AOVpnManager/GpUpdateProcessor.cs @@ -58,16 +58,20 @@ public void Run() if (oldConnection == null) { + stateManager.SetLastConnectionName(settings.VpnConnectionName); vpnManager.CreateVpnConnection(settings.VpnConnectionName, settings.VpnProfileXml); logger.VpnConnectionCreated(settings.VpnConnectionName); } else { - vpnManager.UpdateVpnConnection(settings.VpnConnectionName, settings.VpnProfileXml); - logger.VpnConnectionUpdated(settings.VpnConnectionName); - } + stateManager.SetLastConnectionName(null); + vpnManager.DeleteVpnConnection(lastConnectionName); + logger.VpnConnectionDeleted(lastConnectionName); - stateManager.SetLastConnectionName(settings.VpnConnectionName); + stateManager.SetLastConnectionName(settings.VpnConnectionName); + vpnManager.CreateVpnConnection(settings.VpnConnectionName, settings.VpnProfileXml); + logger.VpnConnectionCreated(settings.VpnConnectionName); + } } } diff --git a/AOVpnManager/ILogger.cs b/AOVpnManager/ILogger.cs index 65be064..fe231cd 100644 --- a/AOVpnManager/ILogger.cs +++ b/AOVpnManager/ILogger.cs @@ -6,7 +6,6 @@ public interface ILogger void Finished(int code); void Started(); void VpnConnectionCreated(string connectionName); - void VpnConnectionUpdated(string connectionName); void Trace(string message); void VpnConnectionDeleted(string connectionName); } diff --git a/AOVpnManager/IVpnManager.cs b/AOVpnManager/IVpnManager.cs index 17ba6b0..fbfc211 100644 --- a/AOVpnManager/IVpnManager.cs +++ b/AOVpnManager/IVpnManager.cs @@ -8,6 +8,5 @@ public interface IVpnManager : IDisposable void CreateVpnConnection(string connectionName, string profile); void DeleteVpnConnection(string connectionName); IEnumerable EnumarateVpnConnections(); - void UpdateVpnConnection(string connectionName, string profile); } } \ No newline at end of file diff --git a/AOVpnManager/VpnManager.cs b/AOVpnManager/VpnManager.cs index 2ce8b69..f87b7d1 100644 --- a/AOVpnManager/VpnManager.cs +++ b/AOVpnManager/VpnManager.cs @@ -46,24 +46,6 @@ public void CreateVpnConnection(string connectionName, string profile) } } - - public void UpdateVpnConnection(string connectionName, string profile) - { - try - { - using (CimInstance newInstance = new CimInstance(ClassName, NamespaceName)) - { - AddKeyPropertiesToVpnConnection(newInstance, connectionName); - AddValuePropertiesToVpnConnection(newInstance, profile); - session.ModifyInstance(NamespaceName, newInstance); - } - } - catch (CimException ex) - { - throw ConvertCimException(ex); - } - } - public void DeleteVpnConnection(string connectionName) { try