o
    Ej                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZ ed
dZe	dZdd ZeddefddZdS )    )FastAPI)
IVTRequest)extract_features)calculate_rule_score)train_anomaly_modelget_anomaly_scorenormalize_anomaly_score)calculate_final_risk_score)generate_explanation)adapt_rtb_request)check_blockedstore_blockedtrack_suspiciouszIVT AI Plugin)titlezdata/ml_features.csvc                 C   s   | dk rdS | dkrdS dS )N   CleanF   
SuspiciousBlocked )
risk_scorer   r    /home/djax/ivt_ai_plugin/main.pyget_verdict   s
   r   z	/validatertb_requestc              	   C   sB  t | }t|j|j}|d r+d}d}d}d}dg}t|||}|j||||||dS t|dd}	t|	\}}tt	|	d t
|	d	 t
|	d
 t
|	d t
|	d g}
t|
}t||}t|}|dkrt|j|j}|d }|dkrd}|d t|j|j|| |dkrt|j|j|| t|||}|j||||||dS )Nblockedr   d   previously_blocked)event_id
rule_scoreml_scorer   verdictcontributing_featuresexplanationzdata/blocklist_ips.csvzdata/blocklist_user_agents.csvrequest_counthigh_velocity	duplicategeo_mismatchbad_uar   suspicious_count   repeated_suspicious)r   r   ip
user_agentr
   r   r   r   r   anomaly_modelintr   r	   r   r   appendr   )r   requestblocked_checkr    r   r   ml_risk_scorer!   r"   featuresr   final_risk_scoresuspicious_resultr(   r   r   r   validate_request*   s   



r6   N)fastapir   validation.request_validatorr   features.feature_extractorr   scoring.weighted_scorerr   scoring.anomaly_modelr   r   r   scoring.blenderr	   explain.ai_explainerr
   features.rtb_adapterr   scoring.redis_stater   r   r   appr-   r   postdictr6   r   r   r   r   <module>   s     
