chore: sync luCI modules
This commit is contained in:
parent
0beb9620d4
commit
c40c5e8dbc
@ -7,6 +7,7 @@ return view.extend({
|
||||
load: function() { return api.getBypassList(); },
|
||||
render: function(data) {
|
||||
return E('div', {class:'cbi-map'}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, '⏭️ Bypass Rules'),
|
||||
E('p', {style:'color:#94a3b8;margin-bottom:20px'}, 'Devices and domains that bypass authentication.'),
|
||||
E('div', {style:'display:grid;grid-template-columns:repeat(3,1fr);gap:16px'}, [
|
||||
|
||||
@ -11,6 +11,7 @@ return view.extend({
|
||||
var colors = {google:'#4285f4',github:'#333',facebook:'#1877f2',twitter:'#1da1f2'};
|
||||
|
||||
return E('div', {class:'cbi-map'}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, '🔑 OAuth Providers'),
|
||||
E('p', {style:'color:#94a3b8;margin-bottom:20px'}, 'Configure third-party authentication providers.'),
|
||||
E('div', {style:'display:grid;gap:16px'}, [
|
||||
|
||||
@ -12,6 +12,7 @@ return view.extend({
|
||||
var sessions = data[1].sessions || [];
|
||||
|
||||
return E('div', {class:'cbi-map'}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('style', {}, [
|
||||
'.ag{font-family:system-ui,sans-serif}',
|
||||
'.ag-hdr{background:linear-gradient(135deg,#0891b2,#06b6d4);color:#fff;padding:24px;border-radius:12px;margin-bottom:20px}',
|
||||
|
||||
@ -8,6 +8,7 @@ return view.extend({
|
||||
render: function(data) {
|
||||
var sessions = data.sessions || [];
|
||||
return E('div', {class:'cbi-map'}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, '👥 Active Sessions'),
|
||||
E('div', {style:'background:#1e293b;padding:20px;border-radius:12px'}, [
|
||||
sessions.length ? E('table', {style:'width:100%;color:#f1f5f9'}, [
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
return view.extend({
|
||||
render: function() {
|
||||
return E('div', {class:'cbi-map'}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, '🎨 Splash Page Editor'),
|
||||
E('p', {style:'color:#94a3b8'}, 'Customize the captive portal splash page appearance.'),
|
||||
E('div', {style:'display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px'}, [
|
||||
|
||||
@ -11,6 +11,7 @@ return view.extend({
|
||||
var self = this;
|
||||
|
||||
return E('div', {class:'cbi-map'}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, '🎟️ Access Vouchers'),
|
||||
E('div', {style:'margin-bottom:16px'}, [
|
||||
E('button', {class:'cbi-button cbi-button-positive',click:function(){
|
||||
|
||||
@ -10,6 +10,7 @@ return view.extend({
|
||||
var colors = ['#ef4444','#f59e0b','#eab308','#22c55e','#06b6d4','#3b82f6','#8b5cf6','#ec4899'];
|
||||
|
||||
return E('div', {class:'cbi-map'}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('style', {}, '.qos-grid{display:grid;gap:16px}.qos-card{background:#1e293b;padding:20px;border-radius:12px;border-left:4px solid}.qos-name{font-size:18px;font-weight:600;color:#f1f5f9}.qos-desc{color:#94a3b8;font-size:13px;margin-top:4px}.qos-stats{display:flex;gap:20px;margin-top:16px}.qos-stat{text-align:center}.qos-stat-val{font-size:24px;font-weight:700}.qos-stat-lbl{font-size:11px;color:#64748b}'),
|
||||
E('h2', {}, '📊 QoS Priority Classes'),
|
||||
E('p', {style:'color:#94a3b8;margin-bottom:20px'}, '8 priority levels for traffic classification. Lower number = higher priority.'),
|
||||
|
||||
@ -8,6 +8,7 @@ return view.extend({
|
||||
render: function(data) {
|
||||
var clients = data.clients || [];
|
||||
return E('div', {class:'cbi-map'}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, '👥 Connected Clients'),
|
||||
E('div', {style:'background:#1e293b;padding:20px;border-radius:12px;margin-top:20px'}, [
|
||||
clients.length ? E('table', {style:'width:100%;color:#f1f5f9'}, [
|
||||
|
||||
@ -11,6 +11,7 @@ return view.extend({
|
||||
var colors = {voip:'#22c55e',gaming:'#f59e0b',streaming:'#ef4444',download:'#3b82f6',social:'#ec4899',work:'#8b5cf6'};
|
||||
|
||||
return E('div', {class:'cbi-map'}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, '🎯 Media Detection'),
|
||||
E('p', {style:'color:#94a3b8'}, 'Automatic traffic classification based on ports, protocols, and domains.'),
|
||||
E('div', {style:'display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px'}, media.map(function(m) {
|
||||
|
||||
@ -18,6 +18,7 @@ return L.view.extend({
|
||||
var quotas = data[2] || [];
|
||||
|
||||
var v = E('div', { 'class': 'cbi-map' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('Bandwidth Manager - Overview')),
|
||||
E('div', { 'class': 'cbi-map-descr' }, _('QoS rules, client quotas, and traffic control'))
|
||||
]);
|
||||
|
||||
@ -106,7 +106,12 @@ return L.view.extend({
|
||||
return actions;
|
||||
};
|
||||
|
||||
return m.render();
|
||||
return m.render().then(function(rendered) {
|
||||
return E('div', {}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
rendered
|
||||
]);
|
||||
});
|
||||
},
|
||||
|
||||
handleSaveApply: null,
|
||||
|
||||
@ -71,7 +71,12 @@ return L.view.extend({
|
||||
o = s.option(form.Flag, 'enabled', _('Enabled'));
|
||||
o.default = o.enabled;
|
||||
|
||||
return m.render();
|
||||
return m.render().then(function(rendered) {
|
||||
return E('div', {}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
rendered
|
||||
]);
|
||||
});
|
||||
},
|
||||
|
||||
handleSaveApply: null,
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
return view.extend({
|
||||
render: function() {
|
||||
return E('div', {class:'cbi-map'}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, '⏰ Time-Based Schedules'),
|
||||
E('p', {style:'color:#94a3b8'}, 'Configure bandwidth limits based on time of day.'),
|
||||
E('div', {style:'background:#1e293b;padding:20px;border-radius:12px;margin-top:20px'}, [
|
||||
|
||||
@ -105,6 +105,11 @@ return L.view.extend({
|
||||
o.placeholder = 'admin@example.com';
|
||||
o.depends('enabled', '1');
|
||||
|
||||
return m.render();
|
||||
return m.render().then(function(rendered) {
|
||||
return E('div', {}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
rendered
|
||||
]);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -31,6 +31,7 @@ return L.view.extend({
|
||||
v.appendChild(graphContainer);
|
||||
|
||||
var container = E('div', { 'id': 'usage-container', 'class': 'cbi-section' });
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
v.appendChild(container);
|
||||
|
||||
// Initial render
|
||||
|
||||
@ -22,6 +22,7 @@ return view.extend({
|
||||
var logs = data[1].logs || [];
|
||||
|
||||
var view = E('div', { 'class': 'client-guardian-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('client-guardian/dashboard.css') }),
|
||||
|
||||
// Email Configuration
|
||||
|
||||
@ -24,6 +24,7 @@ return view.extend({
|
||||
var nds = sessions.nodogsplash || {};
|
||||
|
||||
var view = E('div', { 'class': 'cbi-map' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('Captive Portal Management')),
|
||||
|
||||
// Nodogsplash Status Card
|
||||
|
||||
@ -20,6 +20,7 @@ return view.extend({
|
||||
var self = this;
|
||||
|
||||
var view = E('div', { 'class': 'client-guardian-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('client-guardian/dashboard.css') }),
|
||||
|
||||
E('div', { 'class': 'cg-header' }, [
|
||||
|
||||
@ -19,6 +19,7 @@ return view.extend({
|
||||
var self = this;
|
||||
|
||||
var view = E('div', { 'class': 'client-guardian-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('client-guardian/dashboard.css') }),
|
||||
|
||||
// Filters
|
||||
|
||||
@ -27,6 +27,7 @@ return view.extend({
|
||||
var bannedClients = clients.filter(function(c) { return c.status === 'banned'; });
|
||||
|
||||
var view = E('div', { 'class': 'client-guardian-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('client-guardian/dashboard.css') }),
|
||||
|
||||
// Header
|
||||
|
||||
@ -16,6 +16,7 @@ return view.extend({
|
||||
var urlLists = data.url_lists || [];
|
||||
|
||||
return E('div', { 'class': 'client-guardian-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('client-guardian/dashboard.css') }),
|
||||
|
||||
E('div', { 'class': 'cg-header' }, [
|
||||
|
||||
@ -15,6 +15,7 @@ return view.extend({
|
||||
var self = this;
|
||||
|
||||
return E('div', { 'class': 'client-guardian-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('client-guardian/dashboard.css') }),
|
||||
|
||||
E('div', { 'class': 'cg-header' }, [
|
||||
|
||||
@ -169,7 +169,11 @@ return view.extend({
|
||||
]);
|
||||
|
||||
rendered.insertBefore(infoBox, rendered.firstChild);
|
||||
return rendered;
|
||||
|
||||
return E('div', {}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
rendered
|
||||
]);
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ return view.extend({
|
||||
var self = this;
|
||||
|
||||
return E('div', { 'class': 'client-guardian-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('client-guardian/dashboard.css') }),
|
||||
|
||||
E('div', { 'class': 'cg-header' }, [
|
||||
|
||||
@ -130,6 +130,7 @@ return view.extend({
|
||||
|
||||
if (this.filteredAlerts.length === 0) {
|
||||
return E('div', { 'class': 'cs-empty' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('div', { 'class': 'cs-empty-icon' }, this.searchQuery ? '🔍' : '📭'),
|
||||
E('p', {}, this.searchQuery ? 'No matching alerts found' : 'No alerts recorded')
|
||||
]);
|
||||
|
||||
@ -19,6 +19,7 @@ return view.extend({
|
||||
var status = data[1] || {};
|
||||
|
||||
var view = E('div', { 'class': 'cbi-map' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('CrowdSec Bouncers')),
|
||||
E('div', { 'class': 'cbi-map-descr' },
|
||||
_('Bouncers are components that enforce CrowdSec decisions by blocking malicious IPs at various points (firewall, web server, etc.).')),
|
||||
|
||||
@ -184,6 +184,7 @@ return view.extend({
|
||||
|
||||
if (this.filteredDecisions.length === 0) {
|
||||
return E('div', { 'class': 'cs-empty' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('div', { 'class': 'cs-empty-icon' }, this.searchQuery ? '🔍' : '✅'),
|
||||
E('p', {}, this.searchQuery ? 'No matching decisions found' : 'No active decisions')
|
||||
]);
|
||||
|
||||
@ -62,6 +62,7 @@ return view.extend({
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
return E('div', { 'class': 'cs-metric-item' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('span', { 'class': 'cs-metric-name' }, entry[0]),
|
||||
E('span', { 'class': 'cs-metric-value' }, String(value))
|
||||
]);
|
||||
|
||||
@ -116,6 +116,7 @@ return view.extend({
|
||||
|
||||
if (!Array.isArray(decisions) || decisions.length === 0) {
|
||||
return E('div', { 'class': 'cs-empty' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('div', { 'class': 'cs-empty-icon' }, '✅'),
|
||||
E('p', {}, 'No active decisions - All clear!')
|
||||
]);
|
||||
|
||||
@ -21,6 +21,7 @@ return view.extend({
|
||||
var collections = Array.isArray(data[3]) ? data[3] : [];
|
||||
|
||||
var view = E('div', { 'class': 'cbi-map' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('CrowdSec Settings')),
|
||||
E('div', { 'class': 'cbi-map-descr' },
|
||||
_('Configure and manage your CrowdSec installation, machines, and collections.')),
|
||||
|
||||
@ -55,6 +55,7 @@ return view.extend({
|
||||
renderLogsTable: function(logs) {
|
||||
if (!logs || logs.length === 0) {
|
||||
return E('div', { 'class': 'cbi-value' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('em', {}, _('No audit logs available.'))
|
||||
]);
|
||||
}
|
||||
|
||||
@ -82,6 +82,7 @@ return view.extend({
|
||||
renderCertificatesTable: function(certificates) {
|
||||
if (!certificates || certificates.length === 0) {
|
||||
return E('div', { 'class': 'cbi-value' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('em', {}, _('No certificates found.'))
|
||||
]);
|
||||
}
|
||||
|
||||
@ -50,6 +50,7 @@ return view.extend({
|
||||
renderDevices: function(devices) {
|
||||
if (!devices || devices.length === 0) {
|
||||
return E('div', { 'class': 'cbi-value' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('em', {}, _('No HSM devices detected. Connect a Nitrokey or YubiKey and click "Scan for Devices".'))
|
||||
]);
|
||||
}
|
||||
|
||||
@ -97,6 +97,7 @@ return view.extend({
|
||||
renderKeysTable: function(keys) {
|
||||
if (!keys || keys.length === 0) {
|
||||
return E('div', { 'class': 'cbi-value' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('em', {}, _('No keys found. Generate or import a key to get started.'))
|
||||
]);
|
||||
}
|
||||
|
||||
@ -140,6 +140,7 @@ return view.extend({
|
||||
hsmDevices.devices.map(function(device) {
|
||||
var typeIcon = device.type === 'nitrokey' ? '🔐' : '🔑';
|
||||
return E('div', { 'class': 'cbi-value' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('label', { 'class': 'cbi-value-title' }, typeIcon + ' ' + device.serial + ':'),
|
||||
E('div', { 'class': 'cbi-value-field' }, [
|
||||
E('span', {}, device.type.toUpperCase() + ' '),
|
||||
|
||||
@ -62,6 +62,7 @@ return view.extend({
|
||||
renderSecretsTable: function(secrets) {
|
||||
if (!secrets || secrets.length === 0) {
|
||||
return E('div', { 'class': 'cbi-value' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('em', {}, _('No secrets stored.'))
|
||||
]);
|
||||
}
|
||||
|
||||
@ -89,7 +89,12 @@ return view.extend({
|
||||
o.inputstyle = 'action';
|
||||
o.onclick = L.bind(this.handleRestoreBackup, this);
|
||||
|
||||
return m.render();
|
||||
return m.render().then(function(rendered) {
|
||||
return E('div', {}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
rendered
|
||||
]);
|
||||
});
|
||||
},
|
||||
|
||||
handleCreateBackup: function() {
|
||||
|
||||
@ -82,6 +82,7 @@ return view.extend({
|
||||
renderSshKeysTable: function(keys) {
|
||||
if (!keys || keys.length === 0) {
|
||||
return E('div', { 'class': 'cbi-value' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('em', {}, _('No SSH keys found. Generate a key to get started.'))
|
||||
]);
|
||||
}
|
||||
|
||||
@ -66,6 +66,11 @@ return L.view.extend({
|
||||
}
|
||||
};
|
||||
|
||||
return m.render();
|
||||
return m.render().then(function(rendered) {
|
||||
return E('div', {}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
rendered
|
||||
]);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -16,6 +16,7 @@ return L.view.extend({
|
||||
var clients = statsByClient.clients || {};
|
||||
|
||||
var v = E('div', { 'class': 'cbi-map' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('Clients Statistics')),
|
||||
E('div', { 'class': 'cbi-map-descr' }, _('Streaming activity per client'))
|
||||
]);
|
||||
|
||||
@ -20,6 +20,7 @@ return L.view.extend({
|
||||
var statsByService = data[2] || {};
|
||||
|
||||
var v = E('div', { 'class': 'cbi-map' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('Media Flow Dashboard')),
|
||||
E('div', { 'class': 'cbi-map-descr' }, _('Real-time detection and monitoring of streaming services'))
|
||||
]);
|
||||
|
||||
@ -77,6 +77,7 @@ return L.view.extend({
|
||||
}
|
||||
|
||||
return E('div', { 'class': 'cbi-section' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h3', {}, _('Recent Sessions')),
|
||||
table
|
||||
]);
|
||||
|
||||
@ -16,6 +16,7 @@ return L.view.extend({
|
||||
var services = statsByService.services || {};
|
||||
|
||||
var v = E('div', { 'class': 'cbi-map' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('Services Statistics')),
|
||||
E('div', { 'class': 'cbi-map-descr' }, _('Detailed statistics per streaming service'))
|
||||
]);
|
||||
|
||||
@ -24,6 +24,7 @@ return view.extend({
|
||||
});
|
||||
|
||||
var view = E('div', { 'class': 'netdata-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'nd-header' }, [
|
||||
E('div', { 'class': 'nd-logo' }, [
|
||||
|
||||
@ -18,6 +18,7 @@ return view.extend({
|
||||
var topProcs = procs.top || [];
|
||||
|
||||
var view = E('div', { 'class': 'netdata-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'nd-header' }, [
|
||||
E('div', { 'class': 'nd-logo' }, [
|
||||
|
||||
@ -37,6 +37,7 @@ return view.extend({
|
||||
var statusClass = api.getStatusClass(percent);
|
||||
|
||||
return E('div', { 'class': 'nd-gauge', 'style': 'width:' + size + 'px;height:' + size + 'px' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('svg', { 'class': 'nd-gauge-svg', 'width': size, 'height': size, 'viewBox': '0 0 ' + size + ' ' + size }, [
|
||||
E('circle', {
|
||||
'class': 'nd-gauge-bg',
|
||||
|
||||
@ -19,6 +19,7 @@ return view.extend({
|
||||
var system = data[2] || {};
|
||||
|
||||
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.')),
|
||||
|
||||
@ -31,6 +31,7 @@ return view.extend({
|
||||
var seconds = uptime % 60;
|
||||
|
||||
var view = E('div', { 'class': 'netdata-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'nd-header' }, [
|
||||
E('div', { 'class': 'nd-logo' }, [
|
||||
|
||||
@ -19,6 +19,7 @@ return view.extend({
|
||||
var totalFlows = apps.reduce(function(sum, a) { return sum + (a.flows || 0); }, 0);
|
||||
|
||||
var view = E('div', { 'class': 'netifyd-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'nf-header' }, [
|
||||
E('div', { 'class': 'nf-logo' }, [
|
||||
|
||||
@ -17,6 +17,7 @@ return view.extend({
|
||||
var devices = (data || {}).devices || [];
|
||||
|
||||
var view = E('div', { 'class': 'netifyd-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'nf-header' }, [
|
||||
E('div', { 'class': 'nf-logo' }, [
|
||||
|
||||
@ -17,6 +17,7 @@ return view.extend({
|
||||
var flows = (data || {}).flows || [];
|
||||
|
||||
var view = E('div', { 'class': 'netifyd-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'nf-header' }, [
|
||||
E('div', { 'class': 'nf-logo' }, [
|
||||
|
||||
@ -73,6 +73,7 @@ return view.extend({
|
||||
var maxAppBytes = topApps.length > 0 ? Math.max.apply(null, topApps.map(function(a) { return a.bytes; })) : 1;
|
||||
|
||||
var view = E('div', { 'class': 'netifyd-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'nf-header' }, [
|
||||
E('div', { 'class': 'nf-logo' }, [
|
||||
|
||||
@ -105,6 +105,7 @@ return view.extend({
|
||||
var lowCount = risks.filter(function(r) { return r.severity === 'low'; }).length;
|
||||
|
||||
var view = E('div', { 'class': 'netifyd-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'nf-header' }, [
|
||||
E('div', { 'class': 'nf-logo' }, [
|
||||
|
||||
@ -16,6 +16,7 @@ return view.extend({
|
||||
'class': 'netifyd-settings',
|
||||
'style': 'max-width: 1200px; margin: 0 auto;'
|
||||
}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'style': 'margin-bottom: 2em;' }, [
|
||||
E('h1', {
|
||||
|
||||
@ -65,6 +65,7 @@ return view.extend({
|
||||
var totalBytes = talkers.reduce(function(sum, t) { return sum + t.total_bytes; }, 0);
|
||||
|
||||
var view = E('div', { 'class': 'netifyd-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'nf-header' }, [
|
||||
E('div', { 'class': 'nf-logo' }, [
|
||||
|
||||
@ -21,6 +21,7 @@ return view.extend({
|
||||
'class': 'netifyd-wizard-container',
|
||||
'style': 'max-width: 900px; margin: 2em auto; padding: 2em;'
|
||||
}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'style': 'text-align: center; margin-bottom: 3em;' }, [
|
||||
E('div', {
|
||||
|
||||
@ -143,6 +143,7 @@ return view.extend({
|
||||
});
|
||||
|
||||
var container = E('div', { 'class': 'nm-container' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
helpers.createNavigationTabs('dmz'),
|
||||
hero,
|
||||
wanSection,
|
||||
|
||||
@ -14,6 +14,7 @@
|
||||
"ap_config",
|
||||
"relay_config",
|
||||
"router_config",
|
||||
"dmz_config",
|
||||
"travel_config",
|
||||
"doublenat_config",
|
||||
"multiwan_config",
|
||||
|
||||
@ -122,7 +122,11 @@ return view.extend({
|
||||
]);
|
||||
|
||||
rendered.insertBefore(helpBox, rendered.firstChild);
|
||||
return rendered;
|
||||
|
||||
return E('div', {}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
rendered
|
||||
]);
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
@ -25,6 +25,7 @@ return view.extend({
|
||||
var activeRules = rules.filter(function(r) { return r.enabled === '1'; });
|
||||
|
||||
var view = E('div', { 'class': 'traffic-shaper-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('Traffic Shaper Overview')),
|
||||
|
||||
// Status Cards
|
||||
|
||||
@ -14,6 +14,7 @@ return view.extend({
|
||||
var presets = data.presets || [];
|
||||
|
||||
var container = E('div', { 'class': 'traffic-shaper-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('Traffic Shaping Presets')),
|
||||
|
||||
E('div', { 'class': 'cbi-section' }, [
|
||||
|
||||
@ -158,7 +158,11 @@ return view.extend({
|
||||
]);
|
||||
|
||||
rendered.insertBefore(helpBox, rendered.firstChild);
|
||||
return rendered;
|
||||
|
||||
return E('div', {}, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
rendered
|
||||
]);
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
@ -18,6 +18,7 @@ return view.extend({
|
||||
var stats = data[1].stats || [];
|
||||
|
||||
var container = E('div', { 'class': 'traffic-shaper-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('Traffic Statistics')),
|
||||
|
||||
E('div', { 'class': 'ts-stats-container' }, [
|
||||
|
||||
@ -16,6 +16,7 @@ return view.extend({
|
||||
var interfaces = (data || {}).interfaces || [];
|
||||
|
||||
var view = E('div', { 'class': 'wireguard-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'wg-header' }, [
|
||||
E('div', { 'class': 'wg-logo' }, [
|
||||
|
||||
@ -21,6 +21,7 @@ return view.extend({
|
||||
var activePeers = peers.filter(function(p) { return p.status === 'active'; }).length;
|
||||
|
||||
var view = E('div', { 'class': 'wireguard-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'wg-header' }, [
|
||||
E('div', { 'class': 'wg-logo' }, [
|
||||
|
||||
@ -23,6 +23,7 @@ return view.extend({
|
||||
var activePeers = peers.filter(function(p) { return p.status === 'active'; }).length;
|
||||
|
||||
var view = E('div', { 'class': 'cbi-map' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('WireGuard Peers')),
|
||||
E('div', { 'class': 'cbi-map-descr' },
|
||||
_('Manage WireGuard VPN peers - add, configure, and monitor connected devices.')),
|
||||
|
||||
@ -59,6 +59,7 @@ return view.extend({
|
||||
var interfaces = (data || {}).interfaces || [];
|
||||
|
||||
var view = E('div', { 'class': 'wireguard-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'wg-header' }, [
|
||||
E('div', { 'class': 'wg-logo' }, [
|
||||
|
||||
@ -17,6 +17,7 @@ return view.extend({
|
||||
var interfaces = (data[1] || {}).interfaces || [];
|
||||
|
||||
var view = E('div', { 'class': 'cbi-map' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
E('h2', {}, _('WireGuard Settings')),
|
||||
E('div', { 'class': 'cbi-map-descr' },
|
||||
_('WireGuard VPN configuration and management information.')),
|
||||
|
||||
@ -21,6 +21,7 @@ return view.extend({
|
||||
var totalTraffic = totalRx + totalTx;
|
||||
|
||||
var view = E('div', { 'class': 'wireguard-dashboard' }, [
|
||||
E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox-theme/secubox-theme.css') }),
|
||||
// Header
|
||||
E('div', { 'class': 'wg-header' }, [
|
||||
E('div', { 'class': 'wg-logo' }, [
|
||||
|
||||
Loading…
Reference in New Issue
Block a user