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(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 ips = glass_config.ip_ranges_to_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);
|
||||
if (leases_per_minute <= glass_config.leases_per_minute_threshold && alert_status['leases_per_minute'] == 0) {
|
||||
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) {
|
||||
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));
|
||||
|
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 fs = require('fs');
|
||||
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 = "";
|
||||
|
||||
|
@ -5,7 +5,9 @@
|
||||
var express = require('express');
|
||||
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;
|
||||
|
||||
|
||||
|
@ -2,8 +2,9 @@ var express = require('express');
|
||||
var router = express.Router();
|
||||
var fs = require('fs');
|
||||
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;
|
||||
res.send(fs.readFileSync("./config_backups/" + request.snapshot, 'utf8'));
|
||||
});
|
||||
|
@ -2,8 +2,9 @@ var express = require('express');
|
||||
var router = express.Router();
|
||||
var fs = require('fs');
|
||||
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 = "";
|
||||
|
||||
|
@ -2,8 +2,9 @@ var express = require('express');
|
||||
var router = express.Router();
|
||||
var fs = require('fs');
|
||||
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 = "";
|
||||
|
||||
@ -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;
|
||||
|
||||
const execSync = require('child_process').execSync;
|
||||
|
@ -4,8 +4,9 @@
|
||||
|
||||
var express = require('express');
|
||||
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 json_file = require('jsonfile');
|
||||
var glass_config = json_file.readFileSync('config/glass_config.json');
|
||||
|
@ -6,8 +6,9 @@ var express = require('express');
|
||||
var router = express.Router();
|
||||
var fs = require('fs');
|
||||
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");
|
||||
|
||||
|
@ -6,8 +6,9 @@ var express = require('express');
|
||||
var router = express.Router();
|
||||
var fs = require('fs');
|
||||
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");
|
||||
|
||||
|
@ -4,8 +4,9 @@
|
||||
|
||||
var express = require('express');
|
||||
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 json_file = require('jsonfile');
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user