| 15 | namespace DevPosture { |
| 16 | |
| 17 | ModuleHandler::ModuleHandler(Module::UPtr mod, const bool external) |
| 18 | : DBus::Object::Base(PATH_DEVPOSTURE + "/modules/" + mod->name(), |
| 19 | Constants::GenInterface("devicecheck")), |
| 20 | module_(std::move(mod)), |
| 21 | prop_name_(module_->name()), |
| 22 | prop_type_(module_->type()), |
| 23 | prop_version_(module_->version()), |
| 24 | prop_external_(external) |
| 25 | |
| 26 | { |
| 27 | auto r_args = AddMethod( |
| 28 | "Run", |
| 29 | [this](DBus::Object::Method::Arguments::Ptr args) |
| 30 | { |
| 31 | GVariantBuilder *b = glib2::Builder::Create("a{sv}"); |
| 32 | |
| 33 | for (const auto &[key, value] : module_->Run({})) |
| 34 | { |
| 35 | g_variant_builder_add(b, "{sv}", key.c_str(), glib2::Value::Create(value)); |
| 36 | } |
| 37 | |
| 38 | args->SetMethodReturn(glib2::Builder::FinishWrapped(b)); |
| 39 | }); |
| 40 | |
| 41 | r_args->AddInput("input", "a{sv}"); |
| 42 | r_args->AddOutput("result", "a{sv}"); |
| 43 | |
| 44 | AddProperty("type", prop_type_, /* readwrite */ false); |
| 45 | AddProperty("name", prop_name_, /* readwrite */ false); |
| 46 | AddProperty("version", prop_version_, /* readwrite */ false); |
| 47 | AddProperty("external", prop_external_, /* readwrite */ false); |
| 48 | } |
| 49 | |
| 50 | |
| 51 | const bool ModuleHandler::Authorize(const DBus::Authz::Request::Ptr authzreq) |