mirror of
https://github.com/openwrt/luci.git
synced 2025-12-21 19:14:34 +04:00
luci-app-snmpd: add MIB download area
This commit adds a new tab to download all mib files that are stored in /usr/share/snmp/mibs folder. Signed-off-by: Christian Korber <ckorber@tdt.de>
This commit is contained in:
committed by
Paul Donald
parent
355473297d
commit
3fc405003d
@@ -0,0 +1,83 @@
|
||||
'use strict';
|
||||
'require form';
|
||||
'require fs';
|
||||
'require rpc';
|
||||
'require ui';
|
||||
'require view';
|
||||
|
||||
var mapdata = { actions: {} };
|
||||
|
||||
var mibDownload = rpc.declare({
|
||||
object: 'file',
|
||||
method: 'read',
|
||||
params: [ 'path' ],
|
||||
expect: { data : '' },
|
||||
});
|
||||
|
||||
return L.view.extend({
|
||||
handleMIB: function(name) {
|
||||
const base = '/usr/share/snmp/mibs/';
|
||||
const fileName = name;
|
||||
const a = document.createElement('a');
|
||||
|
||||
document.body.appendChild(a);
|
||||
a.display = 'none';
|
||||
|
||||
return mibDownload(base + fileName, false).then(function(res) {
|
||||
const data = res;
|
||||
const file = new Blob( [data] , { type: 'text/plain'});
|
||||
const fileUrl = window.URL.createObjectURL(file);
|
||||
|
||||
a.href = fileUrl;
|
||||
a.download = fileName;
|
||||
a.click();
|
||||
document.body.removeChild(a);
|
||||
});
|
||||
},
|
||||
|
||||
load: function() {
|
||||
return Promise.all([
|
||||
L.resolveDefault(fs.list('/usr/share/snmp/mibs/'), [])
|
||||
.then(function(entries) {
|
||||
const files = [];
|
||||
entries.forEach((elem) => {
|
||||
if (elem.type == 'file' &&
|
||||
elem.name.match(/MIB\.(mib|my|txt)$/i)) {
|
||||
files.push(elem.name);
|
||||
}
|
||||
});
|
||||
return files;
|
||||
})
|
||||
]);
|
||||
},
|
||||
|
||||
render: function(data) {
|
||||
let m, s, o, ss;
|
||||
const files = data[0];
|
||||
|
||||
m = new form.JSONMap(mapdata, _('SNMP - MIB Download'),
|
||||
'Here you can download SNMP-MIB files');
|
||||
|
||||
s = m.section(form.NamedSection, 'actions', _('Actions'));
|
||||
|
||||
o = s.option(form.SectionValue, 'actions',
|
||||
form.NamedSection, 'actions', 'actions',
|
||||
_('Download Area'));
|
||||
|
||||
ss = o.subsection;
|
||||
|
||||
files.forEach((elem) => {
|
||||
o = ss.option(form.Button, 'dl_mib', _(elem),
|
||||
_(''));
|
||||
o.inputstyle = 'action important';
|
||||
o.inputtitle = _('Download');
|
||||
o.onclick = ui.createHandlerFn(this, this.handleMIB, elem);
|
||||
});
|
||||
|
||||
return m.render();
|
||||
},
|
||||
|
||||
handleSaveApply: null,
|
||||
handleSave: null,
|
||||
handleReset: null
|
||||
});
|
||||
@@ -1,13 +1,39 @@
|
||||
{
|
||||
"admin/services/snmpd": {
|
||||
"title": "SNMPD",
|
||||
"order": 5,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "snmpd/snmpd"
|
||||
"type": "alias",
|
||||
"path": "admin/services/snmpd/snmpd"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-app-snmpd" ],
|
||||
"uci": { "snmpd": true }
|
||||
}
|
||||
},
|
||||
|
||||
"admin/services/snmpd/snmpd": {
|
||||
"title": "SNMP",
|
||||
"order": 10,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "snmpd/snmpd"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-app-snmpd" ]
|
||||
}
|
||||
},
|
||||
|
||||
"admin/services/snmpd/download": {
|
||||
"title": "Download",
|
||||
"order": 20,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "snmpd/download"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-app-snmpd" ],
|
||||
"fs": [ { "/usr/share/snmp/mibs/": "directory" } ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
"luci-app-snmpd": {
|
||||
"description": "Grant UCI access for luci-app-snmpd",
|
||||
"read": {
|
||||
"uci": [ "snmpd" ]
|
||||
"uci": [ "snmpd" ],
|
||||
"file": {
|
||||
"/usr/share/snmp/mibs/*": [ "read", "stat" ],
|
||||
"/usr/bin/ldd /usr/lib/libnetsnmp.so.40": [ "exec" ]
|
||||
}
|
||||
},
|
||||
"write": {
|
||||
"uci": [ "snmpd" ]
|
||||
|
||||
Reference in New Issue
Block a user