Files
code-center/src/modules/fm-manager/utils.ts

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));