78 lines
2.9 KiB
JavaScript
78 lines
2.9 KiB
JavaScript
/*Canopy - The next generation of stoner streaming software
|
|
Copyright (C) 2024-2025 Rainbownapkin and the TTN Community
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as
|
|
published by the Free Software Foundation, either version 3 of the
|
|
License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
|
|
|
|
//Config
|
|
const config = require('../../config.json');
|
|
|
|
//At some point this will be a bit more advanced, right now it's just a placeholder :P
|
|
module.exports.errorHandler = function(res, msg, type = "Generic", status = 400){
|
|
//Some controllers do things after sending headers, for those, we should remain silent
|
|
if(!res.headersSent){
|
|
res.status(status);
|
|
return res.send({errors: [{type, msg, date: new Date()}]});
|
|
}
|
|
}
|
|
|
|
module.exports.localExceptionHandler = function(err){
|
|
//If we're being verbose
|
|
if(config.verbose){
|
|
//Log the error
|
|
console.log(err)
|
|
}
|
|
}
|
|
|
|
module.exports.exceptionHandler = function(res, err){
|
|
//Locally handle the exception
|
|
module.exports.localExceptionHandler(err);
|
|
|
|
//if not yell at the browser for fucking up, and tell it what it did wrong.
|
|
module.exports.errorHandler(res, err.message, "Caught Exception");
|
|
}
|
|
|
|
module.exports.socketErrorHandler = function(socket, msg, type = "Generic"){
|
|
return socket.emit("error", {errors: [{type, msg, date: new Date()}]});
|
|
}
|
|
|
|
module.exports.socketExceptionHandler = function(socket, err){
|
|
//Locally handle the exception
|
|
module.exports.localExceptionHandler(err);
|
|
|
|
//if not yell at the browser for fucking up, and tell it what it did wrong.
|
|
return module.exports.socketErrorHandler(socket, err.msg, "Caught Exception");
|
|
}
|
|
|
|
module.exports.socketCriticalExceptionHandler = function(socket, err){
|
|
//if not yell at the browser for fucking up, and tell it what it did wrong.
|
|
socket.emit("kick", {type: "Disconnected", reason: `Server Error: ${err.message}`});
|
|
return socket.disconnect();
|
|
}
|
|
|
|
module.exports.consoleWarn = function(string){
|
|
console.warn('\x1b[31m\x1b[4m%s\x1b[0m',string);
|
|
}
|
|
|
|
//Basic error-handling middleware to ensure we're not dumping stack traces
|
|
module.exports.errorMiddleware = function(err, req, res, next){
|
|
//Set generic error
|
|
var reason = "Server Error";
|
|
|
|
//If it's un-authorized
|
|
if(err.status == 403){
|
|
reason = "Unauthorized"
|
|
}
|
|
|
|
module.exports.errorHandler(res, err.message, reason, err.status);
|
|
} |