mirror of
https://github.com/fosrl/pangolin.git
synced 2026-02-10 20:02:26 +00:00
Merge branch 'dev' into auth-providers-clients
This commit is contained in:
@@ -320,8 +320,10 @@ export default function ReverseProxyTargets(props: {
|
||||
AxiosResponse<CreateTargetResponse>
|
||||
>(`/resource/${params.resourceId}/target`, data);
|
||||
target.targetId = res.data.data.targetId;
|
||||
target.new = false;
|
||||
} else if (target.updated) {
|
||||
await api.post(`/target/${target.targetId}`, data);
|
||||
target.updated = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -363,12 +365,12 @@ export default function ReverseProxyTargets(props: {
|
||||
setHttpsTlsLoading(true);
|
||||
await api.post(`/resource/${params.resourceId}`, {
|
||||
ssl: data.ssl,
|
||||
tlsServerName: data.tlsServerName || undefined
|
||||
tlsServerName: data.tlsServerName || null
|
||||
});
|
||||
updateResource({
|
||||
...resource,
|
||||
ssl: data.ssl,
|
||||
tlsServerName: data.tlsServerName || undefined
|
||||
tlsServerName: data.tlsServerName || null
|
||||
});
|
||||
toast({
|
||||
title: "TLS settings updated",
|
||||
@@ -393,11 +395,11 @@ export default function ReverseProxyTargets(props: {
|
||||
try {
|
||||
setProxySettingsLoading(true);
|
||||
await api.post(`/resource/${params.resourceId}`, {
|
||||
setHostHeader: data.setHostHeader || undefined
|
||||
setHostHeader: data.setHostHeader || null
|
||||
});
|
||||
updateResource({
|
||||
...resource,
|
||||
setHostHeader: data.setHostHeader || undefined
|
||||
setHostHeader: data.setHostHeader || null
|
||||
});
|
||||
toast({
|
||||
title: "Proxy settings updated",
|
||||
@@ -796,6 +798,12 @@ export default function ReverseProxyTargets(props: {
|
||||
type="submit"
|
||||
variant="outlinePrimary"
|
||||
className="mt-6"
|
||||
disabled={
|
||||
!(
|
||||
addTargetForm.getValues("ip") &&
|
||||
addTargetForm.getValues("port")
|
||||
)
|
||||
}
|
||||
>
|
||||
Add Target
|
||||
</Button>
|
||||
|
||||
@@ -64,7 +64,6 @@ import {
|
||||
InfoSections,
|
||||
InfoSectionTitle
|
||||
} from "@app/components/InfoSection";
|
||||
import { Separator } from "@app/components/ui/separator";
|
||||
import { InfoPopup } from "@app/components/ui/info-popup";
|
||||
import {
|
||||
isValidCIDR,
|
||||
|
||||
@@ -173,13 +173,15 @@ export default function Page() {
|
||||
if (httpData.isBaseDomain) {
|
||||
Object.assign(payload, {
|
||||
domainId: httpData.domainId,
|
||||
isBaseDomain: true
|
||||
isBaseDomain: true,
|
||||
protocol: "tcp"
|
||||
});
|
||||
} else {
|
||||
Object.assign(payload, {
|
||||
subdomain: httpData.subdomain,
|
||||
domainId: httpData.domainId,
|
||||
isBaseDomain: false
|
||||
isBaseDomain: false,
|
||||
protocol: "tcp"
|
||||
});
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -137,8 +137,8 @@ export function SitePriceCalculator({
|
||||
</div>
|
||||
|
||||
<p className="text-muted-foreground text-sm mt-2 text-center">
|
||||
For the most up-to-date pricing, please visit
|
||||
our{" "}
|
||||
For the most up-to-date pricing and discounts,
|
||||
please visit the{" "}
|
||||
<a
|
||||
href="https://docs.fossorial.io/pricing"
|
||||
target="_blank"
|
||||
|
||||
@@ -452,6 +452,12 @@ export default function LicensePage() {
|
||||
in system
|
||||
</div>
|
||||
</div>
|
||||
{!licenseStatus?.isHostLicensed && (
|
||||
<p className="text-sm text-muted-foreground">
|
||||
There is no limit on the number of sites
|
||||
using an unlicensed host.
|
||||
</p>
|
||||
)}
|
||||
{licenseStatus?.maxSites && (
|
||||
<div className="space-y-2">
|
||||
<div className="flex justify-between text-sm">
|
||||
|
||||
@@ -21,7 +21,7 @@ export default async function AuthLayout({ children }: AuthLayoutProps) {
|
||||
<div className="h-full flex flex-col">
|
||||
{user && (
|
||||
<UserProvider user={user}>
|
||||
<div className="p-3">
|
||||
<div className="p-3 ml-auto">
|
||||
<ProfileIcon />
|
||||
</div>
|
||||
</UserProvider>
|
||||
|
||||
@@ -16,33 +16,7 @@ export function Breadcrumbs() {
|
||||
|
||||
const breadcrumbs: BreadcrumbItem[] = segments.map((segment, index) => {
|
||||
const href = `/${segments.slice(0, index + 1).join("/")}`;
|
||||
let label = segment;
|
||||
|
||||
// // Format labels
|
||||
// if (segment === "settings") {
|
||||
// label = "Settings";
|
||||
// } else if (segment === "sites") {
|
||||
// label = "Sites";
|
||||
// } else if (segment === "resources") {
|
||||
// label = "Resources";
|
||||
// } else if (segment === "access") {
|
||||
// label = "Access Control";
|
||||
// } else if (segment === "general") {
|
||||
// label = "General";
|
||||
// } else if (segment === "share-links") {
|
||||
// label = "Shareable Links";
|
||||
// } else if (segment === "users") {
|
||||
// label = "Users";
|
||||
// } else if (segment === "roles") {
|
||||
// label = "Roles";
|
||||
// } else if (segment === "invitations") {
|
||||
// label = "Invitations";
|
||||
// } else if (segment === "proxy") {
|
||||
// label = "proxy";
|
||||
// } else if (segment === "authentication") {
|
||||
// label = "Authentication";
|
||||
// }
|
||||
|
||||
let label = decodeURIComponent(segment);
|
||||
return { label, href };
|
||||
});
|
||||
|
||||
|
||||
@@ -250,7 +250,7 @@ export default function LoginForm({ redirect, onLogin, idps }: LoginFormProps) {
|
||||
}
|
||||
onChange={(e) => {
|
||||
field.onChange(e);
|
||||
if (e.target.value.length === 6) {
|
||||
if (e.length === 6) {
|
||||
mfaForm.handleSubmit(onSubmit)();
|
||||
}
|
||||
}}
|
||||
|
||||
@@ -55,7 +55,7 @@ export function SettingsSectionFooter({
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return <div className="flex justify-end space-x-2 mt-auto pt-8">{children}</div>;
|
||||
return <div className="flex justify-end space-x-2 mt-auto pt-6">{children}</div>;
|
||||
}
|
||||
|
||||
export function SettingsSectionGrid({
|
||||
|
||||
@@ -189,10 +189,12 @@ export default function SupporterStatus() {
|
||||
<CredenzaBody>
|
||||
<p>
|
||||
Purchase a supporter key to help us continue
|
||||
developing Pangolin. Your contribution allows us
|
||||
commit more time to maintain and add new features to
|
||||
the application for everyone. We will never use this
|
||||
to paywall features.
|
||||
developing Pangolin for the community. Your
|
||||
contribution allows us to commit more time to
|
||||
maintain and add new features to the application for
|
||||
everyone. We will never use this to paywall
|
||||
features. This is separate from the Professional
|
||||
Edition.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
||||
@@ -16,7 +16,7 @@ const ToastViewport = React.forwardRef<
|
||||
<ToastPrimitives.Viewport
|
||||
ref={ref}
|
||||
className={cn(
|
||||
"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",
|
||||
"fixed top-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 md:max-w-[420px]",
|
||||
className
|
||||
)}
|
||||
{...props}
|
||||
|
||||
Reference in New Issue
Block a user