File size: 2,839 Bytes
ce8cc64
 
ec543fe
e06fba8
ce8cc64
e06fba8
ce8cc64
ec543fe
 
e06fba8
 
 
 
 
 
 
 
 
 
ce8cc64
c9dfb34
e06fba8
ec543fe
e06fba8
c9dfb34
 
 
 
 
 
 
e06fba8
c9dfb34
 
e06fba8
 
c9dfb34
 
 
 
 
ec543fe
c9dfb34
 
 
 
 
ec543fe
 
c9dfb34
e06fba8
ce8cc64
e06fba8
c9dfb34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e06fba8
 
ec543fe
 
 
c9dfb34
 
e06fba8
 
 
ce8cc64
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from pydantic import BaseModel
from typing import List

app = FastAPI()
app.mount("/static", StaticFiles(directory="."), name="static")

class DomainScore(BaseModel):
    name: str
    score: int

class AnalysisRequest(BaseModel):
    overall: int
    domains: List[DomainScore]

@app.post("/analyze")
async def analyze(data: AnalysisRequest):
    analysis = f"""
🔒 **ANÁLISIS AVANZADO DE CIBERSEGURIDAD - DOCTOR LINUX**

**PUNTAJE GLOBAL:** {data.overall}%

**EVALUACIÓN ESTRATÉGICA:**
{"✅ POSTURA SÓLIDA - Controles robustos implementados" if data.overall >= 80 else 
 "⚠️ POSTURA MEDIA - Se requieren mejoras en controles críticos" if data.overall >= 60 else 
 "🚨 RIESGO ELEVADO - Atención inmediata requerida en múltiples áreas"}

**ANÁLISIS DETALLADO POR DOMINIO:**
{chr(10).join([f"• {domain.name}: {domain.score}% - {get_domain_analysis(domain.name, domain.score)}" for domain in data.domains])}

**RIESGOS IDENTIFICADOS:**
{get_risk_analysis(data.domains)}

**RECOMENDACIONES PRIORITARIAS:**
1. Implementar controles básicos en áreas críticas
2. Establecer monitoreo continuo 24/7
3. Desarrollar plan de respuesta a incidentes
4. Realizar auditoría de seguridad profunda
5. Capacitar equipo en mejores prácticas

**ROADMAP SUGERIDO:**
• SEMANA 1: Contención de riesgos críticos
• SEMANA 2-4: Implementación controles básicos  
• MES 2-3: Mejora de madurez operacional
• MES 4-6: Optimización y automatización

---
*Análisis generado por Doctor Linux - Expertos en Ciberseguridad Operativa*
"""
    return {"analysis": analysis}

def get_domain_analysis(name, score):
    if score >= 80:
        return "Control robusto - Mantener y documentar"
    elif score >= 60:
        return "Control aceptable - Mejorar procesos"
    else:
        return "Control crítico - Acción inmediata requerida"

def get_risk_analysis(domains):
    critical = [d for d in domains if d.score < 60]
    medium = [d for d in domains if 60 <= d.score < 80]
    
    analysis = ""
    if critical:
        analysis += "🚨 RIESGOS CRÍTICOS:\n"
        analysis += chr(10).join([f"   - {d.name} ({d.score}%): Exposición alta\n" for d in critical])
    
    if medium:
        analysis += "⚠️ RIESGOS MEDIOS:\n"
        analysis += chr(10).join([f"   - {d.name} ({d.score}%): Mejora necesaria\n" for d in medium])
    
    return analysis

@app.get("/")
async def read_root():
    try:
        with open("index.html", "r", encoding="utf-8") as f:
            return HTMLResponse(content=f.read())
    except:
        return HTMLResponse(content="<h1>Error: Archivo index.html no encontrado</h1>")

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=7860)