wafrift-oracle 0.2.6

Payload validity oracles for SQL, SSRF, path traversal, command injection, and template injection.
Documentation
use async_trait::async_trait;
use thiserror::Error;
use wafrift_types::oob::{OobCanary, OobInteraction};

#[derive(Debug, Error)]
pub enum OobError {
    #[error("Provider unavailable: {url} - {status}")]
    ProviderUnavailable { url: String, status: u16 },
    #[error("Registration failed: {reason}")]
    RegistrationFailed { reason: String },
    #[error("Poll failed: {reason}")]
    PollFailed { reason: String },
    #[error("Timeout")]
    Timeout,
    #[error("Invalid payload type: {payload_type}")]
    InvalidPayloadType { payload_type: String },
}

#[async_trait]
pub trait OobProviderTrait: Send + Sync + std::fmt::Debug {
    async fn register(&self) -> Result<OobCanary, OobError>;
    async fn poll(&self, canary: &OobCanary) -> Result<Vec<OobInteraction>, OobError>;
}