Add firewall rules always and also to private section (won't work otherwise)
This commit is contained in:
1 parent
14db90b91c
commit
a677a1ad8b
3 files changed
+50
-36
No files matched your search
@@ -92,7 +92,7 @@ namespace ServerLib
|
|||||||
#region server control
|
#region server control
|
||||||
private void _Init(int port, bool encrypted)
|
private void _Init(int port, bool encrypted)
|
||||||
{
|
{
|
||||||
string hostname = Dns.GetHostName();
|
string hostname = GetLocalAddress();
|
||||||
string protocol = (encrypted) ? "https" : "http";
|
string protocol = (encrypted) ? "https" : "http";
|
||||||
_BaseAddress = new Uri(protocol + "://" + hostname + ":" + port + "/");
|
_BaseAddress = new Uri(protocol + "://" + hostname + ":" + port + "/");
|
||||||
_Encrypted = encrypted;
|
_Encrypted = encrypted;
|
||||||
@@ -121,7 +121,7 @@ namespace ServerLib
|
|||||||
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
|
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
|
||||||
smb.HttpGetEnabled = true;
|
smb.HttpGetEnabled = true;
|
||||||
host.Description.Behaviors.Add(smb);*/
|
host.Description.Behaviors.Add(smb);*/
|
||||||
|
_RegisterUrlAndCert(_BaseAddress.Port);
|
||||||
_Host.Open();
|
_Host.Open();
|
||||||
}
|
}
|
||||||
catch (CommunicationException e)
|
catch (CommunicationException e)
|
||||||
|
|||||||
@@ -11,7 +11,11 @@ namespace WebserverInitalConfig
|
|||||||
{
|
{
|
||||||
public static class CConfigHttpApi
|
public static class CConfigHttpApi
|
||||||
{
|
{
|
||||||
|
// ReSharper disable InconsistentNaming
|
||||||
|
private const String CLSID_NetFwMgr = "{304CE942-6E39-40D8-943A-B913C40C9CD4}";
|
||||||
|
private const String CLSID_NetAuthApp = "{EC9846B3-2762-4A6B-A214-6ACB603462D2}";
|
||||||
|
private const String CLSID_NetOpenPort = "{0CA545C6-37AD-4A6C-BF92-9F7610067EF5}";
|
||||||
|
// ReSharper restore InconsistentNaming
|
||||||
public static void ReserveUrl(string networkString)
|
public static void ReserveUrl(string networkString)
|
||||||
{
|
{
|
||||||
HttpApi.ReserveURL(networkString, "D:(A;;GX;;;S-1-1-0)");
|
HttpApi.ReserveURL(networkString, "D:(A;;GX;;;S-1-1-0)");
|
||||||
@@ -82,43 +86,53 @@ namespace WebserverInitalConfig
|
|||||||
return cert;
|
return cert;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AddFirewallrule(string exePath, int port, bool isTCP)
|
private static void _AddFirewallRuleForProfile(INetFwProfile profile, string exePath, int port, bool isTCP)
|
||||||
{
|
{
|
||||||
INetFwMgr manage = (INetFwMgr)Activator.CreateInstance(
|
bool isFirewallEnabled = profile.FirewallEnabled;
|
||||||
Type.GetTypeFromCLSID(new Guid("{304CE942-6E39-40D8-943A-B913C40C9CD4}")));
|
|
||||||
bool isFirewallEnabled = manage.LocalPolicy.CurrentProfile.FirewallEnabled;
|
|
||||||
|
|
||||||
if (isFirewallEnabled)
|
if (!isFirewallEnabled)
|
||||||
|
return;
|
||||||
|
INetFwAuthorizedApplications applications = profile.AuthorizedApplications;
|
||||||
|
if (!(from INetFwAuthorizedApplication a in applications
|
||||||
|
where a.ProcessImageFileName == exePath
|
||||||
|
select a).Any())
|
||||||
{
|
{
|
||||||
INetFwAuthorizedApplications applications = manage.LocalPolicy.CurrentProfile.AuthorizedApplications;
|
INetFwAuthorizedApplication application = (INetFwAuthorizedApplication)Activator.CreateInstance(
|
||||||
if (!(from INetFwAuthorizedApplication a in applications
|
Type.GetTypeFromCLSID(new Guid(CLSID_NetAuthApp)));
|
||||||
where a.ProcessImageFileName == exePath
|
|
||||||
select a).Any())
|
|
||||||
{
|
|
||||||
INetFwAuthorizedApplication application = (INetFwAuthorizedApplication)Activator.CreateInstance(
|
|
||||||
Type.GetTypeFromCLSID(new Guid("{EC9846B3-2762-4A6B-A214-6ACB603462D2}")));
|
|
||||||
|
|
||||||
application.Name = "Vocaluxe";
|
application.Name = "Vocaluxe";
|
||||||
application.ProcessImageFileName = exePath;
|
application.ProcessImageFileName = exePath;
|
||||||
application.Enabled = true;
|
application.Enabled = true;
|
||||||
applications.Add(application);
|
application.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
|
||||||
}
|
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).Any())
|
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
INetFwOpenPorts openPorts = profile.GloballyOpenPorts;
|
||||||
|
NET_FW_IP_PROTOCOL_ protocol = isTCP ? NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP : NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP;
|
||||||
|
if (!(from INetFwOpenPort p in openPorts
|
||||||
|
where (p.Port == port &&
|
||||||
|
(p.Protocol == protocol))
|
||||||
|
select p).Any())
|
||||||
|
{
|
||||||
|
INetFwOpenPort openPort = (INetFwOpenPort)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid(CLSID_NetOpenPort)));
|
||||||
|
openPort.Enabled = true;
|
||||||
|
openPort.Port = port;
|
||||||
|
openPort.Protocol = protocol;
|
||||||
|
openPort.Name = "Vocaluxe("+port+")";
|
||||||
|
openPort.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
|
||||||
|
|
||||||
|
openPorts.Add(openPort);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void AddFirewallRule(string exePath, int port, bool isTCP)
|
||||||
|
{
|
||||||
|
INetFwMgr manage = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid(CLSID_NetFwMgr)));
|
||||||
|
//AddFirewallRuleForProfile(manage.LocalPolicy.CurrentProfile, exePath, port, isTCP);
|
||||||
|
//if (manage.CurrentProfileType != NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_STANDARD)
|
||||||
|
//Add to Home/Work(Private) and current net
|
||||||
|
//TODO: This somewhow adds 2 entries each instead of only one that is activated for Home/Work and public nets
|
||||||
|
_AddFirewallRuleForProfile(manage.LocalPolicy.GetProfileByType(NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_STANDARD), exePath, port, isTCP);
|
||||||
|
_AddFirewallRuleForProfile(manage.LocalPolicy.GetProfileByType(NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_CURRENT), exePath, port, isTCP);
|
||||||
}
|
}
|
||||||
/*public static X509Certificate2 getCert(string subject)
|
/*public static X509Certificate2 getCert(string subject)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace WebserverInitalConfig
|
|||||||
Environment.Exit(-1);
|
Environment.Exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
CConfigHttpApi.AddFirewallrule(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"Vocaluxe.exe"), Int32.Parse(args[0]), true);
|
CConfigHttpApi.AddFirewallRule(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"Vocaluxe.exe"), Int32.Parse(args[0]), true);
|
||||||
|
|
||||||
if (args[1].ToLower() == "true")
|
if (args[1].ToLower() == "true")
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in new issue
Block a user