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": {
|
"admin/services/snmpd": {
|
||||||
"title": "SNMPD",
|
"title": "SNMPD",
|
||||||
|
"order": 5,
|
||||||
"action": {
|
"action": {
|
||||||
"type": "view",
|
"type": "alias",
|
||||||
"path": "snmpd/snmpd"
|
"path": "admin/services/snmpd/snmpd"
|
||||||
},
|
},
|
||||||
"depends": {
|
"depends": {
|
||||||
"acl": [ "luci-app-snmpd" ],
|
"acl": [ "luci-app-snmpd" ],
|
||||||
"uci": { "snmpd": true }
|
"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": {
|
"luci-app-snmpd": {
|
||||||
"description": "Grant UCI access for luci-app-snmpd",
|
"description": "Grant UCI access for luci-app-snmpd",
|
||||||
"read": {
|
"read": {
|
||||||
"uci": [ "snmpd" ]
|
"uci": [ "snmpd" ],
|
||||||
|
"file": {
|
||||||
|
"/usr/share/snmp/mibs/*": [ "read", "stat" ],
|
||||||
|
"/usr/bin/ldd /usr/lib/libnetsnmp.so.40": [ "exec" ]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"write": {
|
"write": {
|
||||||
"uci": [ "snmpd" ]
|
"uci": [ "snmpd" ]
|
||||||
|
|||||||
Reference in New Issue
Block a user