new upstream release (3.3.0); modify package compatibility for Stretch
[ossec-hids.git] / src / analysisd / eventinfo.h
1 /* Copyright (C) 2009 Trend Micro Inc.
2  * All right reserved.
3  *
4  * This program is a free software; you can redistribute it
5  * and/or modify it under the terms of the GNU General Public
6  * License (version 2) as published by the FSF - Free Software
7  * Foundation
8  */
9
10 #ifndef _EVTINFO__H
11 #define _EVTINFO__H
12
13 #include "rules.h"
14 #include "decoders/decoder.h"
15
16 /* Event Information structure */
17 typedef struct _Eventinfo {
18     /* Extracted from the event */
19     char *log;
20     char *full_log;
21     char *location;
22     char *hostname;
23     char *program_name;
24
25     /* Extracted from the decoders */
26     char *srcip;
27     char *srcgeoip;
28     char *dstip;
29     char *dstgeoip;
30     char *srcport;
31     char *dstport;
32     char *protocol;
33     char *action;
34     char *srcuser;
35     char *dstuser;
36     char *id;
37     char *status;
38     char *command;
39     char *url;
40     char *data;
41     char *systemname;
42     char **fields;
43
44
45
46     /* Pointer to the rule that generated it */
47     RuleInfo *generated_rule;
48
49     /* Pointer to the decoder that matched */
50     OSDecoderInfo *decoder_info;
51
52     /* Sid node to delete */
53     OSListNode *sid_node_to_delete;
54
55     /* Extract when the event fires a rule */
56     size_t size;
57     size_t p_name_size;
58
59     /* Other internal variables */
60     int matched;
61
62     time_t time;
63     int day;
64     int year;
65     char hour[10];
66     char mon[4];
67
68     /* SYSCHECK Results variables */
69     char *filename;
70     int perm_before;
71     int perm_after;
72     char *md5_before;
73     char *md5_after;
74     char *sha1_before;
75     char *sha1_after;
76     char *size_before;
77     char *size_after;
78     char *owner_before;
79     char *owner_after;
80     char *gowner_before;
81     char *gowner_after;
82 } Eventinfo;
83
84 /* Events List structure */
85 typedef struct _EventNode {
86     Eventinfo *event;
87     struct _EventNode *next;
88     struct _EventNode *prev;
89 } EventNode;
90
91 #ifdef TESTRULE
92 extern int full_output;
93 extern int alert_only;
94 #endif
95
96 /* Types of events (from decoders) */
97 #define UNKNOWN         0   /* Unknown */
98 #define SYSLOG          1   /* syslog messages */
99 #define IDS             2   /* IDS alerts */
100 #define FIREWALL        3   /* Firewall events */
101 #define WEBLOG          7   /* Apache logs */
102 #define SQUID           8   /* Squid logs */
103 #define DECODER_WINDOWS 9   /* Windows logs */
104 #define HOST_INFO       10  /* Host information logs (from nmap or similar) */
105 #define OSSEC_RL        11  /* OSSEC rules */
106 #define OSSEC_ALERT     12  /* OSSEC alerts */
107
108 /* FTS allowed values */
109 #define FTS_NAME        001000
110 #define FTS_SRCUSER     002000
111 #define FTS_DSTUSER     004000
112 #define FTS_SRCIP       000100
113 #define FTS_DSTIP       000200
114 #define FTS_LOCATION    000400
115 #define FTS_ID          000010
116 #define FTS_DATA        000020
117 #define FTS_SYSTEMNAME  000040
118 #define FTS_DONE        010000
119
120 /** Functions for events **/
121
122 /* Search for matches in the last events */
123 Eventinfo *Search_LastEvents(Eventinfo *lf, RuleInfo *currently_rule);
124 Eventinfo *Search_LastSids(Eventinfo *my_lf, RuleInfo *currently_rule);
125 Eventinfo *Search_LastGroups(Eventinfo *my_lf, RuleInfo *currently_rule);
126
127 /* Zero the eventinfo structure */
128 void Zero_Eventinfo(Eventinfo *lf);
129
130 /* Free the eventinfo structure */
131 void Free_Eventinfo(Eventinfo *lf);
132
133 /* Add and event to the list of previous events */
134 void OS_AddEvent(Eventinfo *lf);
135
136 /* Return the last event from the Event list */
137 EventNode *OS_GetLastEvent(void);
138
139 /* Create the event list. Maxsize must be specified */
140 void OS_CreateEventList(int maxsize);
141
142 /* Pointers to the event decoders */
143 void *SrcUser_FP(Eventinfo *lf, char *field, int order);
144 void *DstUser_FP(Eventinfo *lf, char *field, int order);
145 void *SrcIP_FP(Eventinfo *lf, char *field, int order);
146 void *DstIP_FP(Eventinfo *lf, char *field, int order);
147 void *SrcPort_FP(Eventinfo *lf, char *field, int order);
148 void *DstPort_FP(Eventinfo *lf, char *field, int order);
149 void *Protocol_FP(Eventinfo *lf, char *field, int order);
150 void *Action_FP(Eventinfo *lf, char *field, int order);
151 void *ID_FP(Eventinfo *lf, char *field, int order);
152 void *Url_FP(Eventinfo *lf, char *field, int order);
153 void *Data_FP(Eventinfo *lf, char *field, int order);
154 void *Status_FP(Eventinfo *lf, char *field, int order);
155 void *SystemName_FP(Eventinfo *lf, char *field, int order);
156 void *FileName_FP(Eventinfo *lf, char *field, int order);
157 void *DynamicField_FP(Eventinfo *lf, char *field, int order);
158 void *None_FP(Eventinfo *lf, char *field, int order);
159
160
161 #endif /* _EVTINFO__H */
162