From dcdf74eaedf697ab533f1d9f2760b65d04f6f76a Mon Sep 17 00:00:00 2001 From: "Paul Kerr [:pkerr]" Date: Fri, 26 Dec 2014 12:30:01 -0800 Subject: [PATCH 1/2] Bug 1115186: prevent network connections during loop module tests. r=MattN --- .../loop/test/mochitest/browser_fxa_login.js | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/browser/components/loop/test/mochitest/browser_fxa_login.js b/browser/components/loop/test/mochitest/browser_fxa_login.js index 6d6c4e7e861..041e31dcd5b 100644 --- a/browser/components/loop/test/mochitest/browser_fxa_login.js +++ b/browser/components/loop/test/mochitest/browser_fxa_login.js @@ -7,7 +7,7 @@ "use strict"; -const BASE_URL = "http://mochi.test:8888/browser/browser/components/loop/test/mochitest/loop_fxa.sjs?"; +const BASE_URL = Services.prefs.getCharPref("loop.server"); function* checkFxA401() { let err = MozLoopService.errors.get("login"); @@ -23,7 +23,7 @@ function* checkFxA401() { "state of loop button should be error after a 401 with login"); let loopPanel = document.getElementById("loop-notification-panel"); - yield loadLoopPanel({loopURL: BASE_URL }); + yield loadLoopPanel(); let loopDoc = document.getElementById("loop").contentDocument; is(loopDoc.querySelector(".alert-error .message").textContent, getLoopString("could_not_authenticate"), @@ -132,17 +132,22 @@ add_task(function* params_no_hawk_session() { add_task(function* params_nonJSON() { let loopServerUrl = Services.prefs.getCharPref("loop.server"); Services.prefs.setCharPref("loop.server", "https://localhost:3000/invalid"); - // Reset after changing the server so a new HawkClient is created - yield resetFxA(); + try { + // Reset after changing the server so a new HawkClient is created + yield resetFxA(); - let loginPromise = MozLoopService.logInToFxA(); - let caught = false; - yield loginPromise.catch(() => { - ok(true, "The login promise should be rejected due to non-JSON params"); - caught = true; - }); - ok(caught, "Should have caught the rejection"); - Services.prefs.setCharPref("loop.server", loopServerUrl); + let loginPromise = MozLoopService.logInToFxA(); + let caught = false; + yield loginPromise.catch(() => { + ok(true, "The login promise should be rejected due to non-JSON params"); + caught = true; + }); + ok(caught, "Should have caught the rejection"); + } catch (err) { + throw err; + } finally { + Services.prefs.setCharPref("loop.server", loopServerUrl); + } }); add_task(function* invalidState() { @@ -286,7 +291,7 @@ add_task(function* basicAuthorizationAndRegistration() { yield MozLoopService.promiseRegisteredWithServers(); let statusChangedPromise = promiseObserverNotified("loop-status-changed"); - yield loadLoopPanel({loopURL: BASE_URL, stayOnline: true}); + yield loadLoopPanel({stayOnline: true}); yield statusChangedPromise; let loopDoc = document.getElementById("loop").contentDocument; let visibleEmail = loopDoc.getElementsByClassName("user-identity")[0]; @@ -316,7 +321,7 @@ add_task(function* basicAuthorizationAndRegistration() { let loopPanel = document.getElementById("loop-notification-panel"); loopPanel.hidePopup(); statusChangedPromise = promiseObserverNotified("loop-status-changed"); - yield loadLoopPanel({loopURL: BASE_URL, stayOnline: true}); + yield loadLoopPanel({stayOnline: true}); yield statusChangedPromise; is(loopButton.getAttribute("state"), "", "state of loop button should return to empty after panel is opened"); loopPanel.hidePopup(); From f4a910cbf36e8d8a7e131226c718d4a9ff51e0e5 Mon Sep 17 00:00:00 2001 From: Robert Strong Date: Fri, 26 Dec 2014 13:57:33 -0800 Subject: [PATCH 2/2] Bug 1090535 - Add Windows Firewall whitelist entry. r=bbondy --- browser/installer/windows/nsis/installer.nsi | 3 + browser/installer/windows/nsis/shared.nsh | 7 + .../installer/windows/nsis/uninstaller.nsi | 2 + .../nsis/Contrib/liteFirewall/License.txt | 17 + .../nsis/Contrib/liteFirewall/ReadMe.txt | 39 ++ .../nsis/Contrib/liteFirewall/Sample.nsi | 25 ++ .../nsis/Contrib/liteFirewall/exdll.h | 97 +++++ .../Contrib/liteFirewall/liteFirewall.cpp | 408 ++++++++++++++++++ .../Contrib/liteFirewall/liteFirewall.dsp | 204 +++++++++ .../Contrib/liteFirewall/liteFirewall.dsw | 29 ++ .../Contrib/liteFirewall/liteFirewall.sln | 23 + .../Contrib/liteFirewall/liteFirewall.vcproj | 390 +++++++++++++++++ .../nsis/Contrib/liteFirewall/netfw.tlb | Bin 0 -> 12184 bytes other-licenses/nsis/Plugins/liteFirewallW.dll | Bin 0 -> 9216 bytes .../installer/windows/nsis/makensis.mk | 1 + 15 files changed, 1245 insertions(+) create mode 100644 other-licenses/nsis/Contrib/liteFirewall/License.txt create mode 100644 other-licenses/nsis/Contrib/liteFirewall/ReadMe.txt create mode 100644 other-licenses/nsis/Contrib/liteFirewall/Sample.nsi create mode 100644 other-licenses/nsis/Contrib/liteFirewall/exdll.h create mode 100644 other-licenses/nsis/Contrib/liteFirewall/liteFirewall.cpp create mode 100644 other-licenses/nsis/Contrib/liteFirewall/liteFirewall.dsp create mode 100644 other-licenses/nsis/Contrib/liteFirewall/liteFirewall.dsw create mode 100644 other-licenses/nsis/Contrib/liteFirewall/liteFirewall.sln create mode 100644 other-licenses/nsis/Contrib/liteFirewall/liteFirewall.vcproj create mode 100644 other-licenses/nsis/Contrib/liteFirewall/netfw.tlb create mode 100644 other-licenses/nsis/Plugins/liteFirewallW.dll diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi index 4d68d7521af..ece8db9885f 100755 --- a/browser/installer/windows/nsis/installer.nsi +++ b/browser/installer/windows/nsis/installer.nsi @@ -589,6 +589,9 @@ Section "-Application" APP_IDX ${EndUnless} ${EndIf} + ; Add the Firewall entries during install + Call AddFirewallEntries + !ifdef MOZ_MAINTENANCE_SERVICE ${If} $TmpVal == "HKLM" ; Add the registry keys for allowed certificates. diff --git a/browser/installer/windows/nsis/shared.nsh b/browser/installer/windows/nsis/shared.nsh index 44f58c5996c..198988f5d8b 100755 --- a/browser/installer/windows/nsis/shared.nsh +++ b/browser/installer/windows/nsis/shared.nsh @@ -115,6 +115,9 @@ FunctionEnd ; Win7 taskbar and start menu link maintenance Call FixShortcutAppModelIDs + ; Add the Firewall entries after an update + Call AddFirewallEntries + ; Only update the Clients\StartMenuInternet registry key values in HKLM if ; they don't exist or this installation is the same as the one set in those ; keys. @@ -1616,6 +1619,10 @@ Function FixShortcutAppModelIDs ${EndIf} FunctionEnd +Function AddFirewallEntries + liteFirewallW::AddRule "$INSTDIR\${FileMainEXE}" "${BrandShortName} ($INSTDIR)" +FunctionEnd + ; The !ifdef NO_LOG prevents warnings when compiling the installer.nsi due to ; this function only being used by the uninstaller.nsi. !ifdef NO_LOG diff --git a/browser/installer/windows/nsis/uninstaller.nsi b/browser/installer/windows/nsis/uninstaller.nsi index 20c9d55d8ee..acac6379c52 100755 --- a/browser/installer/windows/nsis/uninstaller.nsi +++ b/browser/installer/windows/nsis/uninstaller.nsi @@ -464,6 +464,8 @@ Section "Uninstall" ${EndIf} ${EndIf} + liteFirewallW::RemoveRule "$INSTDIR\${FileMainEXE}" "${BrandShortName} ($INSTDIR)" + ; Refresh desktop icons otherwise the start menu internet item won't be ; removed and other ugly things will happen like recreation of the app's ; clients registry key by the OS under some conditions. diff --git a/other-licenses/nsis/Contrib/liteFirewall/License.txt b/other-licenses/nsis/Contrib/liteFirewall/License.txt new file mode 100644 index 00000000000..5e9673682f5 --- /dev/null +++ b/other-licenses/nsis/Contrib/liteFirewall/License.txt @@ -0,0 +1,17 @@ +liteFirewall is based on nsisFirewall. + +nsisFirewall -- Small NSIS plugin for simple tasks with Windows Firewall +Web site: http://wiz0u.free.fr/prog/nsisFirewall + +Copyright (c) 2007-2009 Olivier Marcoux + +This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source distribution. + diff --git a/other-licenses/nsis/Contrib/liteFirewall/ReadMe.txt b/other-licenses/nsis/Contrib/liteFirewall/ReadMe.txt new file mode 100644 index 00000000000..42560ae0c02 --- /dev/null +++ b/other-licenses/nsis/Contrib/liteFirewall/ReadMe.txt @@ -0,0 +1,39 @@ +liteFirewall 1.0 -- based on nsisFirewall 1.2 + +http://liangsun.info/portfolio/nsis-plugin-litefirewall/ +http://nsis.sourceforge.net/LiteFirewall_Plugin + +--------------------------------------------------------- +liteFirewall resolved the issue nsisFirewall exists on Vista/Windows 7 platforms. +It support the profiles (private, domain, public) of firewall rules. +It support Unicode NSIS, while another firewall plugin SimpleFC not. +------------------------------------------------------------ + +Usage +---------------------------------------------------------- +liteFirewall::AddRule "" "" +liteFirewall::RemoveRule "" "" + + is the full path to the application you want to be authorized to + access the network (or accept incoming connections) + + is the title that will be given to this exception entry in the firewall + control panel list + + +Notes +----- +1) Your installer must be run with administrator rights for liteFirewall to work +2) When compiling with more recent compiler than VC60, you need to choose the compilation +option to use static MFC library. + +Sample scripts +-------------- + + ; Add NOTEPAD to the authorized list + liteFirewall::AddRule "$WINDIR\Notepad.exe" "liteFirewall Test" + Pop $0 + + ; Remove NOTEPAD from the authorized list + liteFirewall::RemoveRule "$WINDIR\Notepad.exe" "liteFirewall Test" + Pop $0 \ No newline at end of file diff --git a/other-licenses/nsis/Contrib/liteFirewall/Sample.nsi b/other-licenses/nsis/Contrib/liteFirewall/Sample.nsi new file mode 100644 index 00000000000..20b0be47cac --- /dev/null +++ b/other-licenses/nsis/Contrib/liteFirewall/Sample.nsi @@ -0,0 +1,25 @@ +; liteFirewall - Sample script + +!ifdef TARGETDIR +!addplugindir "${TARGETDIR}" +!else +!addplugindir "..\bin" +!endif + +Name "Sample liteFirewall" +OutFile "Sample.exe" +ShowInstDetails show + +Section "Main program" + ; Add NOTEPAD to the authorized list + liteFirewallW::AddRule "$WINDIR\Notepad.exe" "liteFirewall Test" + Pop $0 + Exec "rundll32.exe shell32.dll,Control_RunDLL firewall.cpl" + MessageBox MB_OK "Program added to Firewall exception list.$\r$\n(close the control panel before clicking OK)" + + ; Remove NOTEPAD from the authorized list + liteFirewallW::RemoveRule "$WINDIR\Notepad.exe" "liteFirewall Test" + Pop $0 + Exec "rundll32.exe shell32.dll,Control_RunDLL firewall.cpl" + MessageBox MB_OK "Program removed to Firewall exception list" +SectionEnd diff --git a/other-licenses/nsis/Contrib/liteFirewall/exdll.h b/other-licenses/nsis/Contrib/liteFirewall/exdll.h new file mode 100644 index 00000000000..feca246b5a4 --- /dev/null +++ b/other-licenses/nsis/Contrib/liteFirewall/exdll.h @@ -0,0 +1,97 @@ +#ifndef _EXDLL_H_ +#define _EXDLL_H_ + +// only include this file from one place in your DLL. +// (it is all static, if you use it in two places it will fail) + +#define EXDLL_INIT() { \ + g_stringsize=string_size; \ + g_stacktop=stacktop; \ + g_variables=variables; } + +// For page showing plug-ins +#define WM_NOTIFY_OUTER_NEXT (WM_USER+0x8) +#define WM_NOTIFY_CUSTOM_READY (WM_USER+0xd) +#define NOTIFY_BYE_BYE 'x' + +typedef struct _stack_t { + struct _stack_t *next; + TCHAR text[1]; // this should be the length of string_size +} stack_t; + + +static unsigned int g_stringsize; +static stack_t **g_stacktop; +static TCHAR *g_variables; + +static int __stdcall popstring(TCHAR *str); // 0 on success, 1 on empty stack +static void __stdcall pushstring(const TCHAR *str); + +enum +{ +INST_0, // $0 +INST_1, // $1 +INST_2, // $2 +INST_3, // $3 +INST_4, // $4 +INST_5, // $5 +INST_6, // $6 +INST_7, // $7 +INST_8, // $8 +INST_9, // $9 +INST_R0, // $R0 +INST_R1, // $R1 +INST_R2, // $R2 +INST_R3, // $R3 +INST_R4, // $R4 +INST_R5, // $R5 +INST_R6, // $R6 +INST_R7, // $R7 +INST_R8, // $R8 +INST_R9, // $R9 +INST_CMDLINE, // $CMDLINE +INST_INSTDIR, // $INSTDIR +INST_OUTDIR, // $OUTDIR +INST_EXEDIR, // $EXEDIR +INST_LANG, // $LANGUAGE +__INST_LAST +}; + + +// utility functions (not required but often useful) +static int __stdcall popstring(TCHAR *str) +{ + stack_t *th; + if (!g_stacktop || !*g_stacktop) return 1; + th=(*g_stacktop); + lstrcpy(str,th->text); + *g_stacktop = th->next; + GlobalFree((HGLOBAL)th); + return 0; +} + +static void __stdcall pushstring(const TCHAR *str) +{ + stack_t *th; + if (!g_stacktop) return; + th=(stack_t*)GlobalAlloc(GPTR,sizeof(stack_t)+g_stringsize*sizeof(TCHAR)); + lstrcpyn(th->text,str,g_stringsize); + th->next=*g_stacktop; + *g_stacktop=th; +} + +static TCHAR * __stdcall getuservariable(int varnum) +{ + if (varnum < 0 || varnum >= __INST_LAST) return NULL; + return g_variables+varnum*g_stringsize; +} + +static void __stdcall setuservariable(int varnum, const TCHAR *var) +{ + if (var != NULL && varnum >= 0 && varnum < __INST_LAST) + lstrcpy(g_variables + varnum*g_stringsize, var); +} + + + +#endif//_EXDLL_H_ \ No newline at end of file diff --git a/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.cpp b/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.cpp new file mode 100644 index 00000000000..5319938a040 --- /dev/null +++ b/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.cpp @@ -0,0 +1,408 @@ +/* +liteFirewall is based on nsisFirewall. +Modified by Liang Sun on 19, July, 2011 +http://liangsun.info/portfolio/nsis-plugin-litefirewall/ +http://nsis.sourceforge.net/LiteFirewall_Plugin +http://www.msnlite.org +*/ + +/* +nsisFirewall -- Small NSIS plugin for simple tasks with Windows Firewall +Web site: http://wiz0u.free.fr/prog/nsisFirewall + +Copyright (c) 2007-2009 Olivier Marcoux + +This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source distribution. +*/ +#include +#include +#include +//#include + +#ifdef NSIS +#include "exdll.h" +#endif + +//#import "libid:58FBCF7C-E7A9-467C-80B3-FC65E8FCCA08" +#import "netfw.tlb" +#include +using namespace NetFwTypeLib; + + +#pragma comment( lib, "ole32.lib" ) +#pragma comment( lib, "oleaut32.lib" ) +// Forward declarations + +#ifdef NSIS +HINSTANCE g_hInstance; +#endif + +HRESULT WFCOMInitialize(INetFwPolicy2** ppNetFwPolicy2); + +HRESULT AddRule(LPCTSTR ExceptionName, LPCTSTR ProcessPath) +{ + HRESULT result = CoInitialize(NULL); + if (FAILED(result)) + return result; + result = REGDB_E_CLASSNOTREG; + + HRESULT hrComInit = S_OK; + HRESULT hr = S_OK; + + INetFwPolicy2 *pNetFwPolicy2 = NULL; + INetFwRules *pFwRules = NULL; + INetFwRule *pFwRule = NULL; +/* Start Mozilla modification */ + INetFwRule *pFwRuleExisting = NULL; + +// long CurrentProfilesBitMask = 0; +/* End Mozilla modification */ + + BSTR bstrRuleName = SysAllocString(ExceptionName); + BSTR bstrApplicationName = SysAllocString(ProcessPath); + BSTR bstrRuleInterfaceType = SysAllocString(L"All"); + + // Initialize COM. + hrComInit = CoInitializeEx( + 0, + COINIT_APARTMENTTHREADED + ); + + // Ignore RPC_E_CHANGED_MODE; this just means that COM has already been + // initialized with a different mode. Since we don't care what the mode is, + // we'll just use the existing mode. + if (hrComInit != RPC_E_CHANGED_MODE) + { + if (FAILED(hrComInit)) + { + printf("CoInitializeEx failed: 0x%08lx\n", hrComInit); + goto Cleanup; + } + } + + // Retrieve INetFwPolicy2 + hr = WFCOMInitialize(&pNetFwPolicy2); + if (FAILED(hr)) + { + try + { + INetFwMgrPtr fwMgr(L"HNetCfg.FwMgr"); + if (fwMgr) + { + INetFwAuthorizedApplicationPtr app(L"HNetCfg.FwAuthorizedApplication"); + if (app) + { + app->ProcessImageFileName = ProcessPath; + app->Name = ExceptionName; + app->Scope = NetFwTypeLib::NET_FW_SCOPE_ALL; + app->IpVersion = NetFwTypeLib::NET_FW_IP_VERSION_ANY; + app->Enabled = VARIANT_TRUE; + fwMgr->LocalPolicy->CurrentProfile->AuthorizedApplications->Add(app); + } + } + } + catch (_com_error& e) + { + printf("%s", e.Error()); + } + goto Cleanup; + } + + // Retrieve INetFwRules + hr = pNetFwPolicy2->get_Rules(&pFwRules); + if (FAILED(hr)) + { + printf("get_Rules failed: 0x%08lx\n", hr); + goto Cleanup; + } + +/* Start Mozilla modification */ + // Don't add a new rule if there is an existing rule with the same name. + hr = pFwRules->Item(bstrRuleName, &pFwRuleExisting); + // Release the INetFwRule object + if (pFwRuleExisting != NULL) + { + pFwRuleExisting->Release(); + } + if (SUCCEEDED(hr)) + { + printf("Firewall profile already exists\n"); + goto Cleanup; + } + + // Retrieve Current Profiles bitmask +// hr = pNetFwPolicy2->get_CurrentProfileTypes(&CurrentProfilesBitMask); +// if (FAILED(hr)) +// { +// printf("get_CurrentProfileTypes failed: 0x%08lx\n", hr); +// goto Cleanup; +// } + + // When possible we avoid adding firewall rules to the \ profile. + // If Public is currently active and it is not the only active profile, we remove it from the bitmask +// if ((CurrentProfilesBitMask & NET_FW_PROFILE2_PUBLIC) && +// (CurrentProfilesBitMask != NET_FW_PROFILE2_PUBLIC)) +// { +// CurrentProfilesBitMask ^= NET_FW_PROFILE2_PUBLIC; +// } + + // Create a new Firewall Rule object. + hr = CoCreateInstance( + __uuidof(NetFwRule), + NULL, + CLSCTX_INPROC_SERVER, + __uuidof(INetFwRule), + (void**)&pFwRule); + if (FAILED(hr)) + { + printf("CoCreateInstance for Firewall Rule failed: 0x%08lx\n", hr); + goto Cleanup; + } + + // Populate the Firewall Rule object + pFwRule->put_Name(bstrRuleName); + pFwRule->put_Protocol(NetFwTypeLib::NET_FW_IP_PROTOCOL_TCP); + pFwRule->put_InterfaceTypes(bstrRuleInterfaceType); + pFwRule->put_Profiles(NET_FW_PROFILE2_PRIVATE); + pFwRule->put_Action(NET_FW_ACTION_ALLOW); + pFwRule->put_Enabled(VARIANT_TRUE); + + pFwRule->put_ApplicationName(bstrApplicationName); + // Add the Firewall Rule + hr = pFwRules->Add(pFwRule); + if (FAILED(hr)) + { + printf("Firewall Rule Add failed: 0x%08lx\n", hr); + goto Cleanup; + } + + pFwRule->Release(); +/* End Mozilla modification */ + + // Create a new Firewall Rule object. + hr = CoCreateInstance( + __uuidof(NetFwRule), + NULL, + CLSCTX_INPROC_SERVER, + __uuidof(INetFwRule), + (void**)&pFwRule); + if (FAILED(hr)) + { + printf("CoCreateInstance for Firewall Rule failed: 0x%08lx\n", hr); + goto Cleanup; + } + + // Populate the Firewall Rule object + pFwRule->put_Name(bstrRuleName); +/* Start Mozilla modification */ +// pFwRule->put_Protocol(NET_FW_IP_PROTOCOL_ANY); + pFwRule->put_Protocol(NetFwTypeLib::NET_FW_IP_PROTOCOL_UDP); +/* End Mozilla modification */ + pFwRule->put_InterfaceTypes(bstrRuleInterfaceType); +/* Start Mozilla modification */ +// pFwRule->put_Profiles(CurrentProfilesBitMask); + pFwRule->put_Profiles(NET_FW_PROFILE2_PRIVATE); +/* End Mozilla modification */ + pFwRule->put_Action(NET_FW_ACTION_ALLOW); + pFwRule->put_Enabled(VARIANT_TRUE); + + pFwRule->put_ApplicationName(bstrApplicationName); + // Add the Firewall Rule + hr = pFwRules->Add(pFwRule); + if (FAILED(hr)) + { + printf("Firewall Rule Add failed: 0x%08lx\n", hr); + goto Cleanup; + } + +Cleanup: + + // Free BSTR's + SysFreeString(bstrRuleName); + SysFreeString(bstrApplicationName); + SysFreeString(bstrRuleInterfaceType); + + // Release the INetFwRule object + if (pFwRule != NULL) + { + pFwRule->Release(); + } + + // Release the INetFwRules object + if (pFwRules != NULL) + { + pFwRules->Release(); + } + + // Release the INetFwPolicy2 object + if (pNetFwPolicy2 != NULL) + { + pNetFwPolicy2->Release(); + } + + CoUninitialize(); + return 0; +} + +HRESULT RemoveRule(LPCTSTR ExceptionName, LPCTSTR ProcessPath) +{ + HRESULT result = CoInitialize(NULL); + if (FAILED(result)) + return result; + try + { + INetFwMgrPtr fwMgr(L"HNetCfg.FwMgr"); + if (fwMgr) + { + fwMgr->LocalPolicy->CurrentProfile->AuthorizedApplications->Remove(ProcessPath); + result = S_OK; + } + } + catch (_com_error& e) + { + e; + } + HRESULT hrComInit = S_OK; + HRESULT hr = S_OK; + + INetFwPolicy2 *pNetFwPolicy2 = NULL; + INetFwRules *pFwRules = NULL; + +/* Start Mozilla modification */ +// long CurrentProfilesBitMask = 0; +/* End Mozilla modification */ + + BSTR bstrRuleName = SysAllocString(ExceptionName); + + // Retrieve INetFwPolicy2 + hr = WFCOMInitialize(&pNetFwPolicy2); + if (FAILED(hr)) + { + goto Cleanup; + } + + // Retrieve INetFwRules + hr = pNetFwPolicy2->get_Rules(&pFwRules); + if (FAILED(hr)) + { + printf("get_Rules failed: 0x%08lx\n", hr); + goto Cleanup; + } + +/* Start Mozilla modification */ + // Retrieve Current Profiles bitmask +// hr = pNetFwPolicy2->get_CurrentProfileTypes(&CurrentProfilesBitMask); +// if (FAILED(hr)) +// { +// printf("get_CurrentProfileTypes failed: 0x%08lx\n", hr); +// goto Cleanup; +// } + + // When possible we avoid adding firewall rules to the Public profile. + // If Public is currently active and it is not the only active profile, we remove it from the bitmask +// if ((CurrentProfilesBitMask & NET_FW_PROFILE2_PUBLIC) && +// (CurrentProfilesBitMask != NET_FW_PROFILE2_PUBLIC)) +// { +// CurrentProfilesBitMask ^= NET_FW_PROFILE2_PUBLIC; +// } +/* End Mozilla modification */ + + // Remove the Firewall Rule + hr = pFwRules->Remove(bstrRuleName); + if (FAILED(hr)) + { + printf("Firewall Rule Remove failed: 0x%08lx\n", hr); + goto Cleanup; + } + +Cleanup: + + // Free BSTR's + SysFreeString(bstrRuleName); + + // Release the INetFwRules object + if (pFwRules != NULL) + { + pFwRules->Release(); + } + + // Release the INetFwPolicy2 object + if (pNetFwPolicy2 != NULL) + { + pNetFwPolicy2->Release(); + } + + CoUninitialize(); + return 0; +} + + +#ifdef NSIS +extern "C" void __declspec(dllexport) AddRule(HWND hwndParent, int string_size, + TCHAR *variables, stack_t **stacktop) +{ + EXDLL_INIT(); + + TCHAR ExceptionName[256], ProcessPath[MAX_PATH]; + popstring(ProcessPath); + popstring(ExceptionName); + HRESULT result = AddRule(ExceptionName, ProcessPath); + // push the result back to NSIS + TCHAR intBuffer[16]; + wsprintf(intBuffer, _T("%d"), result); + pushstring(intBuffer); +} + +extern "C" void __declspec(dllexport) RemoveRule(HWND hwndParent, int string_size, + TCHAR *variables, stack_t **stacktop) +{ + EXDLL_INIT(); + + TCHAR ExceptionName[256], ProcessPath[MAX_PATH]; + popstring(ProcessPath); + popstring(ExceptionName); + HRESULT result = RemoveRule(ExceptionName, ProcessPath); + // push the result back to NSIS + TCHAR intBuffer[16]; + wsprintf(intBuffer, _T("%d"), result); + pushstring(intBuffer); +} + +extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD, LPVOID) +{ + g_hInstance = hInstance; + return TRUE; +} +#endif + + +// Instantiate INetFwPolicy2 + +HRESULT WFCOMInitialize(INetFwPolicy2** ppNetFwPolicy2) +{ + HRESULT hr = S_OK; + + hr = CoCreateInstance( + __uuidof(NetFwPolicy2), + NULL, + CLSCTX_INPROC_SERVER, + __uuidof(INetFwPolicy2), + (void**)ppNetFwPolicy2); + + if (FAILED(hr)) + { + printf("CoCreateInstance for INetFwPolicy2 failed: 0x%08lx\n", hr); + goto Cleanup; + } + +Cleanup: + return hr; +} diff --git a/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.dsp b/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.dsp new file mode 100644 index 00000000000..cae606b4cb4 --- /dev/null +++ b/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.dsp @@ -0,0 +1,204 @@ +# Microsoft Developer Studio Project File - Name="liteFirewall" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=liteFirewall - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "liteFirewall.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "liteFirewall.mak" CFG="liteFirewall - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "liteFirewall - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "liteFirewall - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "liteFirewall - Win32 Release UNICODE" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "liteFirewall - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /Zi /O1 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O1 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "NSIS" /FR /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib shlwapi.lib /nologo /dll /machine:I386 /out:"../bin/liteFirewall.dll" /OPT:REF /OPT:NOWIN98 +# SUBTRACT LINK32 /pdb:none /debug /nodefaultlib +# Begin Special Build Tool +IntDir=.\Release +ProjDir=. +TargetDir=\Prog\shared\bin +SOURCE="$(InputPath)" +PostBuild_Desc=Building Sample Installer... +PostBuild_Cmds="%ProgramFiles%\NSIS\makensis" /V2 "/DTARGETDIR=$(TargetDir)" "/DINTDIR=$(IntDir)" "$(ProjDir)\Sample.nsi" +# End Special Build Tool + +!ELSEIF "$(CFG)" == "liteFirewall - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "NSIS" /FR /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib shlwapi.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# SUBTRACT LINK32 /nodefaultlib +# Begin Special Build Tool +IntDir=.\Debug +ProjDir=. +TargetDir=.\Debug +SOURCE="$(InputPath)" +PostBuild_Desc=Building Sample Installer... +PostBuild_Cmds="%ProgramFiles%\NSIS\makensis" /V4 /DTARGETDIR=$(TargetDir) /DINTDIR=$(IntDir) $(ProjDir)\Sample.nsi +# End Special Build Tool + +!ELSEIF "$(CFG)" == "liteFirewall - Win32 Release UNICODE" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release_UNICODE" +# PROP BASE Intermediate_Dir "Release_UNICODE" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release_UNICODE" +# PROP Intermediate_Dir "Release_UNICODE" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /Zi /O1 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "NSIS" /FR /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O1 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "NSIS" /FR /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib shlwapi.lib /nologo /dll /machine:I386 /out:"../bin/liteFirewall.dll" /OPT:REF /OPT:NOWIN98 +# SUBTRACT BASE LINK32 /pdb:none /debug /nodefaultlib +# ADD LINK32 kernel32.lib user32.lib shlwapi.lib /nologo /dll /machine:I386 /out:"../bin/liteFirewallW.dll" /OPT:REF /OPT:NOWIN98 +# SUBTRACT LINK32 /pdb:none /debug /nodefaultlib +# Begin Special Build Tool +IntDir=.\Release_UNICODE +ProjDir=. +TargetDir=\Prog\shared\bin +SOURCE="$(InputPath)" +PostBuild_Desc=Building Sample Installer... +PostBuild_Cmds="%ProgramFiles%\NSIS\makensis" /V2 "/DTARGETDIR=$(TargetDir)" "/DINTDIR=$(IntDir)" "$(ProjDir)\Sample.nsi" +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "liteFirewall - Win32 Release" +# Name "liteFirewall - Win32 Debug" +# Name "liteFirewall - Win32 Release UNICODE" +# Begin Source File + +SOURCE=.\exdll.h +# End Source File +# Begin Source File + +SOURCE=.\License.txt +# End Source File +# Begin Source File + +SOURCE=.\liteFirewall.cpp +# End Source File +# Begin Source File + +SOURCE=.\ReadMe.txt +# End Source File +# Begin Source File + +SOURCE=.\Sample.nsi + +!IF "$(CFG)" == "liteFirewall - Win32 Release" + +# Begin Custom Build +ProjDir=. +InputPath=.\Sample.nsi + +"$(ProjDir)\Sample.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + rem Force Post-Build Step + +# End Custom Build + +!ELSEIF "$(CFG)" == "liteFirewall - Win32 Debug" + +# Begin Custom Build +ProjDir=. +InputPath=.\Sample.nsi + +"$(ProjDir)\Sample.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + rem Force Post-Build Step + +# End Custom Build + +!ELSEIF "$(CFG)" == "liteFirewall - Win32 Release UNICODE" + +# Begin Custom Build +ProjDir=. +InputPath=.\Sample.nsi + +"$(ProjDir)\Sample.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + rem Force Post-Build Step + +# End Custom Build + +!ENDIF + +# End Source File +# End Target +# End Project diff --git a/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.dsw b/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.dsw new file mode 100644 index 00000000000..d4ca962de04 --- /dev/null +++ b/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "liteFirewall"=.\liteFirewall.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.sln b/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.sln new file mode 100644 index 00000000000..e62a48e344f --- /dev/null +++ b/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.sln @@ -0,0 +1,23 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liteFirewall", "liteFirewall.vcproj", "{F7462DF9-A430-4185-9AFC-8FAEA0FB98EA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release UNICODE|Win32 = Release UNICODE|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F7462DF9-A430-4185-9AFC-8FAEA0FB98EA}.Debug|Win32.ActiveCfg = Debug|Win32 + {F7462DF9-A430-4185-9AFC-8FAEA0FB98EA}.Debug|Win32.Build.0 = Debug|Win32 + {F7462DF9-A430-4185-9AFC-8FAEA0FB98EA}.Release UNICODE|Win32.ActiveCfg = Release UNICODE|Win32 + {F7462DF9-A430-4185-9AFC-8FAEA0FB98EA}.Release UNICODE|Win32.Build.0 = Release UNICODE|Win32 + {F7462DF9-A430-4185-9AFC-8FAEA0FB98EA}.Release|Win32.ActiveCfg = Release|Win32 + {F7462DF9-A430-4185-9AFC-8FAEA0FB98EA}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.vcproj b/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.vcproj new file mode 100644 index 00000000000..e1832b7ce6e --- /dev/null +++ b/other-licenses/nsis/Contrib/liteFirewall/liteFirewall.vcproj @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/other-licenses/nsis/Contrib/liteFirewall/netfw.tlb b/other-licenses/nsis/Contrib/liteFirewall/netfw.tlb new file mode 100644 index 0000000000000000000000000000000000000000..18ff3481a6d37aa1282c8dc1cfa47efc1bd4b0a0 GIT binary patch literal 12184 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 literal 0 HcmV?d00001 diff --git a/toolkit/mozapps/installer/windows/nsis/makensis.mk b/toolkit/mozapps/installer/windows/nsis/makensis.mk index 417a5ea26f5..097330192b1 100644 --- a/toolkit/mozapps/installer/windows/nsis/makensis.mk +++ b/toolkit/mozapps/installer/windows/nsis/makensis.mk @@ -30,6 +30,7 @@ CUSTOM_NSIS_PLUGINS = \ CityHash.dll \ InetBgDL.dll \ InvokeShellVerb.dll \ + liteFirewallW.dll \ ServicesHelper.dll \ ShellLink.dll \ UAC.dll \