diff options
| author | luwenpeng <[email protected]> | 2023-08-29 18:43:04 +0800 |
|---|---|---|
| committer | luwenpeng <[email protected]> | 2023-08-31 18:42:25 +0800 |
| commit | ccf658df8cd062fedb66bb64d3c5a25b2d847f25 (patch) | |
| tree | 182d74d33ba8ad914be2772620f073e62262ae55 /src/plugin/example.rs | |
| parent | ab66a023549901674110176256df5564ae039ce6 (diff) | |
[feature] Integration Test Passed
1.Receive packets through pcap
2.Packet decapsulate
3.Trigger events
4.Dispatch event management
5.Call plugin handle
6.Plugin manipulate session
Diffstat (limited to 'src/plugin/example.rs')
| -rw-r--r-- | src/plugin/example.rs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/plugin/example.rs b/src/plugin/example.rs new file mode 100644 index 0000000..68fd542 --- /dev/null +++ b/src/plugin/example.rs @@ -0,0 +1,50 @@ +use crate::event::manager::EventHandle; +use crate::packet::packet::Packet; +use crate::session::session::Session; +use std::cell::RefCell; +use std::rc::Rc; + +#[derive(Debug, Clone)] +pub struct ExamplePulgin { + plugin_name: &'static str, + plugin_ctx: Rc<RefCell<String>>, + called_times: u64, +} + +impl ExamplePulgin { + pub fn new(plugin_name: &'static str, plugin_ctx: Rc<RefCell<String>>) -> ExamplePulgin { + ExamplePulgin { + plugin_name, + plugin_ctx, + called_times: 0, + } + } +} + +impl EventHandle for ExamplePulgin { + fn handle(&mut self, index: usize, packet: &Packet, session: Option<Rc<RefCell<Session>>>) { + self.called_times += 1; + self.plugin_ctx.borrow_mut().clear(); + self.plugin_ctx.borrow_mut().push_str("1"); + + println!("{} handle event : {:?}", self.plugin_name, index); + println!( + "{} handle times : {:?}", + self.plugin_name, self.called_times + ); + println!( + "{} handle tuple : {:?}", + self.plugin_name, + packet.get_outer_tuple() + ); + + if session.is_none() { + return; + } + let session = session.unwrap(); + println!("{} handle session : {:?}", self.plugin_name, session); + session + .borrow_mut() + .set_session_exdata("example pulgin".to_string(), "success".to_string()); + } +} |
