interactsh_rs/client/
errors.rs1use snafu::prelude::*;
4use snafu::Backtrace;
5
6use super::http_utils::Client;
7use crate::crypto::errors::CryptoError;
8
9
10#[derive(Debug, Snafu)]
12#[snafu(module, context(suffix(false)), visibility(pub(crate)))]
13pub enum RegistrationError {
14 #[snafu(display("Failed to send the request to the server"))]
15 RequestSendFailure { source: reqwest::Error },
16
17 #[snafu(display("Server returned an Unauthorized status code"))]
18 Unauthorized { backtrace: Backtrace },
19
20 #[snafu(display(
21 "Failed to register or deregister with the server - {status_code}: {server_msg}"
22 ))]
23 RegistrationFailure {
24 server_msg: String,
25 status_code: u16,
26 backtrace: Backtrace,
27 },
28}
29
30#[derive(Debug, Snafu)]
34#[snafu(
35 module,
36 context(suffix(false)),
37 visibility(pub(crate)),
38 display("Failure occured during registration/deregistration")
39)]
40pub struct ClientRegistrationError<C: Client + Clone> {
41 #[snafu(source)]
42 pub error: RegistrationError,
43 pub client: C,
44}
45
46
47#[derive(Debug, Snafu)]
49#[snafu(module, context(suffix(false)), visibility(pub(crate)))]
50pub enum ClientBuildError {
51 #[snafu(display("Builder failed to generate the RSA private key"))]
52 RsaGen { source: CryptoError },
53
54 #[snafu(display("RSA key size was not set"))]
55 MissingRsaKeySize { backtrace: Backtrace },
56
57 #[snafu(display("Interactsh server was not set"))]
58 MissingServer { backtrace: Backtrace },
59
60 #[snafu(display("Failed to extract the RSA public key"))]
61 PubKeyExtract { source: CryptoError },
62
63 #[snafu(display("Failed to encode the RSA public key"))]
64 PubKeyEncode { source: CryptoError },
65
66 #[snafu(display("Failed to build the reqwest client"))]
67 ReqwestBuildFailed { source: reqwest::Error },
68}
69
70
71#[derive(Debug, Snafu)]
73#[snafu(module, context(suffix(false)), visibility(pub(crate)))]
74pub enum ClientPollError {
75 #[snafu(display("Client failed to poll the Interactsh server"))]
76 PollFailure { source: reqwest::Error },
77
78 #[snafu(display("Interactsh server returned error status - {status_code}: {server_msg}"))]
79 PollErrorStatus {
80 server_msg: String,
81 status_code: u16,
82 backtrace: Backtrace,
83 },
84
85 #[snafu(display("Server response is not valid JSON"))]
86 ResponseJsonParseFailed { source: reqwest::Error },
87
88 #[snafu(display("Failed to decrypt the AES key"))]
89 AesKeyDecryptFailed { source: CryptoError },
90
91 #[snafu(display("Failed to decrypt the received data"))]
92 DataDecryptFailed { source: CryptoError },
93
94 #[snafu(display("Base64 decoding failed"))]
95 Base64DecodeFailed { source: base64::DecodeError },
96}