From 37e4108249cc35d0539831e8b8a44cf68d2482b0 Mon Sep 17 00:00:00 2001 From: lukeIam Date: Wed, 9 Oct 2013 19:39:31 +0200 Subject: [PATCH] Open WindowsFirewall-Port for Webserver --- WebserverInitalConfig/ConfigHttpApi.cs | 38 +++++++++++++++++++ WebserverInitalConfig/Program.cs | 3 ++ .../WebserverInitalConfig.csproj | 11 ++++++ 3 files changed, 52 insertions(+) diff --git a/WebserverInitalConfig/ConfigHttpApi.cs b/WebserverInitalConfig/ConfigHttpApi.cs index 5095d878..72ddef79 100644 --- a/WebserverInitalConfig/ConfigHttpApi.cs +++ b/WebserverInitalConfig/ConfigHttpApi.cs @@ -9,6 +9,7 @@ using System.Security.Cryptography.X509Certificates; using System.Security.Permissions; using System.Text; using System.Threading.Tasks; +using NetFwTypeLib; namespace WebserverInitalConfig { @@ -84,7 +85,44 @@ namespace WebserverInitalConfig return cert; } + public static void addFirewallrule(string exePath, int port, bool isTCP) + { + INetFwMgr manage = (INetFwMgr)Activator.CreateInstance( + Type.GetTypeFromCLSID(new Guid("{304CE942-6E39-40D8-943A-B913C40C9CD4}"))); + bool isFirewallEnabled = manage.LocalPolicy.CurrentProfile.FirewallEnabled; + if (isFirewallEnabled) + { + INetFwAuthorizedApplications applications = manage.LocalPolicy.CurrentProfile.AuthorizedApplications; + if ((from INetFwAuthorizedApplication a in applications + where a.ProcessImageFileName == exePath + select a).Count() == 0) + { + INetFwAuthorizedApplication application = (INetFwAuthorizedApplication)Activator.CreateInstance( + Type.GetTypeFromCLSID(new Guid("{EC9846B3-2762-4A6B-A214-6ACB603462D2}"))); + + application.Name = "Vocaluxe"; + application.ProcessImageFileName = exePath; + application.Enabled = true; + applications.Add(application); + } + INetFwOpenPorts openPorts = manage.LocalPolicy.CurrentProfile.GloballyOpenPorts; + if ((from INetFwOpenPort p in openPorts + where (p.Port == port && + (p.Protocol == (isTCP?NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP : NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP))) + select p).Count() == 0) + { + INetFwOpenPort openPort = (INetFwOpenPort)Activator.CreateInstance( + Type.GetTypeFromCLSID(new Guid("{0CA545C6-37AD-4A6C-BF92-9F7610067EF5}"))); + openPort.Enabled = true; + openPort.Port = port; + openPort.Protocol = (isTCP ? NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP : NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP); + openPort.Name = "Vocaluxe"; + + openPorts.Add(openPort); + } + } + } /*public static X509Certificate2 getCert(string subject) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); diff --git a/WebserverInitalConfig/Program.cs b/WebserverInitalConfig/Program.cs index a069eb29..a33f74e0 100644 --- a/WebserverInitalConfig/Program.cs +++ b/WebserverInitalConfig/Program.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.IO; using System.Linq; using System.Net; using System.Security.Principal; @@ -18,6 +19,8 @@ namespace WebserverInitalConfig Console.WriteLine("Usage: WebserverInitalConfig port isHttps"); } + ConfigHttpApi.addFirewallrule(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"Vocaluxe.exe"), Int32.Parse(args[0]), true); + if (args[1].ToLower() == "true") { string hostname = Dns.GetHostName(); diff --git a/WebserverInitalConfig/WebserverInitalConfig.csproj b/WebserverInitalConfig/WebserverInitalConfig.csproj index d0c002d0..50e8b62d 100644 --- a/WebserverInitalConfig/WebserverInitalConfig.csproj +++ b/WebserverInitalConfig/WebserverInitalConfig.csproj @@ -61,6 +61,17 @@ Designer + + + {58FBCF7C-E7A9-467C-80B3-FC65E8FCCA08} + 1 + 0 + 0 + tlbimp + False + True + +