Feature/fix count() (#327)
This commit is contained in:
committed by
GitHub
parent
2e37e17300
commit
ea685fb75a
@@ -131,7 +131,11 @@ impl Detection {
|
|||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_aggcondition_msg(&self) {
|
pub fn add_aggcondition_msges(self, rt: &Runtime) {
|
||||||
|
return rt.block_on(self.add_aggcondition_msg());
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn add_aggcondition_msg(&self) {
|
||||||
for rule in &self.rules {
|
for rule in &self.rules {
|
||||||
if !rule.has_agg_condition() {
|
if !rule.has_agg_condition() {
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ pub struct AggregationParseInfo {
|
|||||||
pub _field_name: Option<String>, // countの括弧に囲まれた部分の文字
|
pub _field_name: Option<String>, // countの括弧に囲まれた部分の文字
|
||||||
pub _by_field_name: Option<String>, // count() by の後に指定される文字列
|
pub _by_field_name: Option<String>, // count() by の後に指定される文字列
|
||||||
pub _cmp_op: AggregationConditionToken, // (必須)<とか>とか何が指定されたのか
|
pub _cmp_op: AggregationConditionToken, // (必須)<とか>とか何が指定されたのか
|
||||||
pub _cmp_num: i32, // (必須)<とか>とかの後にある数値
|
pub _cmp_num: i64, // (必須)<とか>とかの後にある数値
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
@@ -202,7 +202,7 @@ impl AggegationConditionCompiler {
|
|||||||
|
|
||||||
let token = token_ite.next().unwrap_or(AggregationConditionToken::SPACE);
|
let token = token_ite.next().unwrap_or(AggregationConditionToken::SPACE);
|
||||||
let cmp_number = if let AggregationConditionToken::KEYWORD(number) = token {
|
let cmp_number = if let AggregationConditionToken::KEYWORD(number) = token {
|
||||||
let number: Result<i32, _> = number.parse();
|
let number: Result<i64, _> = number.parse();
|
||||||
if number.is_err() {
|
if number.is_err() {
|
||||||
// 比較演算子の後に数値が無い。
|
// 比較演算子の後に数値が無い。
|
||||||
return Result::Err("The compare operator needs a number like '> 3'.".to_string());
|
return Result::Err("The compare operator needs a number like '> 3'.".to_string());
|
||||||
@@ -460,7 +460,7 @@ mod tests {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn check_aggregation_condition_ope(expr: String, cmp_num: i32) -> AggregationConditionToken {
|
fn check_aggregation_condition_ope(expr: String, cmp_num: i64) -> AggregationConditionToken {
|
||||||
let compiler = AggegationConditionCompiler::new();
|
let compiler = AggegationConditionCompiler::new();
|
||||||
let result = compiler.compile(expr);
|
let result = compiler.compile(expr);
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -303,7 +303,7 @@ impl DetectionNode {
|
|||||||
/// countなどのaggregationの結果を出力する構造体
|
/// countなどのaggregationの結果を出力する構造体
|
||||||
pub struct AggResult {
|
pub struct AggResult {
|
||||||
/// countなどの値
|
/// countなどの値
|
||||||
pub data: i32,
|
pub data: i64,
|
||||||
/// count byで指定された条件のレコード内での値
|
/// count byで指定された条件のレコード内での値
|
||||||
pub key: String,
|
pub key: String,
|
||||||
/// countの括弧内指定された項目の検知されたレコード内での値の配列。括弧内で指定がなかった場合は長さ0の配列となる
|
/// countの括弧内指定された項目の検知されたレコード内での値の配列。括弧内で指定がなかった場合は長さ0の配列となる
|
||||||
@@ -316,7 +316,7 @@ pub struct AggResult {
|
|||||||
|
|
||||||
impl AggResult {
|
impl AggResult {
|
||||||
pub fn new(
|
pub fn new(
|
||||||
data: i32,
|
data: i64,
|
||||||
key: String,
|
key: String,
|
||||||
field_values: Vec<String>,
|
field_values: Vec<String>,
|
||||||
start_timedate: DateTime<Utc>,
|
start_timedate: DateTime<Utc>,
|
||||||
|
|||||||
@@ -170,6 +170,7 @@ impl App {
|
|||||||
detection = self.analysis_file(evtx_file, detection);
|
detection = self.analysis_file(evtx_file, detection);
|
||||||
pb.inc();
|
pb.inc();
|
||||||
}
|
}
|
||||||
|
detection.add_aggcondition_msges(&self.rt);
|
||||||
after_fact();
|
after_fact();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,7 +237,6 @@ impl App {
|
|||||||
detection = detection.start(&self.rt, records_per_detect);
|
detection = detection.start(&self.rt, records_per_detect);
|
||||||
}
|
}
|
||||||
|
|
||||||
detection.add_aggcondition_msg();
|
|
||||||
tl.tm_stats_dsp_msg();
|
tl.tm_stats_dsp_msg();
|
||||||
|
|
||||||
return detection;
|
return detection;
|
||||||
|
|||||||
Reference in New Issue
Block a user