mirror of
https://github.com/pldubouilh/blockfast.git
synced 2026-08-27 20:36:34 -04:00
customizable http statuses
This commit is contained in:
+5
-4
@@ -18,6 +18,11 @@ async fn run() -> Result<()> {
|
|||||||
let args = utils::Args::parse();
|
let args = utils::Args::parse();
|
||||||
let mut ml = MuxedLines::new()?;
|
let mut ml = MuxedLines::new()?;
|
||||||
|
|
||||||
|
// HTTP statuses
|
||||||
|
let ok_statuses = args.valid_http_statuses.clone();
|
||||||
|
let ok_statuses_parsed = parse_statuses(&ok_statuses)?;
|
||||||
|
let ok_statuses_ref = ok_statuses_parsed.as_ref();
|
||||||
|
|
||||||
// generic parser
|
// generic parser
|
||||||
let generic_path = args.generic_logpath.as_ref();
|
let generic_path = args.generic_logpath.as_ref();
|
||||||
let generic_ip_re = args.generic_ip.as_ref();
|
let generic_ip_re = args.generic_ip.as_ref();
|
||||||
@@ -65,10 +70,6 @@ async fn run() -> Result<()> {
|
|||||||
bail!("no log files to parse, see --help");
|
bail!("no log files to parse, see --help");
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTTP statuses
|
|
||||||
let ok_statuses = args.valid_http_statuses.clone();
|
|
||||||
let ok_statuses_ref = ok_statuses.as_ref();
|
|
||||||
|
|
||||||
// jail
|
// jail
|
||||||
let jail = Jail::new(args.allowance, args.jailtime)?;
|
let jail = Jail::new(args.allowance, args.jailtime)?;
|
||||||
|
|
||||||
|
|||||||
+30
-3
@@ -44,6 +44,33 @@ pub fn parse_regex(a: &str) -> Result<Regex> {
|
|||||||
Ok(r)
|
Ok(r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn parse_statuses(a: &str) -> Result<Vec<u32>> {
|
||||||
|
let mut statuses = vec![];
|
||||||
|
for s in a.split(',') {
|
||||||
|
if s.contains("xx") {
|
||||||
|
let range = s.replace("xx", "");
|
||||||
|
let range = range.parse::<u32>().context("invalid range")?;
|
||||||
|
let range = range * 100;
|
||||||
|
for i in 0..100 {
|
||||||
|
let status = range + i;
|
||||||
|
statuses.push(status);
|
||||||
|
}
|
||||||
|
} else if s.contains("x") {
|
||||||
|
let range = s.replace("x", "");
|
||||||
|
let range = range.parse::<u32>().context("invalid range")?;
|
||||||
|
let range = range * 10;
|
||||||
|
for i in 0..10 {
|
||||||
|
let status = range + i;
|
||||||
|
statuses.push(status);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let status = s.parse::<u32>().context("invalid status")?;
|
||||||
|
statuses.push(status);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(statuses)
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) use log;
|
pub(crate) use log;
|
||||||
|
|
||||||
#[derive(Parser, Debug)]
|
#[derive(Parser, Debug)]
|
||||||
@@ -110,7 +137,7 @@ pub struct Args {
|
|||||||
#[clap(long)]
|
#[clap(long)]
|
||||||
pub generic_negative: Option<String>,
|
pub generic_negative: Option<String>,
|
||||||
|
|
||||||
/// valid http statuses (for CLF and JSON logs)
|
/// valid http statuses (for CLF and JSON logs). Coma separated list, accepts ranges with XX.
|
||||||
#[clap(long, default_values_t = [200,101])]
|
#[clap(long, default_value = "10x,20x,30x,404,408")]
|
||||||
pub valid_http_statuses: Vec<u32>,
|
pub valid_http_statuses: String,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user