github-actions[bot]🚀 Release v0.29.5 (#4475)a07106d5 months agoHistory
56 lines · 1.1 KB · TypeScript
RawDownload
import os from "node:os";import path from "node:path";import { paths } from "@dokploy/server/constants";import { publicIpv4, publicIpv6 } from "public-ip"; export const getShell = () => {	switch (os.platform()) {		case "win32":			return "powershell.exe";		case "darwin":			return "zsh";		default:			return "bash";	}}; export const getPublicIpWithFallback = async () => {	// @ts-ignore	let ip = null;	try {		ip = await publicIpv4();	} catch (error) {		console.log(			"Error obtaining public IPv4 address, falling back to IPv6",			// @ts-ignore			error.message,		);		try {			ip = await publicIpv6();		} catch (error) {			// @ts-ignore			console.error("Error obtaining public IPv6 address", error.message);			ip = null;		}	}	return ip;}; export const readValidDirectory = (	directory: string,	serverId?: string | null,) => {	if (!/^[\w/. :[\]-]{1,500}$/.test(directory)) {		return false;	} 	const { BASE_PATH } = paths(!!serverId); 	const resolvedBase = path.resolve(BASE_PATH);	const resolvedDir = path.resolve(directory); 	return (		resolvedDir === resolvedBase ||		resolvedDir.startsWith(resolvedBase + path.sep)	);};