From c9149bbb6c26779ba542bcea8dece6e191a4c444 Mon Sep 17 00:00:00 2001 From: fukusuket <41001169+fukusuket@users.noreply.github.com> Date: Sun, 9 Mar 2025 20:12:28 +0900 Subject: [PATCH] add rule parser actions --- .github/workflows/create-rule-meta.yml | 21 +++++++++++++++++++++ wela-extractor/src/main.rs | 9 ++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/create-rule-meta.yml diff --git a/.github/workflows/create-rule-meta.yml b/.github/workflows/create-rule-meta.yml new file mode 100644 index 00000000..6ecb8734 --- /dev/null +++ b/.github/workflows/create-rule-meta.yml @@ -0,0 +1,21 @@ +name: create-rule-meta.json +on: + push: + branches: [ "main" ] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout self repository + uses: actions/checkout@v4 + + - name: Checkout hayabusa-rules + uses: actions/checkout@v4 + with: + repository: Yamato-Security/hayabusa-rules + path: hayabusa-rules + + - name: Run + run: cd wela-extractor && cargo run --release -- ../../hayabusa-rules ../config/eid_subcategory_mapping-org.csv ../config/hayabusa-rule-meta.json diff --git a/wela-extractor/src/main.rs b/wela-extractor/src/main.rs index d8e648b4..8fc0e5ad 100644 --- a/wela-extractor/src/main.rs +++ b/wela-extractor/src/main.rs @@ -108,18 +108,20 @@ fn load_event_id_guid_pairs(file_path: &str) -> Result, Bo fn main() -> Result<(), Box> { let args: Vec = env::args().collect(); - if args.len() != 3 { + if args.len() != 4 { eprintln!("Usage: {} ", args[0]); std::process::exit(1); } let file_path = &args[1]; - let eid_subcategory_pair = load_event_id_guid_pairs(file_path).unwrap(); + let eid_subcategory_pair = load_event_id_guid_pairs(file_path)?; let dir = &args[2]; let yml_files = list_yml_files(dir); let mut results = Vec::new(); + let out = &args[3]; + for file in yml_files { let contents = fs::read_to_string(&file).expect("Unable to read file"); let docs = YamlLoader::load_from_str(&contents).expect("Unable to parse YAML"); @@ -131,6 +133,7 @@ fn main() -> Result<(), Box> { } let json_output = serde_json::to_string_pretty(&results)?; - write("../config/hayabusa_rules_meta.json", json_output)?; + println!("{}", json_output); + write(out, json_output)?; Ok(()) }