mirror of
https://github.com/Akkadius/glass-isc-dhcp.git
synced 2025-07-28 16:14:41 +02:00
Implement admin level authentication
This commit is contained in:
parent
ed83e014cd
commit
d80c26bcd6
6
app.js
6
app.js
@ -21,7 +21,7 @@ app.use(bodyParser.urlencoded({ extended: false }));
|
|||||||
app.use(cookieParser());
|
app.use(cookieParser());
|
||||||
app.use(express.static(path.join(__dirname, 'public')));
|
app.use(express.static(path.join(__dirname, 'public')));
|
||||||
|
|
||||||
if(glass_config.ip_ranges_to_allow) {
|
if(glass_config.ip_ranges_to_allow != "") {
|
||||||
var ip_filter = require('express-ipfilter').IpFilter;
|
var ip_filter = require('express-ipfilter').IpFilter;
|
||||||
var ips = glass_config.ip_ranges_to_allow;
|
var ips = glass_config.ip_ranges_to_allow;
|
||||||
app.use(ip_filter(ips, {mode: 'allow'}));
|
app.use(ip_filter(ips, {mode: 'allow'}));
|
||||||
@ -377,11 +377,11 @@ alert_check_timer = setInterval(function(){
|
|||||||
console.log("[Timer] lpm: %s lpm_th: %s", leases_per_minute, glass_config.leases_per_minute_threshold);
|
console.log("[Timer] lpm: %s lpm_th: %s", leases_per_minute, glass_config.leases_per_minute_threshold);
|
||||||
if (leases_per_minute <= glass_config.leases_per_minute_threshold && alert_status['leases_per_minute'] == 0) {
|
if (leases_per_minute <= glass_config.leases_per_minute_threshold && alert_status['leases_per_minute'] == 0) {
|
||||||
alert_status['leases_per_minute'] = 1;
|
alert_status['leases_per_minute'] = 1;
|
||||||
slack_message(":warning: WARNING: DHCP leases per minute have dropped below critical threshold (" + parseInt(glass_config.leases_per_minute_threshold).toLocaleString('en') + ") Current (" + parseInt(leases_per_minute).toLocaleString('en') + ")");
|
slack_message(":warning: WARNING: DHCP leases per minute have dropped below threshold (" + parseInt(glass_config.leases_per_minute_threshold).toLocaleString('en') + ") Current (" + parseInt(leases_per_minute).toLocaleString('en') + ")");
|
||||||
}
|
}
|
||||||
else if (leases_per_minute >= glass_config.leases_per_minute_threshold && alert_status['leases_per_minute'] == 1) {
|
else if (leases_per_minute >= glass_config.leases_per_minute_threshold && alert_status['leases_per_minute'] == 1) {
|
||||||
alert_status['leases_per_minute'] = 0;
|
alert_status['leases_per_minute'] = 0;
|
||||||
slack_message(":white_check_mark: CLEAR: DHCP leases per minute have returned to above the critical threshold (" + parseInt(glass_config.leases_per_minute_threshold).toLocaleString('en') + ") Current (" + parseInt(leases_per_minute).toLocaleString('en') + ")");
|
slack_message(":white_check_mark: CLEAR: DHCP leases per minute have returned to above threshold (" + parseInt(glass_config.leases_per_minute_threshold).toLocaleString('en') + ") Current (" + parseInt(leases_per_minute).toLocaleString('en') + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, (60 * 1000));
|
}, (60 * 1000));
|
||||||
|
32
lib/authorize.js
Normal file
32
lib/authorize.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
var basic_auth = require('basic-auth');
|
||||||
|
|
||||||
|
/* Read Config */
|
||||||
|
var json_file = require('jsonfile');
|
||||||
|
var glass_config = json_file.readFileSync('config/glass_config.json');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
auth: function (req, res, next) {
|
||||||
|
var user = basic_auth(req);
|
||||||
|
|
||||||
|
function unauthorized(res) {
|
||||||
|
res.set('WWW-Authenticate', 'Basic realm=Authorization Required');
|
||||||
|
return res.sendStatus(401);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
if(glass_config.admin_user == ""){
|
||||||
|
next();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!user || !user.name || !user.pass) {
|
||||||
|
return unauthorized(res);
|
||||||
|
}
|
||||||
|
if (user.name === glass_config.admin_user && user.pass === glass_config.admin_password) {
|
||||||
|
next();
|
||||||
|
} else {
|
||||||
|
return unauthorized(res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -2,8 +2,9 @@ var express = require('express');
|
|||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var template_render = require('../lib/render_template.js');
|
var template_render = require('../lib/render_template.js');
|
||||||
|
var authorize = require('../lib/authorize.js');
|
||||||
|
|
||||||
router.get('/', function(req, res, next) {
|
router.get('/', authorize.auth, function(req, res, next) {
|
||||||
|
|
||||||
var content = "";
|
var content = "";
|
||||||
|
|
||||||
|
@ -5,7 +5,9 @@
|
|||||||
var express = require('express');
|
var express = require('express');
|
||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
|
|
||||||
router.post('/', function(req, res, next) {
|
var authorize = require('../lib/authorize.js');
|
||||||
|
|
||||||
|
router.post('/', authorize.auth, function(req, res, next) {
|
||||||
var request = req.body;
|
var request = req.body;
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,8 +2,9 @@ var express = require('express');
|
|||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var template_render = require('../lib/render_template.js');
|
var template_render = require('../lib/render_template.js');
|
||||||
|
var authorize = require('../lib/authorize.js');
|
||||||
|
|
||||||
router.post('/', function(req, res, next) {
|
router.post('/', authorize.auth, function(req, res, next) {
|
||||||
var request = req.body;
|
var request = req.body;
|
||||||
res.send(fs.readFileSync("./config_backups/" + request.snapshot, 'utf8'));
|
res.send(fs.readFileSync("./config_backups/" + request.snapshot, 'utf8'));
|
||||||
});
|
});
|
||||||
|
@ -2,8 +2,9 @@ var express = require('express');
|
|||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var template_render = require('../lib/render_template.js');
|
var template_render = require('../lib/render_template.js');
|
||||||
|
var authorize = require('../lib/authorize.js');
|
||||||
|
|
||||||
router.get('/', function(req, res, next) {
|
router.get('/', authorize.auth, function(req, res, next) {
|
||||||
|
|
||||||
var content = "";
|
var content = "";
|
||||||
|
|
||||||
|
@ -2,8 +2,9 @@ var express = require('express');
|
|||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var template_render = require('../lib/render_template.js');
|
var template_render = require('../lib/render_template.js');
|
||||||
|
var authorize = require('../lib/authorize.js');
|
||||||
|
|
||||||
router.get('/', function(req, res, next) {
|
router.get('/', authorize.auth, function(req, res, next) {
|
||||||
|
|
||||||
var content = "";
|
var content = "";
|
||||||
|
|
||||||
@ -41,7 +42,7 @@ router.get('/', function(req, res, next) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
router.post('/', function(req, res, next) {
|
router.post('/', authorize.auth, function(req, res, next) {
|
||||||
var request = req.body;
|
var request = req.body;
|
||||||
|
|
||||||
const execSync = require('child_process').execSync;
|
const execSync = require('child_process').execSync;
|
||||||
|
@ -4,8 +4,9 @@
|
|||||||
|
|
||||||
var express = require('express');
|
var express = require('express');
|
||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
|
var authorize = require('../lib/authorize.js');
|
||||||
|
|
||||||
router.post('/', function(req, res, next) {
|
router.post('/', authorize.auth, function(req, res, next) {
|
||||||
var request = req.body;
|
var request = req.body;
|
||||||
var json_file = require('jsonfile');
|
var json_file = require('jsonfile');
|
||||||
var glass_config = json_file.readFileSync('config/glass_config.json');
|
var glass_config = json_file.readFileSync('config/glass_config.json');
|
||||||
|
@ -6,8 +6,9 @@ var express = require('express');
|
|||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var template_render = require('../lib/render_template.js');
|
var template_render = require('../lib/render_template.js');
|
||||||
|
var authorize = require('../lib/authorize.js');
|
||||||
|
|
||||||
router.get('/', function(req, res, next) {
|
router.get('/', authorize.auth, function(req, res, next) {
|
||||||
|
|
||||||
glass_settings_template = template_render.get_template("glass_alerts");
|
glass_settings_template = template_render.get_template("glass_alerts");
|
||||||
|
|
||||||
|
@ -6,8 +6,9 @@ var express = require('express');
|
|||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var template_render = require('../lib/render_template.js');
|
var template_render = require('../lib/render_template.js');
|
||||||
|
var authorize = require('../lib/authorize.js');
|
||||||
|
|
||||||
router.get('/', function(req, res, next) {
|
router.get('/', authorize.auth, function(req, res, next) {
|
||||||
|
|
||||||
glass_settings_template = template_render.get_template("glass_settings");
|
glass_settings_template = template_render.get_template("glass_settings");
|
||||||
|
|
||||||
|
@ -4,8 +4,9 @@
|
|||||||
|
|
||||||
var express = require('express');
|
var express = require('express');
|
||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
|
var authorize = require('../lib/authorize.js');
|
||||||
|
|
||||||
router.post('/', function(req, res, next) {
|
router.post('/', authorize.auth, function(req, res, next) {
|
||||||
var request = req.body;
|
var request = req.body;
|
||||||
var json_file = require('jsonfile');
|
var json_file = require('jsonfile');
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user