1 // Copyright 2014 The Android Open Source Project 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 #ifndef FIREWALLD_FIREWALL_SERVICE_H_ 16 #define FIREWALLD_FIREWALL_SERVICE_H_ 17 18 #include <base/callback.h> 19 #include <base/macros.h> 20 #include <base/memory/scoped_ptr.h> 21 #include <base/memory/weak_ptr.h> 22 #include <brillo/dbus/dbus_object.h> 23 24 #include "dbus_bindings/org.chromium.Firewalld.h" 25 #if !defined(__ANDROID__) 26 # include "permission_broker/dbus-proxies.h" 27 #endif // __ANDROID__ 28 29 #include "iptables.h" 30 31 using CompletionAction = 32 brillo::dbus_utils::AsyncEventSequencer::CompletionAction; 33 34 namespace firewalld { 35 36 class FirewallService : public org::chromium::FirewalldAdaptor { 37 public: 38 explicit FirewallService( 39 brillo::dbus_utils::ExportedObjectManager* object_manager); 40 virtual ~FirewallService() = default; 41 42 // Connects to D-Bus system bus and exports methods. 43 void RegisterAsync(const CompletionAction& callback); 44 45 private: 46 #if !defined(__ANDROID__) 47 void OnPermissionBrokerRemoved(const dbus::ObjectPath& path); 48 #endif // __ANDROID__ 49 50 brillo::dbus_utils::DBusObject dbus_object_; 51 #if !defined(__ANDROID__) 52 std::unique_ptr<org::chromium::PermissionBroker::ObjectManagerProxy> 53 permission_broker_; 54 #endif // __ANDROID__ 55 IpTables iptables_; 56 57 base::WeakPtrFactory<FirewallService> weak_ptr_factory_{this}; 58 DISALLOW_COPY_AND_ASSIGN(FirewallService); 59 }; 60 61 } // namespace firewalld 62 63 #endif // FIREWALLD_FIREWALL_SERVICE_H_ 64