Open WindowsFirewall-Port for Webserver

This commit is contained in:
lukeIam committed 2013-12-13 17:43:10 +01:00
1 parent 33252ab19c
commit 37e4108249
3 files changed
+52

No files matched your search

+38
View File
@@ -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();
+3
View File
@@ -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();
@@ -61,6 +61,17 @@
<SubType>Designer</SubType>
</None>
</ItemGroup>
<ItemGroup>
<COMReference Include="NetFwTypeLib">
<Guid>{58FBCF7C-E7A9-467C-80B3-FC65E8FCCA08}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.