52 أسطر
1.0 KiB
JavaScript
52 أسطر
1.0 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = class Host {
|
|
constructor() {
|
|
this.authorizedIPs = new Map();
|
|
}
|
|
|
|
/**
|
|
* Get IP from req
|
|
* @param {object} req
|
|
* @returns string IP
|
|
*/
|
|
getIP(req) {
|
|
return req.headers['x-forwarded-for'] || req.headers['X-Forwarded-For'] || req.socket.remoteAddress || req.ip;
|
|
}
|
|
|
|
/**
|
|
* Get authorized IPs
|
|
* @returns object
|
|
*/
|
|
getAuthorizedIPs() {
|
|
return Object.fromEntries(this.authorizedIPs);
|
|
}
|
|
|
|
/**
|
|
* Set authorized IP
|
|
* @param {string} ip
|
|
* @param {boolean} authorized
|
|
*/
|
|
setAuthorizedIP(ip, authorized) {
|
|
this.authorizedIPs.set(ip, authorized);
|
|
}
|
|
|
|
/**
|
|
* Check if IP is authorized
|
|
* @param {string} ip
|
|
* @returns boolean
|
|
*/
|
|
isAuthorizedIP(ip) {
|
|
return this.authorizedIPs.has(ip);
|
|
}
|
|
|
|
/**
|
|
* Delete ip from authorized IPs
|
|
* @param {string} ip
|
|
* @returns boolean
|
|
*/
|
|
deleteIP(ip) {
|
|
return this.authorizedIPs.delete(ip);
|
|
}
|
|
};
|