implement full layer7 functions

This commit is contained in:
2025-09-05 01:24:11 +09:00
parent 9b334a0d80
commit 28f9b75e8f
2 changed files with 25 additions and 5 deletions

View File

@@ -1,3 +1,4 @@
use crate::http::counter::HttpCounter;
use crate::http::header_config::HeadersConfig; use crate::http::header_config::HeadersConfig;
use crate::http::simple::HttpSwardArray; use crate::http::simple::HttpSwardArray;
use crate::http::{RandomUrlGenerator, SimpleHttpRequest, SimpleHttpSward}; use crate::http::{RandomUrlGenerator, SimpleHttpRequest, SimpleHttpSward};
@@ -11,7 +12,6 @@ use tower::ServiceExt;
use tower::{BoxError, Service}; use tower::{BoxError, Service};
use url::Url; use url::Url;
use wyrand::WyRand; use wyrand::WyRand;
use crate::http::counter::{HttpCounter};
#[derive(Clone)] #[derive(Clone)]
enum AttackTarget { enum AttackTarget {
@@ -22,7 +22,7 @@ enum AttackTarget {
pub struct IntegratedHttpSward { pub struct IntegratedHttpSward {
attack_target: AttackTarget, attack_target: AttackTarget,
request_sender: MultiplexedSward<HttpSwardArray<Box<[SimpleHttpSward]>>>, request_sender: MultiplexedSward<HttpSwardArray<Box<[SimpleHttpSward]>>>,
result_counter: HttpCounter result_counter: HttpCounter,
} }
impl IntegratedHttpSward { impl IntegratedHttpSward {
@@ -59,6 +59,23 @@ impl IntegratedHttpSward {
Ok(res) Ok(res)
} }
pub async fn run_with_signal(
mut self,
mut signal: tokio::sync::oneshot::Receiver<()>,
) -> Result<(), HttpSwardError> {
loop {
tokio::select! {
receive_result = &mut signal => {
receive_result?;
return Ok(());
}
oneshop_result = self.oneshot() => {
oneshop_result?;
}
}
}
}
} }
impl IntegratedHttpSward { impl IntegratedHttpSward {
@@ -172,7 +189,7 @@ impl IntegratedHttpSwardBuilder {
Ok(IntegratedHttpSward { Ok(IntegratedHttpSward {
attack_target: AttackTarget::Fixed(url), attack_target: AttackTarget::Fixed(url),
request_sender: MultiplexedSward::new(SimpleHttpSward::array(swards), capacity), request_sender: MultiplexedSward::new(SimpleHttpSward::array(swards), capacity),
result_counter: HttpCounter::default() result_counter: HttpCounter::default(),
}) })
} }
@@ -203,7 +220,7 @@ impl IntegratedHttpSwardBuilder {
Ok(IntegratedHttpSward { Ok(IntegratedHttpSward {
attack_target: AttackTarget::Random(random_url_generator), attack_target: AttackTarget::Random(random_url_generator),
request_sender: MultiplexedSward::new(SimpleHttpSward::array(swards), capacity), request_sender: MultiplexedSward::new(SimpleHttpSward::array(swards), capacity),
result_counter: HttpCounter::default() result_counter: HttpCounter::default(),
}) })
} }
} }
@@ -230,4 +247,7 @@ pub enum HttpSwardError {
#[error(transparent)] #[error(transparent)]
BadUrl(#[from] url::ParseError), BadUrl(#[from] url::ParseError),
#[error(transparent)]
ReceiverError(#[from] tokio::sync::oneshot::error::RecvError),
} }

View File

@@ -2,7 +2,7 @@ pub mod random;
pub mod simple; pub mod simple;
pub mod integrated; pub mod integrated;
pub mod header_config; pub mod header_config;
mod counter; pub mod counter;
pub use random::RandomUrlGenerator; pub use random::RandomUrlGenerator;
pub use simple::{SimpleHttpRequest, SimpleHttpSward}; pub use simple::{SimpleHttpRequest, SimpleHttpSward};