Utilities¶
The utils module provides helper functions for security operations.
Logging Functions¶
def setup_custom_logging(log_file: str | None = None, log_format: str = "text") -> logging.Logger:
"""Setup custom logging for DjangoAPI Guard."""
def log_activity(request, logger, log_type="request", reason="", passive_mode=False, trigger_info="", level="WARNING"):
"""Universal logging function for all types of requests and activities."""
Security Check Functions¶
def is_user_agent_allowed(user_agent: str, config: SecurityConfig) -> bool:
"""Check if user agent is allowed."""
def is_ip_allowed(ip: str, config: SecurityConfig, ipinfo_db=None) -> bool:
"""Check if IP address is allowed."""
def detect_penetration_attempt(
request: HttpRequest,
config: SecurityConfig | None = None,
route_config: RouteConfig | None = None,
) -> DetectionResult:
"""Detect potential penetration attempts using the Detection Engine."""
def extract_client_ip(request: HttpRequest, config: SecurityConfig, agent_handler=None) -> str:
"""Securely extract the client IP address from the request."""
Detection Result¶
detect_penetration_attempt returns a DetectionResult dataclass with the following fields:
is_threat: bool- Whether a threat was detected.trigger_info: str- Human-readable description of the matched component and pattern.threat_categories: list[str]- Categories raised by the detection engine (e.g.sql_injection,xss).threat_scores: dict[str, float]- Per-category confidence scores produced by the detection engine.
Usage Examples¶
from guard_core.sync.utils import setup_custom_logging, detect_penetration_attempt
logger = setup_custom_logging("security.log")
# Check for penetration attempts
result = detect_penetration_attempt(request)
if result.is_threat:
logger.warning(
"Suspicious request from %s: %s (categories=%s)",
request.META.get("REMOTE_ADDR"),
result.trigger_info,
result.threat_categories,
)