secubox-openwrt/package/secubox/luci-app-netdata-dashboard/htdocs/luci-static/resources/view/netdata-dashboard/settings.js
CyberMind-FR e58f479cd4 feat(waf): Update WAF scenarios with 2024-2025 CVEs and OWASP threats
Add detection patterns for latest actively exploited vulnerabilities:
- CVE-2025-55182 (React2Shell, CVSS 10.0)
- CVE-2025-8110 (Gogs RCE), CVE-2025-53770 (SharePoint)
- CVE-2025-52691 (SmarterMail), CVE-2025-40551 (SolarWinds)
- CVE-2024-47575 (FortiManager), CVE-2024-21887 (Ivanti)
- CVE-2024-3400, CVE-2024-0012, CVE-2024-9474 (PAN-OS)

New attack categories based on OWASP Top 10 2025:
- HTTP Request Smuggling (TE.CL/CL.TE conflicts)
- AI/LLM Prompt Injection (ChatML, instruction markers)
- WAF Bypass techniques (Unicode normalization, double encoding)
- Supply Chain attacks (CI/CD poisoning, dependency confusion)
- Extended SSTI (Jinja2, Freemarker, Velocity, Thymeleaf)
- API Abuse (BOLA/IDOR, mass assignment)

CrowdSec scenarios split into 11 separate files for reliability.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-12 05:02:57 +01:00

244 lines
8.1 KiB
JavaScript

'use strict';
'require view';
'require secubox-theme/theme as Theme';
'require ui';
'require netdata-dashboard/api as API';
'require secubox-portal/header as SbHeader';
'require secubox/kiss-theme';
return view.extend({
load: function() {
return Promise.all([
API.getNetdataStatus(),
API.getNetdataInfo(),
API.getSystem()
]);
},
render: function(data) {
var status = data[0] || {};
var info = data[1] || {};
var system = data[2] || {};
// Build URL using browser hostname (not 127.0.0.1 which won't work from browser)
var port = status.port || 19999;
var bind = status.bind || '0.0.0.0';
var dashboardUrl = 'http://' + window.location.hostname + ':' + port;
var tableStyle = 'width: 100%; border-collapse: collapse;';
var thStyle = 'padding: 0.75rem 1rem; text-align: left; font-weight: 600; width: 200px; background: #161b22; border-bottom: 1px solid #30363d;';
var tdStyle = 'padding: 0.75rem 1rem; border-bottom: 1px solid #30363d;';
// Main wrapper with SecuBox header
var wrapper = E('div', { 'class': 'secubox-page-wrapper' });
wrapper.appendChild(SbHeader.render());
var view = E('div', { 'class': 'cbi-map' }, [
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
E('h2', {}, _('Netdata Settings')),
E('div', { 'class': 'cbi-map-descr' },
_('Configure Netdata monitoring service and view system information.')),
// Service Information
E('div', { 'class': 'cbi-section' }, [
E('h3', {}, _('Service Information')),
E('table', { 'style': tableStyle }, [
E('tbody', {}, [
E('tr', {}, [
E('th', { 'style': thStyle }, _('Service Status')),
E('td', { 'style': tdStyle }, [
E('span', {
'style': 'display: inline-block; padding: 0.25rem 0.75rem; border-radius: 4px; font-weight: 500; background: ' + (status.running ? '#238636' : '#da3633') + '; color: white;'
}, status.running ? _('Running') : _('Stopped'))
])
]),
E('tr', {}, [
E('th', { 'style': thStyle }, _('Version')),
E('td', { 'style': tdStyle }, status.version || 'unknown')
]),
E('tr', {}, [
E('th', { 'style': thStyle }, _('Listen Port')),
E('td', { 'style': tdStyle }, String(port))
]),
E('tr', {}, [
E('th', { 'style': thStyle }, _('Bind Address')),
E('td', { 'style': tdStyle }, bind)
]),
E('tr', {}, [
E('th', { 'style': thStyle }, _('Dashboard URL')),
E('td', { 'style': tdStyle }, [
E('a', {
'href': dashboardUrl,
'target': '_blank',
'style': 'color: #58a6ff;'
}, dashboardUrl)
])
])
])
])
]),
// System Information
E('div', { 'class': 'cbi-section', 'style': 'margin-top: 2em;' }, [
E('h3', {}, _('System Information')),
E('table', { 'style': tableStyle }, [
E('tbody', {}, [
E('tr', {}, [
E('th', { 'style': thStyle }, _('Hostname')),
E('td', { 'style': tdStyle }, system.hostname || 'Unknown')
]),
E('tr', {}, [
E('th', { 'style': thStyle }, _('Model')),
E('td', { 'style': tdStyle }, system.model || 'Unknown')
]),
E('tr', {}, [
E('th', { 'style': thStyle }, _('Kernel')),
E('td', { 'style': tdStyle }, system.kernel || 'Unknown')
]),
E('tr', {}, [
E('th', { 'style': thStyle }, _('Architecture')),
E('td', { 'style': tdStyle }, system.arch || 'Unknown')
]),
E('tr', {}, [
E('th', { 'style': thStyle }, _('Distribution')),
E('td', { 'style': tdStyle }, (system.distro || 'OpenWrt') + ' ' + (system.version || ''))
]),
E('tr', {}, [
E('th', { 'style': thStyle }, _('Uptime')),
E('td', { 'style': tdStyle }, system.uptime_formatted || '0d 0h 0m')
])
])
])
]),
// Configuration Files
E('div', { 'class': 'cbi-section', 'style': 'margin-top: 2em;' }, [
E('h3', {}, _('Configuration Files')),
E('div', { 'style': 'background: #f8f9fa; padding: 1em; border-radius: 4px;' }, [
E('p', {}, [
E('strong', {}, _('Main Configuration:')),
' ',
E('code', {}, '/etc/netdata/netdata.conf')
]),
E('p', {}, [
E('strong', {}, _('Health Alarms:')),
' ',
E('code', {}, '/etc/netdata/health.d/')
]),
E('p', {}, [
E('strong', {}, _('Streams Configuration:')),
' ',
E('code', {}, '/etc/netdata/stream.conf')
]),
E('p', {}, [
E('strong', {}, _('Python Modules:')),
' ',
E('code', {}, '/etc/netdata/python.d/')
]),
E('p', { 'style': 'margin-top: 1em; padding: 0.75em; background: #fff3cd; border-radius: 4px;' }, [
E('strong', {}, _('Note:')),
' ',
_('After modifying configuration files, restart Netdata from the Dashboard tab.')
])
])
]),
// Common Configuration Examples
E('div', { 'class': 'cbi-section', 'style': 'margin-top: 2em;' }, [
E('h3', {}, _('Common Configuration Examples')),
// Change Port/Bind
E('div', { 'style': 'margin-bottom: 1.5em;' }, [
E('h4', {}, _('Change Port and Bind Address')),
E('p', {}, _('Edit /etc/netdata/netdata.conf and modify:')),
E('pre', { 'style': 'background: #f5f5f5; padding: 1em; border-radius: 4px; overflow-x: auto;' },
'[web]\n' +
' default port = 19999\n' +
' bind to = 127.0.0.1\n'
),
E('p', { 'style': 'color: #666; font-size: 0.9em;' },
_('Use 0.0.0.0 to listen on all interfaces, or specific IP for a single interface.'))
]),
// Memory Mode
E('div', { 'style': 'margin-bottom: 1.5em;' }, [
E('h4', {}, _('Configure Memory Mode')),
E('p', {}, _('Edit /etc/netdata/netdata.conf:')),
E('pre', { 'style': 'background: #f5f5f5; padding: 1em; border-radius: 4px; overflow-x: auto;' },
'[global]\n' +
' memory mode = ram\n' +
' # Options: ram, save, map, none, dbengine\n' +
' \n' +
' history = 3600\n' +
' # Seconds of history to keep in memory\n'
)
]),
// Disable Collectors
E('div', { 'style': 'margin-bottom: 1.5em;' }, [
E('h4', {}, _('Disable Specific Collectors')),
E('p', {}, _('Edit /etc/netdata/netdata.conf:')),
E('pre', { 'style': 'background: #f5f5f5; padding: 1em; border-radius: 4px; overflow-x: auto;' },
'[plugins]\n' +
' python.d = no\n' +
' node.d = no\n' +
' apps = no\n'
),
E('p', { 'style': 'color: #666; font-size: 0.9em;' },
_('Disable unused collectors to reduce CPU and memory usage.'))
])
]),
// Useful Commands
E('div', { 'class': 'cbi-section', 'style': 'margin-top: 2em; background: #e8f4f8; padding: 1em;' }, [
E('h3', {}, _('Useful Commands')),
E('pre', { 'style': 'background: white; padding: 1em; border-radius: 4px; overflow-x: auto;' }, [
'# Service control\n',
'/etc/init.d/netdata start\n',
'/etc/init.d/netdata stop\n',
'/etc/init.d/netdata restart\n',
'\n',
'# View logs\n',
'logread | grep netdata\n',
'\n',
'# Test configuration\n',
'netdata -W unittest\n',
'\n',
'# List all charts\n',
'curl http://127.0.0.1:19999/api/v1/charts\n'
])
]),
// Documentation Links
E('div', { 'class': 'cbi-section', 'style': 'margin-top: 2em;' }, [
E('h3', {}, _('Documentation & Resources')),
E('ul', { 'style': 'margin-top: 0.5em;' }, [
E('li', {}, [
E('a', { 'href': 'https://learn.netdata.cloud/', 'target': '_blank' },
_('Official Documentation'))
]),
E('li', {}, [
E('a', { 'href': 'https://github.com/netdata/netdata', 'target': '_blank' },
_('GitHub Repository'))
]),
E('li', {}, [
E('a', { 'href': 'https://learn.netdata.cloud/docs/configure/nodes', 'target': '_blank' },
_('Configuration Guide'))
]),
E('li', {}, [
E('a', { 'href': 'https://learn.netdata.cloud/docs/configure/health', 'target': '_blank' },
_('Health Monitoring & Alarms'))
])
])
])
]);
wrapper.appendChild(view);
return KissTheme.wrap([wrapper], 'admin/status/netdata/settings');
},
handleSaveApply: null,
handleSave: null,
handleReset: null
});