mirror of
https://github.com/fosrl/pangolin.git
synced 2026-07-19 12:06:28 +02:00
include exit node endpoint in tcp/udp resources
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { formatEndpoint, parseEndpoint } from "@server/lib/ip";
|
||||
|
||||
export type SiteResourceDestinationInput = {
|
||||
mode: "host" | "cidr" | "http" | "ssh";
|
||||
destination: string | null;
|
||||
@@ -40,6 +42,7 @@ export type PublicResourceAccessInput = {
|
||||
ssl: boolean;
|
||||
proxyPort: number | null;
|
||||
wildcard: boolean;
|
||||
exitNodeEndpoint?: string | null;
|
||||
};
|
||||
|
||||
export type SiteResourceAccessInput = {
|
||||
@@ -59,12 +62,20 @@ export type LauncherAccessFields = {
|
||||
accessUrl: string | null;
|
||||
};
|
||||
|
||||
export function formatPublicResourceAccess(
|
||||
resource: PublicResourceAccessInput
|
||||
function formatTcpUdpResourceAccess(
|
||||
exitNodeEndpoint: string | null | undefined,
|
||||
proxyPort: number | null
|
||||
): LauncherAccessFields {
|
||||
const browserModes = ["http", "ssh", "rdp", "vnc"];
|
||||
if (!browserModes.includes(resource.mode)) {
|
||||
const port = resource.proxyPort?.toString() ?? "";
|
||||
if (proxyPort == null) {
|
||||
return {
|
||||
accessDisplay: "",
|
||||
accessCopyValue: "",
|
||||
accessUrl: null
|
||||
};
|
||||
}
|
||||
|
||||
if (!exitNodeEndpoint?.trim()) {
|
||||
const port = proxyPort.toString();
|
||||
return {
|
||||
accessDisplay: port,
|
||||
accessCopyValue: port,
|
||||
@@ -72,6 +83,28 @@ export function formatPublicResourceAccess(
|
||||
};
|
||||
}
|
||||
|
||||
const parsed = parseEndpoint(exitNodeEndpoint);
|
||||
const host = parsed?.ip ?? exitNodeEndpoint.trim();
|
||||
const access = formatEndpoint(host, proxyPort);
|
||||
|
||||
return {
|
||||
accessDisplay: access,
|
||||
accessCopyValue: access,
|
||||
accessUrl: null
|
||||
};
|
||||
}
|
||||
|
||||
export function formatPublicResourceAccess(
|
||||
resource: PublicResourceAccessInput
|
||||
): LauncherAccessFields {
|
||||
const browserModes = ["http", "ssh", "rdp", "vnc"];
|
||||
if (!browserModes.includes(resource.mode)) {
|
||||
return formatTcpUdpResourceAccess(
|
||||
resource.exitNodeEndpoint,
|
||||
resource.proxyPort
|
||||
);
|
||||
}
|
||||
|
||||
if (!resource.fullDomain) {
|
||||
return {
|
||||
accessDisplay: "",
|
||||
|
||||
Reference in New Issue
Block a user