2 * Samsung Ukraine R&D Center (SRK under a contract between)
3 * LLC "Samsung Electronics Co", Ltd (Seoul, Republic of Korea)
4 * Copyright (C) 2018 Samsung Electronics Co., Ltd. All rights reserved.
7 * @file audit_trail_client.h
8 * @brief AuditTrail Client
9 * @date Created Jul 19, 2017
10 * @author Mail to: <A HREF="mailto:i.metelytsia@samsung.com">Iurii Metelytsia, i.metelytsia@samsung.com</A>
13 #ifndef __AUDIT_TRAIL_CLIENT_H__
14 #define __AUDIT_TRAIL_CLIENT_H__
18 #include <audit-trail/audit-trail.h>
19 //#include <audit-trail/dac.h> // DEPRECATED!
20 //#include <audit-trail/mac.h> // DEPRECATED!
21 //#include <audit-trail/syscall.h> // DEPRECATED!
22 //#include <audit-trail/user.h> // DEPRECATED!
23 #include "ireporter.h"
30 * @brief The AuditTrailClient class collect logs from system
32 class AuditTrailClient
34 //TODO: Rework when Audit-Trail API will be finalized
37 * @brief DAC log callback
38 * @details Called when a new log occurs
39 * @param handle [in] pointer to audit_trail_dac structure
40 * @param user_data [in] pointer to user defined data
42 friend void dacLogCallback(audit_trail_dac_h handle, void* user_data);
45 * @brief MAC log callback
46 * @details Called when a new log occurs
47 * @param handle [in] pointer to audit_trail_mac structure
48 * @param user_data [in] pointer to user defined data
50 friend void macLogCallback(audit_trail_mac_h handle, void* user_data);
53 * @brief System calls log callback
54 * @details Called when a new log occurs
55 * @param handle [in] pointer to audit_trail_syscall structure
56 * @param user_data [in] pointer to user defined data
58 friend void sysCallLogCallback(audit_trail_syscall_h handle, void* user_data);
61 * @brief User log callback
62 * @details Called when a new user occurs
63 * @param handle [in] pointer to audit_trail_user structure
64 * @param user_data [in] pointer to user defined data
66 friend void userLogCallback(audit_trail_user_h handle, void* user_data);
72 AuditTrailClient(IReporter* reporter);
77 virtual ~AuditTrailClient();
80 * @brief Not copyconstructible
82 AuditTrailClient(const AuditTrailClient&) = delete;
85 * @brief Not assignable
88 AuditTrailClient& operator=(const AuditTrailClient&) = delete;
91 * @brief Start DAC(Discretionary Access Control) auditing
92 * @details This API can be used to start to collect DAC logs
94 bool start_dac_auditing();
97 * @brief Stop DAC(Discretionary Access Control) auditing
98 * @details This API can be used to stop to collect DAC logs
100 void stop_dac_auditing();
103 * @brief Start MAC(Mandatory Access Control) auditing
104 * @details This API can be used to start to collect MAC logs
106 bool start_mac_auditing();
109 * @brief Stop MAC(Mandatory Access Control) auditing
110 * @details This API can be used to stop to collect MAC logs
112 void stop_mac_auditing();
115 * @brief Start system calls auditing
116 * @details This API can be used to start to collect system calls logs
118 bool start_syscall_auditing();
121 * @brief Stop system calls auditing
122 * @details This API can be used to stop to collect system calls logs
124 void stop_syscall_auditing();
127 * @brief Start User(Data Protection Leak) auditing
128 * @details This API can be used to start to collect User logs
130 bool start_user_auditing();
133 * @brief Stop User(Data Protection Leak) auditing
134 * @details This API can be used to stop to collect User logs
136 void stop_user_auditing();
139 * @brief Start DAC, MAC and system calls auditing
140 * @details This API can be used to start to collect logs
142 bool start_auditing();
145 * @brief Stop DAC, MAC and system calls auditing
146 * @details This API can be used to stop to collect logs
148 void stop_auditing();
152 IReporter* m_reporter;
153 audit_trail_h m_audit_trail;
162 #endif /* __AUDIT_TRAIL_CLIENT_H__ */