ca6530b9757b02dbf5af4040d996974597f5817e
[platform/core/security/suspicious-activity-monitor.git] / device-agent / samonitor / audit_trail_client.h
1 /**
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.
5  */
6 /**
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>
11  */
12
13 #ifndef __AUDIT_TRAIL_CLIENT_H__
14 #define __AUDIT_TRAIL_CLIENT_H__
15
16 #include <string>
17 #include <memory>
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"
24 #include "utils.h"
25
26 namespace NMD
27 {
28
29 /**
30  * @brief The AuditTrailClient class collect logs from system
31  */
32 class AuditTrailClient
33 {
34 //TODO: Rework when Audit-Trail API will be finalized
35 #if 0
36     /**
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
41      */
42     friend void dacLogCallback(audit_trail_dac_h handle, void* user_data);
43
44     /**
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
49      */
50     friend void macLogCallback(audit_trail_mac_h handle, void* user_data);
51
52     /**
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
57      */
58     friend void sysCallLogCallback(audit_trail_syscall_h handle, void* user_data);
59
60     /**
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
65      */
66     friend void userLogCallback(audit_trail_user_h handle, void* user_data);
67 #endif
68 public:
69     /**
70      * @brief Constructor
71      */
72     AuditTrailClient(IReporter* reporter);
73
74     /**
75      * @brief Destructor
76      */
77     virtual ~AuditTrailClient();
78
79     /**
80      * @brief Not copyconstructible
81      */
82     AuditTrailClient(const AuditTrailClient&) = delete;
83
84     /**
85      * @brief Not assignable
86      * @return
87      */
88     AuditTrailClient& operator=(const AuditTrailClient&) = delete;
89
90     /**
91      * @brief Start DAC(Discretionary Access Control) auditing
92      * @details This API can be used to start to collect DAC logs
93      */
94     bool start_dac_auditing();
95
96     /**
97      * @brief Stop DAC(Discretionary Access Control) auditing
98      * @details This API can be used to stop to collect DAC logs
99      */
100     void stop_dac_auditing();
101
102     /**
103      * @brief Start MAC(Mandatory Access Control) auditing
104      * @details This API can be used to start to collect MAC logs
105      */
106     bool start_mac_auditing();
107
108     /**
109      * @brief Stop MAC(Mandatory Access Control) auditing
110      * @details This API can be used to stop to collect MAC logs
111      */
112     void stop_mac_auditing();
113
114     /**
115      * @brief Start system calls auditing
116      * @details This API can be used to start to collect system calls logs
117      */
118     bool start_syscall_auditing();
119
120     /**
121      * @brief Stop system calls auditing
122      * @details This API can be used to stop to collect system calls logs
123      */
124     void stop_syscall_auditing();
125
126     /**
127      * @brief Start User(Data Protection Leak) auditing
128      * @details This API can be used to start to collect User logs
129      */
130     bool start_user_auditing();
131
132     /**
133      * @brief Stop User(Data Protection Leak) auditing
134      * @details This API can be used to stop to collect User logs
135      */
136     void stop_user_auditing();
137
138     /**
139      * @brief Start DAC, MAC and system calls auditing
140      * @details This API can be used to start to collect logs
141      */
142     bool start_auditing();
143
144     /**
145      * @brief Stop DAC, MAC and system calls auditing
146      * @details This API can be used to stop to collect logs
147      */
148     void stop_auditing();
149
150 private:
151
152     IReporter* m_reporter;
153     audit_trail_h m_audit_trail;
154     int m_dac_cb_id;
155     int m_mac_cb_id;
156     int m_syscall_cb_id;
157     int m_user_cb_id;
158 };
159
160 } // namespace NMD
161
162 #endif /* __AUDIT_TRAIL_CLIENT_H__ */