Hide RMI service object from policy class 94/65494/1
authorJaemin Ryu <jm77.ryu@samsung.com>
Mon, 11 Apr 2016 09:13:04 +0000 (18:13 +0900)
committerJaemin Ryu <jm77.ryu@samsung.com>
Mon, 11 Apr 2016 09:13:04 +0000 (18:13 +0900)
Change-Id: I15dc34ac67c7c2cb7415572d57d390153cf046ea
Signed-off-by: Jaemin Ryu <jm77.ryu@samsung.com>
server/administration.cpp
server/password.cpp
server/security.cpp
server/server.h
server/zone.cpp

index d0ef498..abf5df4 100644 (file)
@@ -22,10 +22,8 @@ namespace DevicePolicyManager {
 Administration::Administration(PolicyControlContext& ctx) :
     context(ctx)
 {
-    rmi::Service& manager = context.getServiceManager();
-
-    manager.registerParametricMethod(this, (int)(Administration::registerPolicyClient)(std::string));
-    manager.registerParametricMethod(this, (int)(Administration::deregisterPolicyClient)(std::string));
+    context.registerParametricMethod(this, (int)(Administration::registerPolicyClient)(std::string));
+    context.registerParametricMethod(this, (int)(Administration::deregisterPolicyClient)(std::string));
 }
 
 Administration::~Administration()
index c3b6b73..aebcf97 100644 (file)
@@ -99,34 +99,32 @@ int transformQualityFromDPMToAuth(const int dpm_quality, password_quality_type &
 Password::Password(PolicyControlContext &ctxt) :
     __context(ctxt)
 {
-    rmi::Service &manager = __context.getServiceManager();
-
-    manager.registerParametricMethod(this, (int)(Password::setPasswordQuality)(std::string, int));
-    manager.registerParametricMethod(this, (int)(Password::getPasswordQuality)(std::string));
-    manager.registerParametricMethod(this, (int)(Password::setPasswordMinimumLength)(std::string, int));
-    manager.registerParametricMethod(this, (int)(Password::getPasswordMinimumLength)(std::string));
-    manager.registerParametricMethod(this, (int)(Password::setMinPasswordComplexChars)(std::string, int));
-    manager.registerParametricMethod(this, (int)(Password::getMinPasswordComplexChars)(std::string));
-    manager.registerParametricMethod(this, (int)(Password::setMaximumFailedPasswordForWipe)(std::string, int));
-    manager.registerParametricMethod(this, (int)(Password::getMaximumFailedPasswordForWipe)(std::string));
-    manager.registerParametricMethod(this, (int)(Password::setPasswordExpires)(std::string, int));
-    manager.registerParametricMethod(this, (int)(Password::getPasswordExpires)(std::string));
-    manager.registerParametricMethod(this, (int)(Password::setPasswordHistory)(std::string, int));
-    manager.registerParametricMethod(this, (int)(Password::getPasswordHistory)(std::string));
-    manager.registerParametricMethod(this, (int)(Password::setPasswordPattern)(std::string, std::string));
-    manager.registerParametricMethod(this, (int)(Password::resetPassword)(std::string, std::string));
-    manager.registerParametricMethod(this, (int)(Password::enforcePasswordChange)(std::string));
-    manager.registerParametricMethod(this, (int)(Password::setMaxInactivityTimeDeviceLock)(std::string, int));
-    manager.registerParametricMethod(this, (int)(Password::getMaxInactivityTimeDeviceLock)(std::string));
-    manager.registerParametricMethod(this, (int)(Password::setPasswordStatus)(std::string, int));
-    manager.registerParametricMethod(this, (int)(Password::deletePasswordPattern)(std::string));
-    manager.registerParametricMethod(this, (std::string)(Password::getPasswordPattern)(std::string));
-    manager.registerParametricMethod(this, (int)(Password::setMaximumCharacterOccurrences)(std::string, int));
-    manager.registerParametricMethod(this, (int)(Password::getMaximumCharacterOccurrences)(std::string));
-    manager.registerParametricMethod(this, (int)(Password::setMaximumNumericSequenceLength)(std::string, int));
-    manager.registerParametricMethod(this, (int)(Password::getMaximumNumericSequenceLength)(std::string));
-    manager.registerParametricMethod(this, (int)(Password::setForbiddenStrings)(std::string, std::vector<std::string>));
-    manager.registerParametricMethod(this, (std::vector<std::string>)(Password::getForbiddenStrings)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setPasswordQuality)(std::string, int));
+    ctxt.registerParametricMethod(this, (int)(Password::getPasswordQuality)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setPasswordMinimumLength)(std::string, int));
+    ctxt.registerParametricMethod(this, (int)(Password::getPasswordMinimumLength)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setMinPasswordComplexChars)(std::string, int));
+    ctxt.registerParametricMethod(this, (int)(Password::getMinPasswordComplexChars)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setMaximumFailedPasswordForWipe)(std::string, int));
+    ctxt.registerParametricMethod(this, (int)(Password::getMaximumFailedPasswordForWipe)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setPasswordExpires)(std::string, int));
+    ctxt.registerParametricMethod(this, (int)(Password::getPasswordExpires)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setPasswordHistory)(std::string, int));
+    ctxt.registerParametricMethod(this, (int)(Password::getPasswordHistory)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setPasswordPattern)(std::string, std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::resetPassword)(std::string, std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::enforcePasswordChange)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setMaxInactivityTimeDeviceLock)(std::string, int));
+    ctxt.registerParametricMethod(this, (int)(Password::getMaxInactivityTimeDeviceLock)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setPasswordStatus)(std::string, int));
+    ctxt.registerParametricMethod(this, (int)(Password::deletePasswordPattern)(std::string));
+    ctxt.registerParametricMethod(this, (std::string)(Password::getPasswordPattern)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setMaximumCharacterOccurrences)(std::string, int));
+    ctxt.registerParametricMethod(this, (int)(Password::getMaximumCharacterOccurrences)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setMaximumNumericSequenceLength)(std::string, int));
+    ctxt.registerParametricMethod(this, (int)(Password::getMaximumNumericSequenceLength)(std::string));
+    ctxt.registerParametricMethod(this, (int)(Password::setForbiddenStrings)(std::string, std::vector<std::string>));
+    ctxt.registerParametricMethod(this, (std::vector<std::string>)(Password::getForbiddenStrings)(std::string));
 }
 
 Password::~Password()
index ee91e4c..849a435 100644 (file)
@@ -55,19 +55,17 @@ void WipeExternalMemoryCallback(int ret, void *user_data)
 Security::Security(PolicyControlContext& ctxt) :
     context(ctxt)
 {
-    rmi::Service& manager = context.getServiceManager();
-
-    manager.registerNonparametricMethod(this, (int)(Security::lockoutDevice));
-    manager.registerNonparametricMethod(this, (int)(Security::lockoutScreen));
-    manager.registerNonparametricMethod(this, (int)(Security::reboot));
-    manager.registerNonparametricMethod(this, (int)(Security::powerOffDevice));
-    manager.registerNonparametricMethod(this, (bool)(Security::isInternalStorageEncrypted));
-    manager.registerNonparametricMethod(this, (bool)(Security::isExternalStorageEncrypted));
-    manager.registerParametricMethod(this, (int)(Security::wipeData)(int));
-    manager.registerParametricMethod(this, (int)(Security::setInternalStorageEncryption)(bool));
-    manager.registerParametricMethod(this, (int)(Security::setExternalStorageEncryption)(bool));
-    manager.registerParametricMethod(this, (std::vector<std::string>)(Security::getFileNamesOnDevice)(std::string));
-    manager.registerParametricMethod(this, (std::vector<std::string>)(Security::getFileNamesWithAttributes)(std::string));
+    ctxt.registerNonparametricMethod(this, (int)(Security::lockoutDevice));
+    ctxt.registerNonparametricMethod(this, (int)(Security::lockoutScreen));
+    ctxt.registerNonparametricMethod(this, (int)(Security::reboot));
+    ctxt.registerNonparametricMethod(this, (int)(Security::powerOffDevice));
+    ctxt.registerNonparametricMethod(this, (bool)(Security::isInternalStorageEncrypted));
+    ctxt.registerNonparametricMethod(this, (bool)(Security::isExternalStorageEncrypted));
+    ctxt.registerParametricMethod(this, (int)(Security::wipeData)(int));
+    ctxt.registerParametricMethod(this, (int)(Security::setInternalStorageEncryption)(bool));
+    ctxt.registerParametricMethod(this, (int)(Security::setExternalStorageEncryption)(bool));
+    ctxt.registerParametricMethod(this, (std::vector<std::string>)(Security::getFileNamesOnDevice)(std::string));
+    ctxt.registerParametricMethod(this, (std::vector<std::string>)(Security::getFileNamesWithAttributes)(std::string));
 }
 
 Security::~Security()
@@ -81,7 +79,7 @@ int Security::lockoutDevice()
 
 int Security::lockoutScreen()
 {
-    Launchpad launchpad(context.getServiceManager().getPeerUid());
+    Launchpad launchpad(context.getPeerUid());
 
     if (launchpad.launch(APPID_LOCKSCREEN) < 0) {
         ERROR("Failed to launch lockscreen: " + APPID_LOCKSCREEN);
@@ -166,7 +164,7 @@ int Security::setInternalStorageEncryption(const bool encrypt)
         Bundle bundle;
         bundle.add("viewtype", encrypt ? "encryption" : "decryption");
 
-        Launchpad launchpad(context.getServiceManager().getPeerUid());
+        Launchpad launchpad(context.getPeerUid());
         if (launchpad.launch(APPID_DEVICE_ENCRYPTION, bundle) < 0) {
             ERROR("Failed to start device encryption");
             return -1;
index c1e676f..aff70ba 100644 (file)
@@ -30,12 +30,42 @@ public:
     void run();
     void terminate();
 
-    ClientManager& getClientManager() {
+    ClientManager& getClientManager()
+    {
         return clientManager;
     }
 
-    rmi::Service& getServiceManager() {
-        return *service;
+    template<typename Type, typename... Args>
+    void setMethodHandler(const std::string& method,
+                         const typename rmi::MethodHandler<Type, Args...>::type& handler)
+    {
+        service->setMethodHandler<Type, Args...>(method, handler);
+    }
+
+    template <typename... Args>
+       void notify(const std::string& name, Args&&... args)
+    {
+        service->notify<Args...>(name, std::forward<Args>(args)...);
+    }
+
+    uid_t getPeerUid() const
+    {
+        return service->getPeerUid();
+    }
+
+    gid_t getPeerGid() const
+    {
+        return service->getPeerGid();
+    }
+
+    pid_t getPeerPid() const
+    {
+        return service->getPeerPid();
+    }
+
+    void createNotification(const std::string& name)
+    {
+        service->createNotification(name);
     }
 
     FileDescriptor registerNotificationSubscriber(const std::string& name);
index 462f8c3..796a438 100644 (file)
@@ -103,17 +103,15 @@ void execute(const std::string& path, Args&&... args)
 Zone::Zone(PolicyControlContext& ctx)
     : context(ctx)
 {
-    rmi::Service& manager = context.getServiceManager();
-
-    manager.registerParametricMethod(this, (int)(Zone::createZone)(std::string, std::string));
-    manager.registerParametricMethod(this, (int)(Zone::removeZone)(std::string));
-    manager.registerParametricMethod(this, (int)(Zone::lockZone)(std::string));
-    manager.registerParametricMethod(this, (int)(Zone::unlockZone)(std::string));
-    manager.registerNonparametricMethod(this, (std::vector<std::string>)(Zone::getZoneList)());
-    manager.registerParametricMethod(this, (int)(Zone::getZoneState)(std::string));
-
-    manager.createNotification("Zone::created");
-    manager.createNotification("Zone::removed");
+    context.registerParametricMethod(this, (int)(Zone::createZone)(std::string, std::string));
+    context.registerParametricMethod(this, (int)(Zone::removeZone)(std::string));
+    context.registerParametricMethod(this, (int)(Zone::lockZone)(std::string));
+    context.registerParametricMethod(this, (int)(Zone::unlockZone)(std::string));
+    context.registerNonparametricMethod(this, (std::vector<std::string>)(Zone::getZoneList)());
+    context.registerParametricMethod(this, (int)(Zone::getZoneState)(std::string));
+
+    context.createNotification("Zone::created");
+    context.createNotification("Zone::removed");
 }
 
 Zone::~Zone()
@@ -123,7 +121,6 @@ Zone::~Zone()
 int Zone::createZone(const std::string& name, const std::string& setupWizAppid)
 {
     std::string provisionDirPath(ZONE_PROVISION_DIR + name);
-    rmi::Service& manager = context.getServiceManager();
     runtime::File provisionDir(provisionDirPath);
     int ret;
 
@@ -141,7 +138,7 @@ int Zone::createZone(const std::string& name, const std::string& setupWizAppid)
         ::bundle_add_str(b, "Name", name.c_str());
         ::bundle_add_str(b, "ProvisionDir", provisionDirPath.c_str());
 
-        ret = ::aul_launch_app_for_uid(setupWizAppid.c_str(), b, manager.getPeerUid());
+        ret = ::aul_launch_app_for_uid(setupWizAppid.c_str(), b, context.getPeerUid());
         ::bundle_free(b);
 
         if (ret < 0) {
@@ -149,7 +146,7 @@ int Zone::createZone(const std::string& name, const std::string& setupWizAppid)
         }
     } catch (runtime::Exception& e) {}
 
-    auto create = [&manager, name, setupWizAppid, provisionDirPath] {
+    auto create = [name, setupWizAppid, provisionDirPath, this] {
         std::unique_ptr<xml::Document> bundleXml;
         xml::Node::NodeList nodes;
         mode_t old_mask;
@@ -278,7 +275,7 @@ int Zone::createZone(const std::string& name, const std::string& setupWizAppid)
             //unlock the user
             setZoneState(user.getUid(), 1);
 
-            manager.notify("Zone::created", name, std::string());
+            context.notify("Zone::created", name, std::string());
         } catch (runtime::Exception& e) {
             ERROR(e.what());
         }
@@ -293,7 +290,6 @@ int Zone::createZone(const std::string& name, const std::string& setupWizAppid)
 
 int Zone::removeZone(const std::string& name)
 {
-    rmi::Service& manager = context.getServiceManager();
     int ret;
 
     //lock the user
@@ -302,7 +298,7 @@ int Zone::removeZone(const std::string& name)
         return -1;
     }
 
-    auto remove = [&manager, name] {
+    auto remove = [name, this] {
         runtime::File bundle(ZONE_MANIFEST_DIR + name + ".xml");
         std::unique_ptr<xml::Document> bundleXml;
         xml::Node::NodeList nodes;
@@ -341,7 +337,7 @@ int Zone::removeZone(const std::string& name)
 
             bundle.remove();
 
-            manager.notify("Zone::removed", name, std::string());
+            context.notify("Zone::removed", name, std::string());
         } catch (runtime::Exception& e) {
             ERROR(e.what());
             return;