Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / installer / util / legacy_firewall_manager_win.h
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_