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()
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()
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()
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);
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;
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);
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()
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;
::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) {
}
} 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;
//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());
}
int Zone::removeZone(const std::string& name)
{
- rmi::Service& manager = context.getServiceManager();
int ret;
//lock the user
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;
bundle.remove();
- manager.notify("Zone::removed", name, std::string());
+ context.notify("Zone::removed", name, std::string());
} catch (runtime::Exception& e) {
ERROR(e.what());
return;