5 function progressbar(value
, max
, byte) {
6 var vn
= parseInt(value
) || 0,
7 mn
= parseInt(max
) || 100,
8 fv
= byte ? String
.format('%1024.2mB', value
) : value
,
9 fm
= byte ? String
.format('%1024.2mB', max
) : max
,
10 pc
= Math
.floor((100 / mn
) * vn
);
13 'class': 'cbi-progressbar',
14 'title': '%s / %s (%d%%)'.format(fv
, fm
, pc
)
15 }, E('div', { 'style': 'width:%.2f%%'.format(pc
) }));
18 function renderbox(ifc
, ipv6
) {
19 var dev
= ifc
.getL3Device(),
20 active
= (dev
&& ifc
.getProtocol() != 'none'),
21 addrs
= (ipv6
? ifc
.getIP6Addrs() : ifc
.getIPAddrs()) || [],
22 dnssrv
= (ipv6
? ifc
.getDNS6Addrs() : ifc
.getDNSAddrs()) || [],
23 expires
= (ipv6
? null : ifc
.getExpiry()),
24 uptime
= ifc
.getUptime();
26 return E('div', { class: 'ifacebox' }, [
27 E('div', { class: 'ifacebox-head center ' + (active
? 'active' : '') },
28 E('strong', ipv6
? _('IPv6 Upstream') : _('IPv4 Upstream'))),
29 E('div', { class: 'ifacebox-body left' }, [
30 L
.itemlist(E('span'), [
31 _('Protocol'), ifc
.getI18n() || E('em', _('Not connected')),
32 _('Prefix Delegated'), ipv6
? ifc
.getIP6Prefix() : null,
33 _('Address'), addrs
[0],
34 _('Address'), addrs
[1],
35 _('Address'), addrs
[2],
36 _('Address'), addrs
[3],
37 _('Address'), addrs
[4],
38 _('Address'), addrs
[5],
39 _('Address'), addrs
[6],
40 _('Address'), addrs
[7],
41 _('Address'), addrs
[8],
42 _('Address'), addrs
[9],
43 _('Gateway'), ipv6
? (ifc
.getGateway6Addr() || '::') : (ifc
.getGatewayAddr() || '0.0.0.0'),
44 _('DNS') + ' 1', dnssrv
[0],
45 _('DNS') + ' 2', dnssrv
[1],
46 _('DNS') + ' 3', dnssrv
[2],
47 _('DNS') + ' 4', dnssrv
[3],
48 _('DNS') + ' 5', dnssrv
[4],
49 _('Expires'), (expires
!= null && expires
> -1) ? '%t'.format(expires
) : null,
50 _('Connected'), (uptime
> 0) ? '%t'.format(uptime
) : null
52 E('div', {}, renderBadge(
53 L
.resource('icons/%s.png').format(dev
? dev
.getType() : 'ethernet_disabled'), null,
54 _('Device'), dev
? dev
.getI18n() : '-',
55 _('MAC-Address'), dev
.getMAC())
61 return L
.Class
.extend({
66 fs
.trimmed('/proc/sys/net/netfilter/nf_conntrack_count'),
67 fs
.trimmed('/proc/sys/net/netfilter/nf_conntrack_max'),
68 network
.getWANNetworks(),
69 network
.getWAN6Networks()
73 render: function(data
) {
74 var ct_count
= +data
[0],
80 _('Active Connections'), ct_max
? ct_count
: null
83 var ctstatus
= E('div', { 'class': 'table' });
85 for (var i
= 0; i
< fields
.length
; i
+= 2) {
86 ctstatus
.appendChild(E('div', { 'class': 'tr' }, [
87 E('div', { 'class': 'td left', 'width': '33%' }, [ fields
[i
] ]),
88 E('div', { 'class': 'td left' }, [
89 (fields
[i
+ 1] != null) ? progressbar(fields
[i
+ 1], ct_max
) : '?'
94 var netstatus
= E('div', { 'class': 'network-status-table' });
96 for (var i
= 0; i
< wan_nets
.length
; i
++)
97 netstatus
.appendChild(renderbox(wan_nets
[i
], false));
99 for (var i
= 0; i
< wan6_nets
.length
; i
++)
100 netstatus
.appendChild(renderbox(wan6_nets
[i
], true));