zoneadmin/routes/index.js
Matjaz Mesnjak c204ec0b6b Initial commit.
2017-09-20 23:16:30 +02:00

219 lines
6.7 KiB
JavaScript

var express = require('express');
var router = express.Router();
var exec = require('child_process').execFile;
var os = require('os');
/* GET home page. */
router.get('/', function(req, res, next) {
exec('dladm', ['show-phys'], function(err, data) {
console.log(err);
console.log(data);
data = data.split(os.EOL);
//data = data[0].split(' ');
link = [];
media = [];
state = [];
speed = [];
duplex = [];
device = [];
for(var i = 0; i < data.length; i++) {
if(data[i]) {
link.push(data[i].substring(0, data[0].indexOf('MEDIA')).trim());
media.push(data[i].substring(data[0].indexOf('MEDIA'), data[0].indexOf('STATE')).trim());
state.push(data[i].substring(data[0].indexOf('STATE'), data[0].indexOf('SPEED')).trim());
speed.push(data[i].substring(data[0].indexOf('SPEED'), data[0].indexOf('DUPLEX')).trim());
duplex.push(data[i].substring(data[0].indexOf('DUPLEX'), data[0].indexOf('DEVICE')).trim());
device.push(data[i].substring(data[0].indexOf('DEVICE'), data[i].length).trim());
}
}
res.render('show-phys', { title: 'Show-phys', link: link, media: media });
})
});
router.get('/show-vnic', function(req, res, next) {
exec('dladm', ['show-vnic'], function(err, data) {
console.log(err);
console.log(data);
data = data.split(os.EOL);
link = [];
over = [];
speed = [];
macaddress = [];
macaddrtype = [];
vid = [];
for(var i = 0; i < data.length; i++) {
if(data[i]) {
link.push(data[i].substring(0, data[0].indexOf('OVER')).trim());
over.push(data[i].substring(data[0].indexOf('OVER'), data[0].indexOf('SPEED')).trim());
speed.push(data[i].substring(data[0].indexOf('SPEED'), data[0].indexOf('MACADDRESS')).trim());
macaddress.push(data[i].substring(data[0].indexOf('MACADDRESS'), data[0].indexOf('MACADDRTYPE')).trim());
macaddrtype.push(data[i].substring(data[0].indexOf('MACADDRTYPE'), data[0].indexOf('VID')).trim());
vid.push(data[i].substring(data[0].indexOf('VID'), data[i].length).trim());
}
}
res.render('show-vnic', { title: 'Show-vnic', link:link, over:over, speed:speed, macaddress:macaddress, macaddrtype:macaddrtype, vid:vid });
});
});
router.get('/list-zones', function(req, res, next) {
exec('zoneadm', ['list', '-cv'], function(err, data) {
console.log(err);
console.log(data);
data = data.split(os.EOL);
zone = [];
id = [];
name = [];
status = [];
zone_path = [];
brand = [];
ip = [];
for(var i = 0; i < data.length; i++) {
if(data[i]) {
data_w = data[i].trim().split(/[ ]+/);
console.log(data_w);
if(data_w.length == 6) {
id.push(data_w[0].trim());
name.push(data_w[1].trim());
status.push(data_w[2].trim());
zone_path.push(data_w[3].trim());
brand.push(data_w[4].trim());
ip.push(data_w[5].trim());
}
}
}
res.render('list-zones', { title: 'List zones', id:id, name:name, status:status, zone_path:zone_path,
brand:brand, ip:ip });
});
});
router.get('/list-zfs', function(req, res, next) {
exec('zfs', ['list'], function(err, data) {
console.log(err);
console.log(data);
data = data.split(os.EOL);
data_w = data[0].split(/[ ]+/);
console.log(data_w);
name = [];
used = [];
avail = [];
refer = [];
mountpoint = [];
for(var i = 0; i < data.length; i++) {
if(data[i]) {
data_w = data[i].split(/[ ]+/);
if(data_w.length == 5) {
name.push(data_w[0].trim());
used.push(data_w[1].trim());
avail.push(data_w[2].trim());
refer.push(data_w[3].trim());
mountpoint.push(data_w[4].trim());
}
}
}
res.render('list-zfs', { title: 'List ZFS', name: name, used: used, avail:avail, refer:refer, mountpoint:mountpoint });
});
});
router.get('/list-svc', function(req, res, next) {
exec('svcs', ['-a'], function(err, data) {
console.log(err);
console.log(data);
data = data.split(os.EOL);
data_w = data[0].split(/[ ]+/);
console.log(data_w);
state = [];
stime = [];
fmri = [];
for(var i = 0; i < data.length; i++) {
if(data[i]) {
data_w = data[i].split(/[ ]+/);
if(data_w.length == 3) {
state.push(data_w[0].trim());
stime.push(data_w[1].trim());
fmri.push(data_w[2].trim());
}
}
}
res.render('list-svc', { title: 'List SVC', state:state, stime:stime, fmri:fmri });
});
});
router.get('/list-zpool', function(req, res, next) {
exec('zpool', ['list'], function(err, data) {
console.log(err);
console.log(data);
data = data.split(os.EOL);
data_w = data[0].split(/[ ]+/);
console.log(data_w);
name = [];
size = [];
alloc = [];
free = [];
expandsz = [];
frag = [];
cap = [];
dedup = [];
health = [];
altroot = [];
for(var i = 0; i < data.length; i++) {
if(data[i]) {
data_w = data[i].split(/[ ]+/);
if(data_w.length == 10) {
name.push(data_w[0].trim());
size.push(data_w[1].trim());
alloc.push(data_w[2].trim());
free.push(data_w[3].trim());
expandsz.push(data_w[4].trim());
frag.push(data_w[5].trim());
cap.push(data_w[6].trim());
dedup.push(data_w[7].trim());
health.push(data_w[8].trim());
altroot.push(data_w[9].trim());
}
}
}
res.render('list-zpool', { title: 'List Zpool', name:name, size:size, alloc:alloc,
free:free, expandsz:expandsz, frag:frag, cap:cap, dedup:dedup, health:health, altroot:altroot });
});
});
router.get('/prstat', function(req, res, next) {
exec('prstat', ['-Z', '0', '1'], function(err, data) {
console.log(err);
console.log(data);
data = data.substring(data.indexOf('ZONEID'), data.indexOf('Total'));
data = data.split(os.EOL);
data_w = data[0].trim().split(/[ ]+/);
console.log(data_w);
zoneid = [];
nproc = [];
swap = [];
rss = [];
memory = [];
time = [];
cpu = [];
zone = [];
for(var i = 0; i < data.length; i++) {
if(data[i]) {
data_w = data[i].trim().split(/[ ]+/);
if(data_w.length == 8) {
zoneid.push(data_w[0].trim());
nproc.push(data_w[1].trim());
swap.push(data_w[2].trim());
rss.push(data_w[3].trim());
memory.push(data_w[4].trim());
time.push(data_w[5].trim());
cpu.push(data_w[6].trim());
zone.push(data_w[7].trim());
}
}
}
res.render('prstat', { title: 'Prstat', zoneid:zoneid, nproc:nproc, swap:swap, rss:rss, memory:memory,
time:time, cpu:cpu, zone:zone });
});
});
module.exports = router;