430 lines
18 KiB
HTML
Executable File
430 lines
18 KiB
HTML
Executable File
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>WEVADS - Scout Intelligence</title>
|
|
<style>
|
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
body {
|
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
|
background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
|
|
color: #e2e8f0;
|
|
min-height: 100vh;
|
|
}
|
|
.container {
|
|
max-width: 1400px;
|
|
margin: 0 auto;
|
|
padding: 2rem;
|
|
}
|
|
.header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding-bottom: 2rem;
|
|
border-bottom: 1px solid #334155;
|
|
margin-bottom: 2rem;
|
|
}
|
|
.logo {
|
|
font-size: 1.8rem;
|
|
font-weight: 700;
|
|
color: #60a5fa;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
.logo span { color: #fbbf24; }
|
|
.status-badge {
|
|
background: #10b981;
|
|
color: white;
|
|
padding: 0.25rem 0.75rem;
|
|
border-radius: 1rem;
|
|
font-size: 0.875rem;
|
|
font-weight: 600;
|
|
}
|
|
.card-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
|
gap: 1.5rem;
|
|
margin-top: 2rem;
|
|
}
|
|
.card {
|
|
background: rgba(30, 41, 59, 0.8);
|
|
border: 1px solid #334155;
|
|
border-radius: 0.75rem;
|
|
padding: 1.5rem;
|
|
transition: all 0.3s ease;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
.card:hover {
|
|
transform: translateY(-2px);
|
|
border-color: #60a5fa;
|
|
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);
|
|
}
|
|
.card-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
.card-icon {
|
|
font-size: 1.5rem;
|
|
color: #60a5fa;
|
|
}
|
|
.card-title {
|
|
font-size: 1.25rem;
|
|
font-weight: 600;
|
|
color: #f1f5f9;
|
|
}
|
|
.card-body {
|
|
color: #94a3b8;
|
|
line-height: 1.6;
|
|
}
|
|
.card-footer {
|
|
margin-top: 1.5rem;
|
|
display: flex;
|
|
gap: 0.75rem;
|
|
}
|
|
.btn {
|
|
padding: 0.5rem 1rem;
|
|
border-radius: 0.5rem;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
border: none;
|
|
transition: all 0.2s;
|
|
font-size: 0.875rem;
|
|
}
|
|
.btn-primary {
|
|
background: #3b82f6;
|
|
color: white;
|
|
}
|
|
.btn-primary:hover {
|
|
background: #2563eb;
|
|
}
|
|
.btn-secondary {
|
|
background: rgba(255, 255, 255, 0.1);
|
|
color: #cbd5e1;
|
|
border: 1px solid #475569;
|
|
}
|
|
.btn-secondary:hover {
|
|
background: rgba(255, 255, 255, 0.2);
|
|
}
|
|
.stats-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
gap: 1rem;
|
|
margin: 2rem 0;
|
|
}
|
|
.stat-card {
|
|
background: rgba(15, 23, 42, 0.7);
|
|
border-radius: 0.75rem;
|
|
padding: 1.5rem;
|
|
border-left: 4px solid #60a5fa;
|
|
}
|
|
.stat-value {
|
|
font-size: 2rem;
|
|
font-weight: 700;
|
|
color: #60a5fa;
|
|
}
|
|
.stat-label {
|
|
color: #94a3b8;
|
|
font-size: 0.875rem;
|
|
margin-top: 0.25rem;
|
|
}
|
|
.api-endpoint {
|
|
background: rgba(0, 0, 0, 0.3);
|
|
border-radius: 0.5rem;
|
|
padding: 1rem;
|
|
font-family: 'Monaco', 'Courier New', monospace;
|
|
font-size: 0.875rem;
|
|
margin: 1rem 0;
|
|
border: 1px solid #334155;
|
|
}
|
|
.endpoint-method {
|
|
display: inline-block;
|
|
padding: 0.25rem 0.5rem;
|
|
border-radius: 0.25rem;
|
|
font-weight: 600;
|
|
font-size: 0.75rem;
|
|
margin-right: 0.5rem;
|
|
}
|
|
.method-get { background: #10b981; color: white; }
|
|
.method-post { background: #3b82f6; color: white; }
|
|
.method-put { background: #f59e0b; color: white; }
|
|
.method-delete { background: #ef4444; color: white; }
|
|
|
|
/* Animation */
|
|
@keyframes pulse {
|
|
0%, 100% { opacity: 1; }
|
|
50% { opacity: 0.7; }
|
|
}
|
|
.loading { animation: pulse 1.5s infinite; }
|
|
|
|
/* Responsive */
|
|
@media (max-width: 768px) {
|
|
.container { padding: 1rem; }
|
|
.card-grid { grid-template-columns: 1fr; }
|
|
}
|
|
</style>
|
|
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="header">
|
|
<div class="logo">
|
|
<span>WEVADS</span> • Scout Intelligence
|
|
</div>
|
|
<div class="status-badge" id="statusIndicator">
|
|
Loading...
|
|
</div>
|
|
</div>
|
|
|
|
<div class="stats-grid" id="statsContainer">
|
|
<!-- Stats will be loaded here -->
|
|
</div>
|
|
|
|
<div class="card-grid">
|
|
<!-- Dynamic cards will be loaded here -->
|
|
</div>
|
|
|
|
<div id="apiEndpoints" style="margin-top: 3rem;">
|
|
<!-- API endpoints will be displayed here -->
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
// Configuration
|
|
const CONFIG = {
|
|
screenName: "scout-intelligence",
|
|
category: "Shadow",
|
|
apiBase: "/api/scout.php"
|
|
};
|
|
|
|
// API endpoints mapping
|
|
const API_MAPPING = {
|
|
'bpms-command-center': { endpoint: 'bpms', methods: ['GET', 'POST'] },
|
|
'ceo-dashboard': { endpoint: 'ceo', methods: ['GET'] },
|
|
'control-hub': { endpoint: 'control', methods: ['POST'] },
|
|
'brain-unified-send': { endpoint: 'brain/send', methods: ['GET', 'POST'] },
|
|
'brain-combo-discovery': { endpoint: 'brain/combo', methods: ['GET', 'POST'] },
|
|
'winning-config': { endpoint: 'winning', methods: ['GET', 'PUT'] },
|
|
'pattern-shuffler': { endpoint: 'pattern', methods: ['POST'] },
|
|
'graph-ews-sender': { endpoint: 'graph', methods: ['POST'] },
|
|
'offer-engine': { endpoint: 'offer', methods: ['GET', 'POST'] },
|
|
'ai-copywriter': { endpoint: 'copy', methods: ['POST'] },
|
|
'sms-send-engine': { endpoint: 'sms', methods: ['POST'] },
|
|
'reputation-monitor': { endpoint: 'reputation', methods: ['GET'] },
|
|
'blacklist-monitor': { endpoint: 'blacklist', methods: ['GET'] },
|
|
'ptr-discovery': { endpoint: 'ptr', methods: ['GET', 'POST'] },
|
|
'smart-report': { endpoint: 'report', methods: ['GET'] },
|
|
'auto-mirroring': { endpoint: 'mirror', methods: ['POST'] },
|
|
'cloudflare-manager': { endpoint: 'cloudflare', methods: ['GET', 'POST'] },
|
|
'warming-engine': { endpoint: 'warming', methods: ['POST'] },
|
|
'self-healing': { endpoint: 'healing', methods: ['GET', 'POST'] },
|
|
'smart-failover': { endpoint: 'failover', methods: ['GET'] },
|
|
'cloud-cost-monitor': { endpoint: 'cost', methods: ['GET'] },
|
|
'financial-guard': { endpoint: 'financial', methods: ['GET'] },
|
|
'n8n-bridge': { endpoint: 'n8n', methods: ['POST'] },
|
|
'account-creator': { endpoint: 'accounts', methods: ['POST'] },
|
|
'seed-cleaner': { endpoint: 'seeds', methods: ['POST'] },
|
|
'scrapping-factory': { endpoint: 'scrape', methods: ['POST'] },
|
|
'dark-scraper': { endpoint: 'dark', methods: ['POST'] },
|
|
'newsletter-extractor': { endpoint: 'newsletter', methods: ['GET', 'POST'] },
|
|
'mail-personas': { endpoint: 'personas', methods: ['GET', 'POST'] },
|
|
'temp-email-factory': { endpoint: 'temp', methods: ['GET', 'POST'] },
|
|
'lookalike-engine': { endpoint: 'lookalike', methods: ['POST'] },
|
|
'captcha-solver': { endpoint: 'captcha', methods: ['POST'] },
|
|
'cvc-vault': { endpoint: 'cvc', methods: ['GET', 'POST'] },
|
|
'office-checker': { endpoint: 'office', methods: ['POST'] },
|
|
'host-hunter': { endpoint: 'host', methods: ['GET', 'POST'] },
|
|
'scout-intelligence': { endpoint: 'scout', methods: ['GET'] }
|
|
};
|
|
|
|
// Initialize the screen
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
loadScreenData();
|
|
checkApiStatus();
|
|
});
|
|
|
|
async function loadScreenData() {
|
|
const statsContainer = document.getElementById('statsContainer');
|
|
const cardsContainer = document.querySelector('.card-grid');
|
|
const endpointsContainer = document.getElementById('apiEndpoints');
|
|
|
|
// Set status
|
|
document.getElementById('statusIndicator').textContent = 'Online';
|
|
document.getElementById('statusIndicator').style.background = '#10b981';
|
|
|
|
// Load stats
|
|
statsContainer.innerHTML = `
|
|
<div class="stat-card">
|
|
<div class="stat-value" id="stat1">0</div>
|
|
<div class="stat-label">Active Processes</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<div class="stat-value" id="stat2">0</div>
|
|
<div class="stat-label">Success Rate</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<div class="stat-value" id="stat3">0</div>
|
|
<div class="stat-label">Last Updated</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<div class="stat-value" id="stat4">0</div>
|
|
<div class="stat-label">Queue Size</div>
|
|
</div>
|
|
`;
|
|
|
|
// Load cards based on category
|
|
const cards = getCardsForCategory(CONFIG.category);
|
|
cardsContainer.innerHTML = cards.map(card => `
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<div class="card-icon">${card.icon}</div>
|
|
<div class="card-title">${card.title}</div>
|
|
</div>
|
|
<div class="card-body">
|
|
${card.description}
|
|
</div>
|
|
<div class="card-footer">
|
|
<button class="btn btn-primary" onclick="${card.action}">
|
|
${card.actionText}
|
|
</button>
|
|
<button class="btn btn-secondary" onclick="showDetails('${card.title}')">
|
|
Details
|
|
</button>
|
|
</div>
|
|
</div>
|
|
`).join('');
|
|
|
|
// Load API endpoints
|
|
const apiInfo = API_MAPPING[CONFIG.screenName] || { endpoint: CONFIG.screenName, methods: ['GET'] };
|
|
endpointsContainer.innerHTML = `
|
|
<h3 style="margin-bottom: 1rem; color: #f1f5f9;">API Endpoints</h3>
|
|
<div class="api-endpoint">
|
|
<span class="endpoint-method method-get">GET</span>
|
|
<code>/api/${apiInfo.endpoint}.php?action=status</code>
|
|
</div>
|
|
${apiInfo.methods.includes('POST') ? `
|
|
<div class="api-endpoint">
|
|
<span class="endpoint-method method-post">POST</span>
|
|
<code>/api/${apiInfo.endpoint}.php</code>
|
|
<div style="margin-top: 0.5rem; color: #94a3b8;">
|
|
Requires JSON payload with action parameter
|
|
</div>
|
|
</div>
|
|
` : ''}
|
|
`;
|
|
|
|
// Animate stats
|
|
animateCounter('stat1', 100, 1500);
|
|
animateCounter('stat2', 95, 2000);
|
|
document.getElementById('stat3').textContent = new Date().toLocaleTimeString();
|
|
animateCounter('stat4', 24, 1000);
|
|
}
|
|
|
|
function getCardsForCategory(category) {
|
|
const cards = {
|
|
'Command': [
|
|
{ icon: '⚡', title: 'System Control', description: 'Full system monitoring and control panel', action: 'openControlPanel()', actionText: 'Open' },
|
|
{ icon: '📊', title: 'Real-time Analytics', description: 'Live metrics and performance dashboards', action: 'showAnalytics()', actionText: 'View' },
|
|
{ icon: '🔧', title: 'Configuration', description: 'System settings and module configuration', action: 'openConfig()', actionText: 'Configure' }
|
|
],
|
|
'Operations': [
|
|
{ icon: '📧', title: 'Send Operations', description: 'Email sending and campaign management', action: 'startSendOperation()', actionText: 'Start' },
|
|
{ icon: '🎯', title: 'Target Selection', description: 'Recipient targeting and segmentation', action: 'selectTargets()', actionText: 'Select' },
|
|
{ icon: '📈', title: 'Performance', description: 'Campaign performance and optimization', action: 'showPerformance()', actionText: 'Optimize' }
|
|
],
|
|
'Defense': [
|
|
{ icon: '🛡️', title: 'Security Monitor', description: 'Real-time security threat detection', action: 'checkSecurity()', actionText: 'Scan' },
|
|
{ icon: '📋', title: 'Compliance', description: 'Regulatory compliance checks', action: 'checkCompliance()', actionText: 'Check' },
|
|
{ icon: '🚨', title: 'Alerts', description: 'Security alerts and notifications', action: 'viewAlerts()', actionText: 'View' }
|
|
],
|
|
'Infra': [
|
|
{ icon: '☁️', title: 'Infrastructure', description: 'Server and network infrastructure', action: 'viewInfrastructure()', actionText: 'Monitor' },
|
|
{ icon: '💰', title: 'Cost Analysis', description: 'Cloud cost monitoring and optimization', action: 'analyzeCosts()', actionText: 'Analyze' },
|
|
{ icon: '⚙️', title: 'Automation', description: 'Workflow automation and scheduling', action: 'setupAutomation()', actionText: 'Setup' }
|
|
],
|
|
'Factories': [
|
|
{ icon: '🏭', title: 'Data Factory', description: 'Data generation and processing', action: 'runDataFactory()', actionText: 'Run' },
|
|
{ icon: '🧹', title: 'Data Cleaning', description: 'Data validation and cleaning', action: 'cleanData()', actionText: 'Clean' },
|
|
{ icon: '🎭', title: 'Personas', description: 'Identity and persona management', action: 'managePersonas()', actionText: 'Manage' }
|
|
],
|
|
'Shadow': [
|
|
{ icon: '🌑', title: 'Stealth Ops', description: 'Covert operations management', action: 'startStealthOp()', actionText: 'Start' },
|
|
{ icon: '🔍', title: 'Reconnaissance', description: 'Intelligence gathering', action: 'startRecon()', actionText: 'Start' },
|
|
{ icon: '🔄', title: 'Evasion', description: 'Pattern evasion techniques', action: 'setupEvasion()', actionText: 'Setup' }
|
|
]
|
|
};
|
|
|
|
return cards[category] || cards['Operations'];
|
|
}
|
|
|
|
async function checkApiStatus() {
|
|
try {
|
|
const apiInfo = API_MAPPING[CONFIG.screenName];
|
|
if (!apiInfo) return;
|
|
|
|
const response = await fetch(`/api/${apiInfo.endpoint}.php?action=status`);
|
|
if (response.ok) {
|
|
const data = await response.json();
|
|
console.log('API Status:', data);
|
|
}
|
|
} catch (error) {
|
|
console.log('API check failed, creating stub endpoint...');
|
|
createStubEndpoint();
|
|
}
|
|
}
|
|
|
|
function createStubEndpoint() {
|
|
// This would create a stub API endpoint if it doesn't exist
|
|
console.log(`Would create stub endpoint: /api/${API_MAPPING[CONFIG.screenName]?.endpoint || CONFIG.screenName}.php`);
|
|
}
|
|
|
|
// Animation function
|
|
function animateCounter(elementId, target, duration) {
|
|
const element = document.getElementById(elementId);
|
|
if (!element) return;
|
|
|
|
let start = 0;
|
|
const increment = target / (duration / 16); // 60fps
|
|
|
|
function updateCounter() {
|
|
start += increment;
|
|
if (start >= target) {
|
|
element.textContent = target;
|
|
} else {
|
|
element.textContent = Math.floor(start);
|
|
requestAnimationFrame(updateCounter);
|
|
}
|
|
}
|
|
|
|
updateCounter();
|
|
}
|
|
|
|
// Action functions
|
|
function openControlPanel() { alert('Control Panel would open'); }
|
|
function showAnalytics() { alert('Analytics would show'); }
|
|
function openConfig() { alert('Configuration would open'); }
|
|
function startSendOperation() { alert('Send operation would start'); }
|
|
function selectTargets() { alert('Target selection would open'); }
|
|
function showPerformance() { alert('Performance dashboard would show'); }
|
|
function checkSecurity() { alert('Security scan would run'); }
|
|
function checkCompliance() { alert('Compliance check would run'); }
|
|
function viewAlerts() { alert('Alerts would display'); }
|
|
function viewInfrastructure() { alert('Infrastructure monitor would open'); }
|
|
function analyzeCosts() { alert('Cost analysis would run'); }
|
|
function setupAutomation() { alert('Automation setup would open'); }
|
|
function runDataFactory() { alert('Data factory would run'); }
|
|
function cleanData() { alert('Data cleaning would start'); }
|
|
function managePersonas() { alert('Persona management would open'); }
|
|
function startStealthOp() { alert('Stealth operation would start'); }
|
|
function startRecon() { alert('Reconnaissance would start'); }
|
|
function setupEvasion() { alert('Evasion setup would open'); }
|
|
function showDetails(title) { alert(`Details for: ${title}`); }
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|