#include <iostream>
+#include <fstream>
#include <string>
#include <cstdlib>
#include <linux/limits.h>
+#include <sys/types.h>
+#include <dirent.h>
#include <cassert>
#include "application_service.h"
return res;
}
+int ApplicationService::get_process_id_by_name(const std::string& name)
+{
+ int pid = -1;
+
+ // Open the /proc directory
+ DIR* dp = opendir("/proc");
+
+ if(dp != NULL)
+ {
+ // Enumerate all entries in directory until process found
+ struct dirent* dirp;
+
+ while(pid < 0 && (dirp = readdir(dp)))
+ {
+ // Skip non-numeric entries
+ int id = atoi(dirp->d_name);
+ if(id > 0)
+ {
+ // Read contents of virtual /proc/{pid}/cmdline file
+ std::string cmdPath = std::string("/proc/") + dirp->d_name + std::string("/cmdline");
+ std::ifstream cmdFile(cmdPath.c_str());
+ std::string cmdLine;
+
+ getline(cmdFile, cmdLine);
+
+ if(!cmdLine.empty() && cmdLine.find(name) != std::string::npos)
+ {
+ pid = id;
+ break;
+ }
+ }
+ }
+ }
+
+ closedir(dp);
+
+ return pid;
+}
+
} // namespace NMD
*/
static std::string find_package_by_app_name(const std::string& app_name);
+ /**
+ * @brief Find process id by application name
+ * @details This API can be used to find out process id
+ * @param name [in] application name
+ * @return process id or -1
+ */
+ static int get_process_id_by_name(const std::string& name);
+
};
} // namespace NMD
#include "audit_trail_client.h"
#endif
#include "registration_mq.h"
+#include "application_service.h"
using namespace NetworkManager;
namespace PH = std::placeholders;
std::thread rmi_thread(&AgentPolicyService::run, &agent_policy_service);
#ifndef __BUILD_UBUNTU__
- AuditTrailClient audit_trail_client(iotivity->getDeviceID(), proxy_thread, report_handler, g_working_mode);
- audit_trail_client.start_auditing();
+ std::shared_ptr<AuditTrailClient> audit_trail_client = nullptr;
+
+ if(ApplicationService::get_process_id_by_name("audit-trail") != -1)
+ {
+ audit_trail_client = std::make_shared<AuditTrailClient>(iotivity->getDeviceID(), proxy_thread, report_handler, g_working_mode);
+ audit_trail_client->start_auditing();
+ }
#endif
while(m_running)
}
#ifndef __BUILD_UBUNTU__
- audit_trail_client.stop_auditing();
+ if(audit_trail_client)
+ audit_trail_client->stop_auditing();
#endif
if (proxy_thread)