package dashboard import ( "context" "encoding/json" "log" "strings" "time" ) // ThreatManager integrates threat analysis with the main application type ThreatManager struct { analyzer *ThreatAnalyzer api *ThreatAPI authManager *AuthManager securityManager *SecurityManager userAPI *UserAPI blocklistExporter *BlocklistExporter webTemplateAPI *WebTemplateAPI webServicesAPI *WebServicesAPI } // NewThreatManager creates a new threat manager instance func NewThreatManager(dbPath string) (*ThreatManager, error) { analyzer, err := NewThreatAnalyzer(dbPath) if err != nil { return nil, err } // Initialize authentication manager with the same database authManager, err := NewAuthManager(analyzer.db) if err != nil { return nil, err } // Initialize security manager securityManager := NewSecurityManager(authManager) // Initialize APIs api := NewThreatAPI(analyzer) userAPI := NewUserAPI(authManager, securityManager) // Initialize blocklist exporter blocklistExporter := NewBlocklistExporter(analyzer) // Initialize web template API templateManager := NewWebTemplateManager("webtemplates") webTemplateAPI := NewWebTemplateAPI(templateManager) // Initialize web services API configManager := NewConfigManager("config.json") webServicesAPI := NewWebServicesAPI(configManager) tm := &ThreatManager{ analyzer: analyzer, api: api, authManager: authManager, securityManager: securityManager, userAPI: userAPI, blocklistExporter: blocklistExporter, webTemplateAPI: webTemplateAPI, webServicesAPI: webServicesAPI, } return tm, nil } // ProcessHoneypotRecord processes a honeypot log record for threat analysis func (tm *ThreatManager) ProcessHoneypotRecord(timestamp time.Time, remoteAddr, remotePort, service string, details map[string]interface{}, rawPayload string) { // Convert to LogRecord format record := LogRecord{ IP: remoteAddr, Service: service, Timestamp: timestamp, Details: details, } // Add additional analysis data if record.Details == nil { record.Details = make(map[string]interface{}) } record.Details["remote_port"] = remotePort record.Details["raw_payload_length"] = len(rawPayload) // Analyze payload for suspicious patterns if suspiciousPatterns := analyzeSuspiciousPatterns(rawPayload, service); len(suspiciousPatterns) > 0 { record.Details["suspicious_patterns"] = suspiciousPatterns } // Process the record if err := tm.analyzer.ProcessLogRecord(record); err != nil { log.Printf("Failed to process log record for threat analysis: %v", err) } } // analyzeSuspiciousPatterns detects suspicious patterns in payloads func analyzeSuspiciousPatterns(payload, service string) []string { var patterns []string // Common attack patterns suspiciousStrings := []string{ "admin", "root", "administrator", "test", "guest", "user", "password", "123456", "qwerty", "letmein", "welcome", "../", "../../", "/etc/passwd", "/etc/shadow", "