mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-07-28 03:01:54 +08:00
67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
'use strict';
|
|
'require view';
|
|
'require fs';
|
|
'require form';
|
|
'require uci';
|
|
'require dom';
|
|
|
|
return view.extend({
|
|
render: function () {
|
|
var m, s, o;
|
|
m = new form.Map('domain-proxy', _('Domain Proxy'));
|
|
|
|
s = m.section(form.TypedSection, 'proxy', _('Proxy config'));
|
|
s.anonymous = true;
|
|
o = s.option(form.Value, 'dns', _('Dns Server'));
|
|
o.datatype = 'ipaddrport';
|
|
o.placeholder = '127.0.0.1:5353';
|
|
|
|
o = s.option(
|
|
form.DynamicList,
|
|
'domain',
|
|
_('Domain'),
|
|
_('List of domains to proxy')
|
|
);
|
|
o.optional = true;
|
|
o.datatype = 'host';
|
|
o.placeholder = 'www.google.com';
|
|
|
|
return m.render();
|
|
},
|
|
handleSaveApply: null,
|
|
handleReset: null,
|
|
handleSave: function (ev) {
|
|
var tasks = [];
|
|
|
|
document
|
|
.getElementById('maincontent')
|
|
.querySelectorAll('.cbi-map')
|
|
.forEach(function (map) {
|
|
tasks.push(DOM.callClassMethod(map, 'save'));
|
|
});
|
|
|
|
return Promise.all(tasks)
|
|
.then(function () {
|
|
var proxy = uci.get_first('domain-proxy', 'proxy');
|
|
var dns = proxy.dns.replace(':', '#');
|
|
var ssfw = [];
|
|
proxy.domain.forEach(function (d) {
|
|
var dt = d.trim();
|
|
if (dt) {
|
|
ssfw.push(`server=/${dt}/${dns}`);
|
|
ssfw.push(`ipset=/${dt}/ssfw,ssfw6`);
|
|
}
|
|
});
|
|
|
|
return fs
|
|
.write('/etc/dnsmasq.d/ssfw.conf', ssfw.join('\n'))
|
|
.then(function () {
|
|
return fs.exec('/etc/init.d/dns-proxy', ['restart']);
|
|
});
|
|
})
|
|
.then(function () {
|
|
classes.ui.changes.apply(true);
|
|
});
|
|
},
|
|
});
|