1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_INSTALLER_UTIL_LEGACY_FIREWALL_MANAGER_WIN_H_ 6 #define CHROME_INSTALLER_UTIL_LEGACY_FIREWALL_MANAGER_WIN_H_ 7 8 #include <windows.h> 9 #include <netfw.h> 10 11 #include "base/files/file_path.h" 12 #include "base/strings/string16.h" 13 #include "base/win/scoped_comptr.h" 14 15 namespace installer { 16 17 // Manages firewall rules using Windows Firewall API. The API is 18 // available on Windows XP with SP2 and later. Applications should use 19 // |AdvancedFirewallManager| instead of this class on Windows Vista and later. 20 // Most methods need elevation. 21 class LegacyFirewallManager { 22 public: 23 LegacyFirewallManager(); 24 ~LegacyFirewallManager(); 25 26 // Initializes object to manage application win name |app_name| and path 27 // |app_path|. 28 bool Init(const base::string16& app_name, const base::FilePath& app_path); 29 30 // Returns true if firewall is enabled. 31 bool IsFirewallEnabled(); 32 33 // Returns true if function can read rule for the current app. Sets |value| 34 // true, if rule allows incoming connections, or false otherwise. 35 bool GetAllowIncomingConnection(bool* value); 36 37 // Allows or blocks all incoming connection for current app. Needs elevation. 38 bool SetAllowIncomingConnection(bool allow); 39 40 // Deletes rule for current app. Needs elevation. 41 void DeleteRule(); 42 43 private: 44 // Returns the authorized applications collection for the local firewall 45 // policy's current profile or an empty pointer in case of error. 46 base::win::ScopedComPtr<INetFwAuthorizedApplications> 47 GetAuthorizedApplications(); 48 49 // Creates rule for the current application. If |allow| is true, incoming 50 // connections are allowed, blocked otherwise. 51 base::win::ScopedComPtr<INetFwAuthorizedApplication> 52 CreateChromeAuthorization(bool allow); 53 54 base::string16 app_name_; 55 base::FilePath app_path_; 56 base::win::ScopedComPtr<INetFwProfile> current_profile_; 57 58 DISALLOW_COPY_AND_ASSIGN(LegacyFirewallManager); 59 }; 60 61 } // namespace installer 62 63 #endif // CHROME_INSTALLER_UTIL_LEGACY_FIREWALL_MANAGER_WIN_H_ 64