@@ -102,90 +102,23 @@ namespace modsecurity {
102
102
* @endcode
103
103
*
104
104
*/
105
- Transaction::Transaction (ModSecurity *ms, RulesSet *rules, void *logCbData)
106
- : m_creationTimeStamp(utils::cpu_seconds()),
107
- m_clientIpAddress (" " ),
108
- m_httpVersion(" " ),
109
- m_serverIpAddress(" " ),
110
- m_requestHostName(" " ),
111
- m_uri(" " ),
112
- m_uri_no_query_string_decoded(" " ),
113
- m_ARGScombinedSizeDouble(0 ),
114
- m_clientPort(0 ),
115
- m_highestSeverityAction(255 ),
116
- m_httpCodeReturned(200 ),
117
- m_serverPort(0 ),
118
- m_ms(ms),
119
- m_requestBodyType(UnknownFormat),
120
- m_requestBodyProcessor(UnknownFormat),
121
- m_rules(rules),
122
- m_ruleRemoveById(),
123
- m_ruleRemoveByIdRange(),
124
- m_ruleRemoveByTag(),
125
- m_ruleRemoveTargetByTag(),
126
- m_ruleRemoveTargetById(),
127
- m_requestBodyAccess(RulesSet::PropertyNotSetConfigBoolean),
128
- m_auditLogModifier(),
129
- m_ctlAuditEngine(AuditLog::AuditLogStatus::NotSetLogStatus),
130
- m_rulesMessages(),
131
- m_requestBody(),
132
- m_responseBody(),
133
- /* m_id(), */
134
- m_skip_next(0 ),
135
- m_allowType(modsecurity::actions::disruptive::NoneAllowType),
136
- m_uri_decoded(" " ),
137
- m_actions(),
138
- m_it(),
139
- m_timeStamp(std::time(NULL )),
140
- m_collections(ms->m_global_collection, ms->m_ip_collection,
141
- ms->m_session_collection, ms->m_user_collection,
142
- ms->m_resource_collection),
143
- m_matched(),
144
- #ifdef WITH_LIBXML2
145
- m_xml (new RequestBodyProcessor::XML(this )),
146
- #else
147
- m_xml (NULL ),
148
- #endif
149
- #ifdef WITH_YAJL
150
- m_json (new RequestBodyProcessor::JSON(this )),
151
- #else
152
- m_json (NULL ),
153
- #endif
154
- m_secRuleEngine (RulesSetProperties::PropertyNotSetRuleEngine),
155
- m_variableDuration(" " ),
156
- m_variableEnvs(),
157
- m_variableHighestSeverityAction(" " ),
158
- m_variableRemoteUser(" " ),
159
- m_variableTime(" " ),
160
- m_variableTimeDay(" " ),
161
- m_variableTimeEpoch(" " ),
162
- m_variableTimeHour(" " ),
163
- m_variableTimeMin(" " ),
164
- m_variableTimeSec(" " ),
165
- m_variableTimeWDay(" " ),
166
- m_variableTimeYear(" " ),
167
- m_logCbData(logCbData),
168
- TransactionAnchoredVariables(this ) {
169
- m_id = std::to_string (m_timeStamp) +
170
- std::to_string (modsecurity::utils::generate_transaction_unique_id ());
171
105
172
- m_variableUrlEncodedError.set (" 0" , 0 );
173
- m_variableMscPcreError.set (" 0" , 0 );
174
- m_variableMscPcreLimitsExceeded.set (" 0" , 0 );
106
+ static std::string get_id (const char *id, const time_t timestamp) {
107
+ return (id == nullptr ) ?
108
+ std::to_string (timestamp) +
109
+ std::to_string (modsecurity::utils::generate_transaction_unique_id ())
110
+ : id;
111
+ }
175
112
176
- ms_dbg (4 , " Initializing transaction" );
113
+ Transaction::Transaction (ModSecurity *ms, RulesSet *rules, void *logCbData)
114
+ : Transaction(ms, rules, nullptr , logCbData) { }
177
115
178
- intervention::clean (&m_it);
179
- }
116
+ Transaction::Transaction (ModSecurity *ms, RulesSet *rules, const char *id, void *logCbData)
117
+ : Transaction(ms, rules, id, logCbData, std::time( nullptr )) { }
180
118
181
- Transaction::Transaction (ModSecurity *ms, RulesSet *rules, char *id, void *logCbData)
119
+ Transaction::Transaction (ModSecurity *ms, RulesSet *rules, const char *id,
120
+ void *logCbData, const time_t timestamp)
182
121
: m_creationTimeStamp(utils::cpu_seconds()),
183
- m_clientIpAddress(" " ),
184
- m_httpVersion(" " ),
185
- m_serverIpAddress(" " ),
186
- m_requestHostName(" " ),
187
- m_uri(" " ),
188
- m_uri_no_query_string_decoded(" " ),
189
122
m_ARGScombinedSizeDouble (0 ),
190
123
m_clientPort(0 ),
191
124
m_highestSeverityAction(255 ),
@@ -195,54 +128,28 @@ Transaction::Transaction(ModSecurity *ms, RulesSet *rules, char *id, void *logCb
195
128
m_requestBodyType(UnknownFormat),
196
129
m_requestBodyProcessor(UnknownFormat),
197
130
m_rules(rules),
198
- m_ruleRemoveById(),
199
- m_ruleRemoveByIdRange(),
200
- m_ruleRemoveByTag(),
201
- m_ruleRemoveTargetByTag(),
202
- m_ruleRemoveTargetById(),
203
131
m_requestBodyAccess(RulesSet::PropertyNotSetConfigBoolean),
204
- m_auditLogModifier(),
205
132
m_ctlAuditEngine(AuditLog::AuditLogStatus::NotSetLogStatus),
206
- m_rulesMessages(),
207
- m_requestBody(),
208
- m_responseBody(),
209
- m_id(id),
210
133
m_skip_next(0 ),
134
+ m_id(get_id(id, timestamp)),
211
135
m_allowType(modsecurity::actions::disruptive::NoneAllowType),
212
- m_uri_decoded(" " ),
213
- m_actions(),
214
- m_it(),
215
- m_timeStamp(std::time(NULL )),
136
+ m_timeStamp(timestamp),
216
137
m_collections(ms->m_global_collection, ms->m_ip_collection,
217
138
ms->m_session_collection, ms->m_user_collection,
218
139
ms->m_resource_collection),
219
- m_matched(),
220
140
#ifdef WITH_LIBXML2
221
141
m_xml (new RequestBodyProcessor::XML(this )),
222
142
#else
223
- m_xml (NULL ),
143
+ m_xml (nullptr ),
224
144
#endif
225
145
#ifdef WITH_YAJL
226
146
m_json (new RequestBodyProcessor::JSON(this )),
227
147
#else
228
- m_json (NULL ),
148
+ m_json (nullptr ),
229
149
#endif
230
150
m_secRuleEngine (RulesSetProperties::PropertyNotSetRuleEngine),
231
- m_variableDuration(" " ),
232
- m_variableEnvs(),
233
- m_variableHighestSeverityAction(" " ),
234
- m_variableRemoteUser(" " ),
235
- m_variableTime(" " ),
236
- m_variableTimeDay(" " ),
237
- m_variableTimeEpoch(" " ),
238
- m_variableTimeHour(" " ),
239
- m_variableTimeMin(" " ),
240
- m_variableTimeSec(" " ),
241
- m_variableTimeWDay(" " ),
242
- m_variableTimeYear(" " ),
243
151
m_logCbData(logCbData),
244
152
TransactionAnchoredVariables(this ) {
245
-
246
153
m_variableUrlEncodedError.set (" 0" , 0 );
247
154
m_variableMscPcreError.set (" 0" , 0 );
248
155
m_variableMscPcreLimitsExceeded.set (" 0" , 0 );
@@ -1904,7 +1811,7 @@ extern "C" Transaction *msc_new_transaction(ModSecurity *ms,
1904
1811
return new Transaction (ms, rules, logCbData);
1905
1812
}
1906
1813
extern " C" Transaction *msc_new_transaction_with_id (ModSecurity *ms,
1907
- RulesSet *rules, char *id, void *logCbData) {
1814
+ RulesSet *rules, const char *id, void *logCbData) {
1908
1815
return new Transaction (ms, rules, id, logCbData);
1909
1816
}
1910
1817
0 commit comments