mirror of
https://github.com/fosrl/pangolin.git
synced 2026-06-18 21:31:56 +00:00
Make sure the disableEnterpriseFeatures works
This commit is contained in:
@@ -1647,7 +1647,7 @@
|
|||||||
"standaloneHcFilterResourceIdFallback": "Resource {id}",
|
"standaloneHcFilterResourceIdFallback": "Resource {id}",
|
||||||
"blueprints": "Blueprints",
|
"blueprints": "Blueprints",
|
||||||
"blueprintsLog": "Blueprints Log",
|
"blueprintsLog": "Blueprints Log",
|
||||||
"blueprintsDescription": "View past blueprint applications and their results",
|
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||||
"blueprintAdd": "Add Blueprint",
|
"blueprintAdd": "Add Blueprint",
|
||||||
"blueprintGoBack": "See all Blueprints",
|
"blueprintGoBack": "See all Blueprints",
|
||||||
"blueprintCreate": "Create Blueprint",
|
"blueprintCreate": "Create Blueprint",
|
||||||
|
|||||||
@@ -2,13 +2,6 @@
|
|||||||
|
|
||||||
import CopyTextBox from "@app/components/CopyTextBox";
|
import CopyTextBox from "@app/components/CopyTextBox";
|
||||||
import DomainPicker from "@app/components/DomainPicker";
|
import DomainPicker from "@app/components/DomainPicker";
|
||||||
import HealthCheckCredenza from "@app/components/HealthCheckCredenza";
|
|
||||||
import {
|
|
||||||
PathMatchDisplay,
|
|
||||||
PathMatchModal,
|
|
||||||
PathRewriteDisplay,
|
|
||||||
PathRewriteModal
|
|
||||||
} from "@app/components/PathMatchRenameModal";
|
|
||||||
import {
|
import {
|
||||||
SettingsContainer,
|
SettingsContainer,
|
||||||
SettingsSection,
|
SettingsSection,
|
||||||
@@ -48,29 +41,6 @@ import {
|
|||||||
PopoverContent,
|
PopoverContent,
|
||||||
PopoverTrigger
|
PopoverTrigger
|
||||||
} from "@app/components/ui/popover";
|
} from "@app/components/ui/popover";
|
||||||
import {
|
|
||||||
Select,
|
|
||||||
SelectContent,
|
|
||||||
SelectItem,
|
|
||||||
SelectTrigger,
|
|
||||||
SelectValue
|
|
||||||
} from "@app/components/ui/select";
|
|
||||||
import { Switch } from "@app/components/ui/switch";
|
|
||||||
import {
|
|
||||||
Table,
|
|
||||||
TableBody,
|
|
||||||
TableCell,
|
|
||||||
TableHead,
|
|
||||||
TableHeader,
|
|
||||||
TableRow
|
|
||||||
} from "@app/components/ui/table";
|
|
||||||
import {
|
|
||||||
Tooltip,
|
|
||||||
TooltipContent,
|
|
||||||
TooltipProvider,
|
|
||||||
TooltipTrigger
|
|
||||||
} from "@app/components/ui/tooltip";
|
|
||||||
import { Alert, AlertDescription, AlertTitle } from "@app/components/ui/alert";
|
|
||||||
import { useEnvContext } from "@app/hooks/useEnvContext";
|
import { useEnvContext } from "@app/hooks/useEnvContext";
|
||||||
import { usePaidStatus } from "@app/hooks/usePaidStatus";
|
import { usePaidStatus } from "@app/hooks/usePaidStatus";
|
||||||
import { toast } from "@app/hooks/useToast";
|
import { toast } from "@app/hooks/useToast";
|
||||||
@@ -84,32 +54,16 @@ import { zodResolver } from "@hookform/resolvers/zod";
|
|||||||
import { build } from "@server/build";
|
import { build } from "@server/build";
|
||||||
import { Resource } from "@server/db";
|
import { Resource } from "@server/db";
|
||||||
import { isTargetValid } from "@server/lib/validators";
|
import { isTargetValid } from "@server/lib/validators";
|
||||||
import { ListTargetsResponse } from "@server/routers/target";
|
|
||||||
import { ListRemoteExitNodesResponse } from "@server/routers/remoteExitNode/types";
|
import { ListRemoteExitNodesResponse } from "@server/routers/remoteExitNode/types";
|
||||||
import { ArrayElement } from "@server/types/ArrayElement";
|
|
||||||
import { useQuery } from "@tanstack/react-query";
|
import { useQuery } from "@tanstack/react-query";
|
||||||
import {
|
import {
|
||||||
LocalTarget,
|
LocalTarget,
|
||||||
ProxyResourceTargetsForm
|
ProxyResourceTargetsForm
|
||||||
} from "@app/app/[orgId]/settings/resources/public/ProxyResourceTargetsForm";
|
} from "@app/app/[orgId]/settings/resources/public/ProxyResourceTargetsForm";
|
||||||
import {
|
|
||||||
ColumnDef,
|
|
||||||
flexRender,
|
|
||||||
getCoreRowModel,
|
|
||||||
getFilteredRowModel,
|
|
||||||
getPaginationRowModel,
|
|
||||||
getSortedRowModel,
|
|
||||||
useReactTable
|
|
||||||
} from "@tanstack/react-table";
|
|
||||||
import { AxiosResponse } from "axios";
|
import { AxiosResponse } from "axios";
|
||||||
import {
|
import {
|
||||||
ChevronsUpDown,
|
ChevronsUpDown,
|
||||||
CircleCheck,
|
|
||||||
CircleX,
|
|
||||||
ExternalLink,
|
ExternalLink,
|
||||||
Info,
|
|
||||||
Plus,
|
|
||||||
Settings,
|
|
||||||
SquareArrowOutUpRight
|
SquareArrowOutUpRight
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
@@ -119,13 +73,11 @@ import { toASCII } from "punycode";
|
|||||||
import {
|
import {
|
||||||
useMemo,
|
useMemo,
|
||||||
useState,
|
useState,
|
||||||
useCallback,
|
|
||||||
useTransition,
|
useTransition,
|
||||||
useEffect
|
useEffect
|
||||||
} from "react";
|
} from "react";
|
||||||
import { Controller, useForm } from "react-hook-form";
|
import { useForm } from "react-hook-form";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { cn } from "@app/lib/cn";
|
|
||||||
|
|
||||||
const baseResourceFormSchema = z.object({
|
const baseResourceFormSchema = z.object({
|
||||||
name: z.string().min(1).max(255),
|
name: z.string().min(1).max(255),
|
||||||
@@ -327,14 +279,25 @@ export default function Page() {
|
|||||||
const rawResourcesAllowed =
|
const rawResourcesAllowed =
|
||||||
env.flags.allowRawResources &&
|
env.flags.allowRawResources &&
|
||||||
(build !== "saas" || remoteExitNodes.length > 0);
|
(build !== "saas" || remoteExitNodes.length > 0);
|
||||||
|
const enterpriseModesAllowed =
|
||||||
|
build === "oss" && !env.flags.disableEnterpriseFeatures;
|
||||||
|
|
||||||
const availableTypes = useMemo((): NewResourceType[] => {
|
const availableTypes = useMemo((): NewResourceType[] => {
|
||||||
const base: NewResourceType[] = ["http", "ssh", "rdp", "vnc"];
|
const base: NewResourceType[] = ["http"];
|
||||||
|
if (enterpriseModesAllowed) {
|
||||||
|
base.push("ssh", "rdp", "vnc");
|
||||||
|
}
|
||||||
if (rawResourcesAllowed) {
|
if (rawResourcesAllowed) {
|
||||||
base.push("tcp", "udp");
|
base.push("tcp", "udp");
|
||||||
}
|
}
|
||||||
return base;
|
return base;
|
||||||
}, [rawResourcesAllowed]);
|
}, [enterpriseModesAllowed, rawResourcesAllowed]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!availableTypes.includes(resourceType)) {
|
||||||
|
setResourceType("http");
|
||||||
|
}
|
||||||
|
}, [availableTypes, resourceType]);
|
||||||
|
|
||||||
const baseForm = useForm({
|
const baseForm = useForm({
|
||||||
resolver: zodResolver(baseResourceFormSchema),
|
resolver: zodResolver(baseResourceFormSchema),
|
||||||
@@ -686,19 +649,25 @@ export default function Page() {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
const typeLabels: Record<NewResourceType, string> = {
|
let typeLabels: Partial<Record<NewResourceType, string>> = {
|
||||||
http: "HTTP",
|
http: "HTTP",
|
||||||
ssh: "SSH",
|
|
||||||
rdp: "RDP",
|
|
||||||
vnc: "VNC",
|
|
||||||
tcp: "TCP",
|
tcp: "TCP",
|
||||||
udp: "UDP"
|
udp: "UDP"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (enterpriseModesAllowed) {
|
||||||
|
typeLabels = {
|
||||||
|
...typeLabels,
|
||||||
|
ssh: "SSH",
|
||||||
|
rdp: "RDP",
|
||||||
|
vnc: "VNC",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const typeOptions: OptionSelectOption<NewResourceType>[] =
|
const typeOptions: OptionSelectOption<NewResourceType>[] =
|
||||||
availableTypes.map((type) => ({
|
availableTypes.map((type) => ({
|
||||||
value: type,
|
value: type,
|
||||||
label: typeLabels[type]
|
label: typeLabels[type] ?? type.toUpperCase()
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ export const orgNavSections = (
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
...(build !== "oss"
|
...(build === "oss" && !env?.flags.disableEnterpriseFeatures
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
title: "sidebarPolicies",
|
title: "sidebarPolicies",
|
||||||
|
|||||||
Reference in New Issue
Block a user