mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-05 18:44:03 +08:00
🌴 Sync 2026-03-05 23:51:42
This commit is contained in:
1 parent
97c049ed0a
commit
0acff03804
14253 files changed
+3893239
No files matched your search
@@ -0,0 +1,118 @@
|
||||
'use strict';
|
||||
'require view';
|
||||
'require uci';
|
||||
'require form';
|
||||
'require dom';
|
||||
|
||||
var CBIMacAddress = form.Value.extend({
|
||||
renderWidget: function(section_id, option_index, cfgvalue) {
|
||||
var node = this.super('renderWidget', [section_id, option_index, cfgvalue]);
|
||||
dom.append(node, [
|
||||
E('br'),
|
||||
E('span', { 'class': 'control-group' },
|
||||
E('button', {
|
||||
'class': 'btn cbi-button cbi-button-neutral',
|
||||
'click': this.clickFn.bind(this, section_id, node)
|
||||
}, this.btnTitle)
|
||||
)
|
||||
]);
|
||||
return node;
|
||||
}
|
||||
});
|
||||
|
||||
var genMAC = function(section_id, node) {
|
||||
var getOptVal = L.bind(function(opt, default_val) {
|
||||
default_val = default_val || null;
|
||||
return this.section.formvalue(section_id, opt) || default_val;
|
||||
}, this);
|
||||
|
||||
var prefix = getOptVal('prefix');
|
||||
if (prefix === null || prefix === "") {
|
||||
alert(_('Select or input Prefix first!'));
|
||||
return;
|
||||
}
|
||||
var macb = prefix.match(/[a-fA-F0-9]{2}/g).map(function(b){return parseInt(b,16);});
|
||||
if ((macb[0] & 1) === 1) {
|
||||
alert(_('Prefix is a Multicast address!'));
|
||||
return;
|
||||
}
|
||||
while (macb.length < 5) {
|
||||
macb.push(parseInt(Math.random()*255.9));
|
||||
}
|
||||
macb[5] = (parseInt(Math.random()*15.9) << 4) + parseInt(Math.random()*8);
|
||||
|
||||
var mac = "";
|
||||
for (var i=0; i<6; ++i) {
|
||||
var b = macb[i].toString(16).toUpperCase();
|
||||
if (b.length === 1) {
|
||||
b = '0' + b;
|
||||
}
|
||||
mac = mac + ':' + b;
|
||||
}
|
||||
mac = mac.substring(1);
|
||||
/*
|
||||
var inputEl = node.querySelector('input[type="text"]');
|
||||
inputEl.value = mac;
|
||||
// this.triggerValidation(section_id);
|
||||
inputEl.dispatchEvent(new Event('input'));
|
||||
inputEl.dispatchEvent(new Event('blur'));
|
||||
*/
|
||||
dom.callClassMethod(node, "setValue", mac);
|
||||
dom.callClassMethod(node, "triggerValidation");
|
||||
};
|
||||
|
||||
return view.extend({
|
||||
load: function() {
|
||||
return Promise.all([
|
||||
uci.load('wan_mac')
|
||||
]);
|
||||
},
|
||||
|
||||
render: function() {
|
||||
|
||||
var m, s, o;
|
||||
|
||||
m = new form.Map('wan_mac', _('WAN MAC address'),
|
||||
_('Change the MAC address of WAN port. <br>Note that modifying the MAC address may cause the IP address to change.'));
|
||||
|
||||
s = m.section(form.NamedSection, 'config', 'wan_mac', _('Global Settings'));
|
||||
s.anonymous = true;
|
||||
s.addremove = false;
|
||||
|
||||
o = s.option(form.Flag, 'enabled', _('Enable'));
|
||||
o.rmempty = false;
|
||||
|
||||
s = m.section(form.NamedSection, 'config', 'wan_mac', _('MAC Address Settings'),
|
||||
_('Select a prefix and click the "Randomly Generate Using Prefix" button to generate a MAC address'));
|
||||
s.anonymous = true;
|
||||
s.addremove = false;
|
||||
|
||||
o = s.option(form.Value, 'prefix', _('MAC address prefix'), _('Supports "000000" format'))
|
||||
o.datatype = 'and(hexstring,rangelength(2,8))';
|
||||
[
|
||||
["044A6C", "Huawei"],
|
||||
["3CCD57", "Xiaomi"],
|
||||
["603A7C", "TP-LINK"],
|
||||
["00E04C", "Realtek"],
|
||||
["68ECC5", "Intel"],
|
||||
["8086F2", "Intel"],
|
||||
["3C3786", "NETGEAR"],
|
||||
["7C10C9", "ASUS"],
|
||||
["68DB54", "Phicomm"],
|
||||
["020000", "Private"],
|
||||
["021234", "Private"],
|
||||
["02AABB", "Private"],
|
||||
].forEach(function(oui){
|
||||
o.value(oui[0], oui[0] + ' (' + oui[1] + ')');
|
||||
});
|
||||
|
||||
o = s.option(CBIMacAddress, 'macaddr', _('MAC address'), _('Supports "00:00:00:00:00:00" format'))
|
||||
o.datatype = 'macaddr';
|
||||
o.rmempty = false;
|
||||
o.placeholder = '02:00:00:00:00:00';
|
||||
o.btnTitle = _('Randomly Generate Using Prefix');
|
||||
o.clickFn = genMAC;
|
||||
|
||||
return m.render();
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user