summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOdd Stranne <odd@mullvad.net>2018-09-04 14:51:00 +0200
committerOdd Stranne <odd@mullvad.net>2018-09-04 14:51:00 +0200
commit268bab1aef021178b33d9190fa0b3c5c00fbe250 (patch)
treee17cb5ab3d0584a725ed509617955e05c9754850
parent09cf70c318a697e360c91c8d2fd2dca5a9520f7d (diff)
downloadmullvadvpn-268bab1aef021178b33d9190fa0b3c5c00fbe250.tar.xz
mullvadvpn-268bab1aef021178b33d9190fa0b3c5c00fbe250.zip
Rename 'ApplyPolicyNetBlocked' into 'ApplyPolicyBlocked' and extend with args
-rw-r--r--windows/winfw/src/extras/cli/commands/winfw/policy.cpp14
-rw-r--r--windows/winfw/src/extras/cli/commands/winfw/policy.h2
-rw-r--r--windows/winfw/src/winfw/fwcontext.cpp3
-rw-r--r--windows/winfw/src/winfw/fwcontext.h2
-rw-r--r--windows/winfw/src/winfw/winfw.cpp5
-rw-r--r--windows/winfw/src/winfw/winfw.def2
-rw-r--r--windows/winfw/src/winfw/winfw.h8
7 files changed, 23 insertions, 13 deletions
diff --git a/windows/winfw/src/extras/cli/commands/winfw/policy.cpp b/windows/winfw/src/extras/cli/commands/winfw/policy.cpp
index 04906332aa..decead0596 100644
--- a/windows/winfw/src/extras/cli/commands/winfw/policy.cpp
+++ b/windows/winfw/src/extras/cli/commands/winfw/policy.cpp
@@ -55,8 +55,8 @@ Policy::Policy(MessageSink messageSink)
m_dispatcher.addSubcommand
(
- L"netblocked",
- std::bind(&Policy::processNetBlocked, this)
+ L"blocked",
+ std::bind(&Policy::processBlocked, this, std::placeholders::_1)
);
m_dispatcher.addSubcommand
@@ -149,9 +149,15 @@ void Policy::processConnected(const KeyValuePairs &arguments)
: L"Failed to apply policy."));
}
-void Policy::processNetBlocked()
+void Policy::processBlocked(const KeyValuePairs &arguments)
{
- auto success = WinFw_ApplyPolicyNetBlocked();
+ auto settings = detail::CreateSettings
+ (
+ GetArgumentValue(arguments, L"dhcp"),
+ GetArgumentValue(arguments, L"lan")
+ );
+
+ auto success = WinFw_ApplyPolicyBlocked(settings);
m_messageSink((success
? L"Successfully applied policy."
diff --git a/windows/winfw/src/extras/cli/commands/winfw/policy.h b/windows/winfw/src/extras/cli/commands/winfw/policy.h
index 5d4d15e6b1..54d354a6d5 100644
--- a/windows/winfw/src/extras/cli/commands/winfw/policy.h
+++ b/windows/winfw/src/extras/cli/commands/winfw/policy.h
@@ -28,7 +28,7 @@ private:
void processConnecting(const KeyValuePairs &arguments);
void processConnected(const KeyValuePairs &arguments);
- void processNetBlocked();
+ void processBlocked(const KeyValuePairs &arguments);
void processReset();
};
diff --git a/windows/winfw/src/winfw/fwcontext.cpp b/windows/winfw/src/winfw/fwcontext.cpp
index c20e70b37b..c25dbbbe0c 100644
--- a/windows/winfw/src/winfw/fwcontext.cpp
+++ b/windows/winfw/src/winfw/fwcontext.cpp
@@ -118,11 +118,12 @@ bool FwContext::applyPolicyConnected(const WinFwSettings &settings, const WinFwR
return applyRuleset(ruleset);
}
-bool FwContext::applyPolicyNetBlocked()
+bool FwContext::applyPolicyBlocked(const WinFwSettings &settings)
{
Ruleset ruleset;
AppendNetBlockedRules(ruleset);
+ AppendSettingsRules(ruleset, settings);
return applyRuleset(ruleset);
}
diff --git a/windows/winfw/src/winfw/fwcontext.h b/windows/winfw/src/winfw/fwcontext.h
index 00f952441e..d4198be9e4 100644
--- a/windows/winfw/src/winfw/fwcontext.h
+++ b/windows/winfw/src/winfw/fwcontext.h
@@ -15,7 +15,7 @@ public:
bool applyPolicyConnecting(const WinFwSettings &settings, const WinFwRelay &relay);
bool applyPolicyConnected(const WinFwSettings &settings, const WinFwRelay &relay, const wchar_t *tunnelInterfaceAlias, const wchar_t *primaryDns);
- bool applyPolicyNetBlocked();
+ bool applyPolicyBlocked(const WinFwSettings &settings);
bool reset();
diff --git a/windows/winfw/src/winfw/winfw.cpp b/windows/winfw/src/winfw/winfw.cpp
index 8071669b7d..233423d1cd 100644
--- a/windows/winfw/src/winfw/winfw.cpp
+++ b/windows/winfw/src/winfw/winfw.cpp
@@ -147,7 +147,8 @@ WinFw_ApplyPolicyConnected(
WINFW_LINKAGE
bool
WINFW_API
-WinFw_ApplyPolicyNetBlocked(
+WinFw_ApplyPolicyBlocked(
+ const WinFwSettings &settings
)
{
if (nullptr == g_fwContext)
@@ -157,7 +158,7 @@ WinFw_ApplyPolicyNetBlocked(
try
{
- return g_fwContext->applyPolicyNetBlocked();
+ return g_fwContext->applyPolicyBlocked(settings);
}
catch (std::exception &err)
{
diff --git a/windows/winfw/src/winfw/winfw.def b/windows/winfw/src/winfw/winfw.def
index ff028b76d0..e8ef663dae 100644
--- a/windows/winfw/src/winfw/winfw.def
+++ b/windows/winfw/src/winfw/winfw.def
@@ -5,5 +5,5 @@ WinFw_Initialize
WinFw_Deinitialize
WinFw_ApplyPolicyConnecting
WinFw_ApplyPolicyConnected
-WinFw_ApplyPolicyNetBlocked
+WinFw_ApplyPolicyBlocked
WinFw_Reset
diff --git a/windows/winfw/src/winfw/winfw.h b/windows/winfw/src/winfw/winfw.h
index 4a7b0d5730..38f92aacf2 100644
--- a/windows/winfw/src/winfw/winfw.h
+++ b/windows/winfw/src/winfw/winfw.h
@@ -127,15 +127,17 @@ WinFw_ApplyPolicyConnected(
);
//
-// ApplyPolicyNetBlocked:
+// ApplyPolicyBlocked:
//
-// Apply restrictions in the firewall that block all traffic.
+// Apply restrictions in the firewall that block all traffic, except:
+// - What is specified by settings
//
extern "C"
WINFW_LINKAGE
bool
WINFW_API
-WinFw_ApplyPolicyNetBlocked(
+WinFw_ApplyPolicyBlocked(
+ const WinFwSettings &settings
);
//