From 56a9b5d4928cb01fa3079fbd6b41ebe892405f83 Mon Sep 17 00:00:00 2001 From: "i.metelytsia" Date: Wed, 19 Jul 2017 18:38:37 +0300 Subject: [PATCH] audit-trail client added --- device_core/nmdaemon/audit_trail_client.cpp | 23 +++++++---------------- device_core/nmdaemon/audit_trail_client.h | 4 +--- device_core/nmdaemon/main_thread.cpp | 5 +++-- 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/device_core/nmdaemon/audit_trail_client.cpp b/device_core/nmdaemon/audit_trail_client.cpp index 0ec174f..4e24c81 100644 --- a/device_core/nmdaemon/audit_trail_client.cpp +++ b/device_core/nmdaemon/audit_trail_client.cpp @@ -14,21 +14,14 @@ namespace NMD { -void threadFunc(AuditTrailClient* client, std::string log) -{ - assert(client); - client->sendReport(log); -} - void logCallback(const char* log, void* user_data) { assert(log); assert(user_data); - std::string str{log}; - str.erase(std::remove(str.begin(), str.end(), '"'), str.end()); - std::thread thr(threadFunc, reinterpret_cast(user_data), str); - thr.detach(); + AuditTrailClient* client = reinterpret_cast(user_data); + assert(client); + client->m_proxy_thread->addAction(std::async(std::launch::deferred, &AuditTrailClient::sendReport, client, std::string{log})); } AuditTrailClient::AuditTrailClient(const std::string& device_id, std::shared_ptr proxy_thread, std::shared_ptr report_handler, WorkingMode mode) @@ -36,7 +29,7 @@ AuditTrailClient::AuditTrailClient(const std::string& device_id, std::shared_ptr m_audit_trail(nullptr), m_dac_cb_id(-1), m_mac_cb_id(-1), m_syscall_cb_id(-1) { assert(m_device_id != ""); -// assert(m_proxy_thread); + assert(m_proxy_thread); assert(m_report_handler); if(audit_trail_create(&m_audit_trail) != AUDIT_TRAIL_ERROR_NONE) @@ -56,7 +49,6 @@ bool AuditTrailClient::start_dac_auditing() void AuditTrailClient::stop_dac_auditing() { - assert(m_dac_cb_id != -1); audit_trail_remove_dac_cb(m_audit_trail, m_dac_cb_id); } @@ -68,7 +60,6 @@ bool AuditTrailClient::start_mac_auditing() void AuditTrailClient::stop_mac_auditing() { - assert(m_mac_cb_id != -1); audit_trail_remove_mac_cb(m_audit_trail, m_mac_cb_id); } @@ -80,7 +71,6 @@ bool AuditTrailClient::start_syscall_auditing() void AuditTrailClient::stop_syscall_auditing() { - assert(m_syscall_cb_id != -1); audit_trail_remove_syscall_cb(m_audit_trail, m_syscall_cb_id); } @@ -96,15 +86,16 @@ void AuditTrailClient::stop_auditing() stop_syscall_auditing(); } -void AuditTrailClient::sendReport(const std::string& report) +void AuditTrailClient::sendReport(std::string report) { + report.erase(std::remove(report.begin(), report.end(), '"'), report.end()); + OC::OCRepresentation rpr; rpr.setValue("report", makeReport(m_device_id, "smack", 0, report)); rpr.setValue("duid", m_device_id); if (m_mode == WorkingMode::Hub) { - assert(m_proxy_thread); m_proxy_thread->addAction(std::async(std::launch::deferred, &ReportHandler::pass, m_report_handler, rpr, OC::QueryParamsMap{})); } else diff --git a/device_core/nmdaemon/audit_trail_client.h b/device_core/nmdaemon/audit_trail_client.h index 49009ed..bac23e8 100644 --- a/device_core/nmdaemon/audit_trail_client.h +++ b/device_core/nmdaemon/audit_trail_client.h @@ -21,8 +21,6 @@ namespace NMD */ class AuditTrailClient { - friend void threadFunc(AuditTrailClient* client, std::string log); - /** * @brief DAC, MAC and system calls log callback * @details Called when a new log occurs @@ -91,7 +89,7 @@ public: void stop_auditing(); private: - void sendReport(const std::string& report); + void sendReport(std::string report); std::string m_device_id; std::shared_ptr m_proxy_thread; diff --git a/device_core/nmdaemon/main_thread.cpp b/device_core/nmdaemon/main_thread.cpp index 9d5f282..2b8cf20 100644 --- a/device_core/nmdaemon/main_thread.cpp +++ b/device_core/nmdaemon/main_thread.cpp @@ -132,10 +132,11 @@ void MainThread::routine() std::this_thread::sleep_for(std::chrono::seconds(10)); } + proxy_thread = std::make_shared(); + proxy_thread->start(); + if (g_working_mode == WorkingMode::Hub) { - proxy_thread = std::make_shared(); - proxy_thread->start(); hub = std::make_shared(iotivity, proxy_thread, hub_file_path_name); if(OC_STACK_OK != hub->registerResource()) -- 2.7.4