securitydept_realip/
error.rs1use std::{net::IpAddr, path::PathBuf};
2
3use snafu::Snafu;
4
5pub type RealIpResult<T> = Result<T, RealIpError>;
6
7#[derive(Debug, Snafu)]
8#[snafu(visibility(pub))]
9pub enum RealIpError {
10 #[snafu(display("Invalid real-ip config: {message}"))]
11 Config { message: String },
12
13 #[snafu(display("Unknown provider kind `{kind}` for provider `{name}`"))]
14 UnknownProviderKind { name: String, kind: String },
15
16 #[snafu(display("No custom provider factory registered for kind `{kind}`"))]
17 MissingProviderFactory { kind: String },
18
19 #[snafu(display("Duplicate custom provider factory registration for kind `{kind}`"))]
20 DuplicateProviderFactory { kind: String },
21
22 #[snafu(display("Provider `{provider}` is missing required field `{field}`"))]
23 MissingProviderField {
24 provider: String,
25 field: &'static str,
26 },
27
28 #[snafu(display("Source `{source_name}` references unknown provider `{provider}`"))]
29 UnknownSourceProvider {
30 source_name: String,
31 provider: String,
32 },
33
34 #[snafu(display("Failed to read provider file `{:?}`: {source}", path))]
35 ReadProviderFile {
36 path: PathBuf,
37 source: std::io::Error,
38 },
39
40 #[snafu(display("Provider command `{command}` failed: {details}"))]
41 ProviderCommand { command: String, details: String },
42
43 #[snafu(display("Provider request for `{url}` failed: {source}"))]
44 ProviderHttp { url: String, source: reqwest::Error },
45
46 #[snafu(display("Failed to watch provider path `{:?}`: {details}", path))]
47 WatchProvider { path: PathBuf, details: String },
48
49 #[snafu(display("Provider `{provider}` returned no valid CIDRs"))]
50 EmptyProviderOutput { provider: String },
51
52 #[snafu(display("Provider `{provider}` has invalid CIDR or IP entry `{entry}`"))]
53 InvalidProviderEntry { provider: String, entry: String },
54
55 #[snafu(display("Provider `{provider}` failed: {details}"))]
56 ProviderLoad { provider: String, details: String },
57
58 #[snafu(display("Invalid real-ip access config: {message}"))]
59 AccessConfig { message: String },
60
61 #[snafu(display("Real-ip access denied for `{client_ip}`: {reason}"))]
62 AccessDenied { client_ip: IpAddr, reason: String },
63}