42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { IncomingMessage } from 'node:http';
|
|
import http from 'node:http';
|
|
import { logger } from '../logger.ts';
|
|
export const isBun = typeof Bun !== 'undefined' && Bun?.version != null;
|
|
|
|
export const isNode = typeof process !== 'undefined' && process?.versions != null && process.versions?.node != null;
|
|
|
|
// @ts-ignore
|
|
export const isDeno = typeof Deno !== 'undefined' && Deno?.version != null && Deno?.version?.deno != null;
|
|
|
|
export const getUserFromRequest = (req: IncomingMessage) => {
|
|
const url = new URL(req.url, `http://${req.headers.host}`);
|
|
const pathname = url.pathname;
|
|
const keys = pathname.split('/');
|
|
const [_, user, app] = keys;
|
|
return {
|
|
user,
|
|
app,
|
|
};
|
|
};
|
|
|
|
|
|
export const getDNS = (req: http.IncomingMessage) => {
|
|
const hostName = req.headers?.host;
|
|
const ip = req?.socket?.remoteAddress || '';
|
|
return { hostName, ip };
|
|
};
|
|
|
|
export const isLocalhost = (hostName: string) => {
|
|
if(!hostName) {
|
|
return false;
|
|
}
|
|
return hostName.includes('localhost') || hostName.includes('192.168');
|
|
};
|
|
|
|
export const isIpv4OrIpv6 = (hostName: string) => {
|
|
const ipv4 = /^(\d{1,3}\.){3}\d{1,3}$/;
|
|
const ipv6 = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/;
|
|
return ipv4.test(hostName) || ipv6.test(hostName);
|
|
};
|
|
export const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
|