Merge pull request #2643 from kuoruan/aria2
[project/luci.git] / modules / luci-mod-network / htdocs / luci-static / resources / view / network / routes.js
1 'use strict';
2 'require form';
3 'require network';
4 'require tools.widgets as widgets';
5
6 return L.view.extend({
7 load: function() {
8 return network.getDevices();
9 },
10
11 render: function(netdevs) {
12 var m, s, o;
13
14 m = new form.Map('network', _('Routes'), _('Routes specify over which interface and gateway a certain host or network can be reached.'));
15 m.tabbed = true;
16
17 for (var i = 4; i <= 6; i += 2) {
18 s = m.section(form.GridSection, (i == 4) ? 'route' : 'route6', (i == 4) ? _('Static IPv4 Routes') : _('Static IPv6 Routes'));
19 s.anonymous = true;
20 s.addremove = true;
21 s.sortable = true;
22
23 s.tab('general', _('General Settings'));
24 s.tab('advanced', _('Advanced Settings'));
25
26 o = s.taboption('general', widgets.NetworkSelect, 'interface', _('Interface'));
27 o.rmempty = false;
28 o.nocreate = true;
29
30 o = s.taboption('general', form.Value, 'target', _('Target'), (i == 4) ? _('Host-<abbr title="Internet Protocol Address">IP</abbr> or Network') : _('<abbr title="Internet Protocol Version 6">IPv6</abbr>-Address or Network (CIDR)'));
31 o.datatype = (i == 4) ? 'ip4addr' : 'ip6addr';
32 o.rmempty = false;
33
34 if (i == 4) {
35 o = s.taboption('general', form.Value, 'netmask', _('<abbr title="Internet Protocol Version 4">IPv4</abbr>-Netmask'), _('if target is a network'));
36 o.placeholder = '255.255.255.255';
37 o.datatype = 'ip4addr';
38 o.rmempty = true;
39 }
40
41 o = s.taboption('general', form.Value, 'gateway', (i == 4) ? _('<abbr title="Internet Protocol Version 4">IPv4</abbr>-Gateway') : _('<abbr title="Internet Protocol Version 6">IPv6</abbr>-Gateway'));
42 o.datatype = (i == 4) ? 'ip4addr' : 'ip6addr';
43 o.rmempty = true;
44
45 o = s.taboption('advanced', form.Value, 'metric', _('Metric'));
46 o.placeholder = 0;
47 o.datatype = (i == 4) ? 'range(0,255)' : 'range(0,65535)';
48 o.rmempty = true;
49 o.textvalue = function(section_id) {
50 return this.cfgvalue(section_id) || 0;
51 };
52
53 o = s.taboption('advanced', form.Value, 'mtu', _('MTU'));
54 o.placeholder = 1500;
55 o.datatype = 'range(64,9000)';
56 o.rmempty = true;
57 o.modalonly = true;
58
59 o = s.taboption('advanced', form.ListValue, 'type', _('Route type'));
60 o.value('', 'unicast');
61 o.value('local');
62 o.value('broadcast');
63 o.value('multicast');
64 o.value('unreachable');
65 o.value('prohibit');
66 o.value('blackhole');
67 o.value('anycast');
68 o.default = '';
69 o.rmempty = true;
70 o.modalonly = true;
71
72 o = s.taboption('advanced', form.Value, 'table', _('Route table'));
73 o.value('local', 'local (255)');
74 o.value('main', 'main (254)');
75 o.value('default', 'default (253)');
76 o.rmempty = true;
77 o.modalonly = true;
78 o.cfgvalue = function(section_id) {
79 var cfgvalue = this.super('cfgvalue', [section_id]);
80 return cfgvalue || 'main';
81 };
82
83 o = s.taboption('advanced', form.Value, 'source', _('Source Address'));
84 o.placeholder = E('em', _('automatic'));
85 for (var j = 0; j < netdevs.length; j++) {
86 var addrs = netdevs[j].getIPAddrs();
87 for (var k = 0; k < addrs.length; k++)
88 o.value(addrs[k].split('/')[0]);
89 }
90 o.datatype = (i == 4) ? 'ip4addr' : 'ip6addr';
91 o.default = '';
92 o.rmempty = true;
93 o.modalonly = true;
94
95 o = s.taboption('advanced', form.Flag, 'onlink', _('On-Link route'));
96 o.default = o.disabled;
97 o.rmempty = true;
98 }
99
100 return m.render();
101 }
102 });