Felipe Zimmerle
64bffdebc4
Cosmetics: Using VariableValues instead of std::vector<...>
...
Making the code more readable.
2020-12-22 22:14:44 -03:00
Felipe Zimmerle
d5cae10d3a
Refactoring on variables::Variable
...
Using the references on key and collection as shared pointers
2020-12-22 22:14:43 -03:00
WGH
6528c95765
Use std::shared_ptr for variable resolution
...
AnchoredSetVariable::resolve is called for every rule
(see RuleWithOperator::evaluate). The previous implementation allocated
a new copy of every variable, which quickly added up. In my tests,
AnchoredSetVariable::resolve function consumed 7.8% of run time.
AnchoredSetVariable (which is a multimap) values are never changed,
only added. This means it's safe to store them in std::shared_ptr,
and make resolve return shared_ptr pointing to the same object.
Other resolve implementation could also use this optimization by not
allocating new objects, however, they are not hot spots, so this
optimization was not implemented there.
In my benchmark, this raises performance from 117 requests per second to
131 RPS, and overhead is lowered from 7.8% to 2.4%.
As a bonus, replacing plain pointer with smart pointers make code
cleaner, since using smart pointers makes manual deletes no longer necessary.
Additionally, VariableOrigin is now stored in plain std::vector,
since it's wasteful to store structure containing just two integer
values using std::list<std::unique_ptr<T>>.
2020-12-22 22:14:43 -03:00
Felipe Zimmerle
d3ba2318d6
Removes init from SetVar
2020-12-22 22:14:43 -03:00
Felipe Zimmerle
0a3b658969
Introduces ActionWithExecution
2020-12-22 22:14:41 -03:00
Felipe Zimmerle
bf3a1d84ff
actions: Removes Rule parameter from runtime execute
...
Generals organization on the Action class
2020-12-22 22:14:38 -03:00
Felipe Zimmerle
eb3e05646d
actions: Compute the rule association during rules load
2020-12-10 10:10:49 -03:00
Felipe Zimmerle
999af35e22
Moves rule* headers to src/
2020-12-10 10:10:47 -03:00
Felipe Zimmerle
da618a6b7d
Cleanup on Action class
2020-12-10 10:10:47 -03:00
Felipe Zimmerle
55b68fdebc
Refactoring: rename evaluate to execute on actions
2020-12-10 10:10:47 -03:00
Felipe Zimmerle
59d4268882
Refactoring: renames Rule to RuleWithOperator
2020-03-31 10:00:08 -03:00
Felipe Zimmerle
8eb7b8fe6c
Refactoring: Splits Rule into Rule and RuleWithActions
2020-03-30 20:22:37 -03:00
Felipe Zimmerle
7495675d54
Refactoring: Renames Rules to RulesSet
...
RulesSet does not only contain rules but alse properties
2020-02-11 14:26:47 -03:00
Felipe Zimmerle
357c140003
Changens copyright year
2020-01-31 10:32:37 -03:00
Felipe Zimmerle
86a5f471a9
Cosmetics: fixed static analysis issues.
2020-01-15 20:35:59 -03:00
Felipe Zimmerle
47dd9c5df4
Refactoring on the VariableValue class
2019-06-14 10:13:54 -03:00
Felipe Zimmerle
4e76c6adf0
Renames namespace Variables to variables
2019-03-06 15:53:20 -03:00
Felipe Zimmerle
e712d30c56
Fix setvar to understand Rule variable in collections
...
Issue #1961
2018-11-26 19:49:44 -03:00
Felipe Zimmerle
ef7f65db90
Changes debuglogs schema to avoid unecessary str allocation
2018-10-23 17:00:16 -03:00
Felipe Zimmerle
3e8e28da48
Refactoring on the RULE variable
2018-10-23 16:26:11 -03:00
Felipe Zimmerle
ee50fea266
Handling key exceptions on the variable itself
...
This is the first step towords to solve #1697
2018-09-24 16:16:30 -03:00
Felipe Zimmerle
eeec7efb68
Renames collection::Variable to VariableValue
2018-02-20 13:40:01 -03:00
Felipe Zimmerle
6f7fdd9493
Using direct variable access instead m_collections
2018-02-20 13:40:01 -03:00
Felipe Zimmerle
43bba3f942
Removes the depricated MacroExpansion class
2018-02-20 13:40:01 -03:00
Felipe Zimmerle
f17af95728
Using RunTimeString on setvar action
2018-02-20 13:40:01 -03:00
Felipe Zimmerle
3fb71f32d8
Coding style fixes
2017-11-13 22:32:11 -03:00
Felipe Zimmerle
082a3e3287
Adds support to SecWebAppID
2017-11-08 09:33:14 -03:00
Felipe Zimmerle
e95efa05cc
Fix assorted memory and static analysis errors
2017-03-06 15:02:00 -03:00
Felipe Zimmerle
f2d149fc5f
Extends the direct access model to other collections
2017-03-06 15:02:00 -03:00
Felipe Zimmerle
b516cc6de1
Adds operation unset to setVar action
2017-03-06 15:01:59 -03:00
Felipe Zimmerle
e95555132e
Contionuation of 1 time variable patch
...
Now we have almost 100% of the transaction variables hosted on the
new schema. Variable modifcators (count and exclusion) are not yet
supported on the new schema. Notice that setvar is now using the
parser.
2017-03-06 15:01:58 -03:00
Felipe Zimmerle
168fa22e19
Collections cleanup: removes resolveFirstCopy method
2016-12-28 19:56:27 -03:00
Felipe Zimmerle
2244e874e2
Moves static methods from class String to the namespace string
2016-11-04 16:00:44 -03:00
Felipe Zimmerle
62a0cb468b
Renames utils/msc_string.[h|cc] to utils/string.[h|cc]
2016-11-04 16:00:42 -03:00
Felipe Zimmerle
4ced1d18e0
Using full path in the header inclusion
2016-11-04 14:45:01 -03:00
Felipe Zimmerle
507ec44cc2
Refactoring on `utils.cc' and adjacents
...
Completely removed the `utils.cc' by moving residual functions into
sub-classes of `utils/'
2016-11-03 20:26:27 -03:00
Felipe Zimmerle
73c4d69174
Moves string related functions from utils' to
utils/string'
2016-11-03 10:47:22 -03:00
Felipe Zimmerle
062dd17f14
Cosmetics: reducing the compilation warnings
2016-07-29 18:42:20 -03:00
Felipe Zimmerle
5d64f73817
Makes RULE collection to be resolved inside a macro expansion
2016-07-21 13:09:22 -03:00
Felipe Zimmerle
833089eb70
Adds method resolveFirstCopy to collections
...
Using the copy whenever it is necessary to avoid memory leak.
2016-07-08 10:22:37 -03:00
Felipe Zimmerle
0fdde52532
Fix setvar action to accept equals nothing
2016-06-23 15:48:23 -03:00
Felipe Zimmerle
8c714af8e1
Actions refactoring: now there is a clear definiation on the action name
2016-05-17 14:36:59 -03:00
Felipe Zimmerle
a51e707517
Renames class Assay to Transaction
2016-01-13 15:57:00 -03:00
Felipe Zimmerle
fb3696ac04
Fix a few things to provide an easy interface for script bindings
2015-12-22 11:53:36 -03:00
Felipe Zimmerle
42ce0475b2
Coding style: changes the namespace in the comments
2015-12-10 13:20:32 -03:00
Felipe Zimmerle
b5a43871e6
Changes library namespace from ModSecurity to modsecurity
2015-12-01 10:55:59 -03:00
Felipe Zimmerle
b6ae0585cd
Refactoring: Place m_variables inside Collections
2015-10-29 13:46:45 -03:00
Felipe Zimmerle
787be98122
Refactoring: Pass all the control over the variables to the Variables class
2015-10-28 20:53:19 -03:00
Felipe Zimmerle
7afc07914f
Cosmetics: Fix static analysis warnings
2015-10-27 13:58:32 -03:00
Felipe Zimmerle
59af8ab842
Cosmetics: fixed the coding style
2015-10-20 16:05:50 -03:00