From 82367213ea99f027401823721eaaea5decd56f35 Mon Sep 17 00:00:00 2001 From: Krzysztof Durek <21038648+kdurek@users.noreply.github.com> Date: Sun, 17 Nov 2024 21:58:37 +0100 Subject: [PATCH] feat: add ability for setting current public IP in server IP update form --- .../settings/web-server/update-server-ip.tsx | 40 ++++++++++++++++++- apps/dokploy/server/api/routers/server.ts | 5 +++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/apps/dokploy/components/dashboard/settings/web-server/update-server-ip.tsx b/apps/dokploy/components/dashboard/settings/web-server/update-server-ip.tsx index 4834ef92..264b10ac 100644 --- a/apps/dokploy/components/dashboard/settings/web-server/update-server-ip.tsx +++ b/apps/dokploy/components/dashboard/settings/web-server/update-server-ip.tsx @@ -19,8 +19,15 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; +import { RefreshCw } from "lucide-react"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; @@ -41,6 +48,7 @@ export const UpdateServerIp = ({ children, serverId }: Props) => { const [isOpen, setIsOpen] = useState(false); const { data } = api.admin.one.useQuery(); + const { data: ip } = api.server.publicIp.useQuery(); const { mutateAsync, isLoading, error, isError } = api.admin.update.useMutation(); @@ -62,6 +70,11 @@ export const UpdateServerIp = ({ children, serverId }: Props) => { const utils = api.useUtils(); + const setCurrentIp = () => { + if (!ip) return; + form.setValue("serverIp", ip); + }; + const onSubmit = async (data: Schema) => { await mutateAsync({ serverIp: data.serverIp, @@ -97,8 +110,31 @@ export const UpdateServerIp = ({ children, serverId }: Props) => { render={({ field }) => ( Server IP - - + +
+ + + + + + + + +

Set current public IP

+
+
+
+
 										
diff --git a/apps/dokploy/server/api/routers/server.ts b/apps/dokploy/server/api/routers/server.ts
index 6caaa9c8..97746131 100644
--- a/apps/dokploy/server/api/routers/server.ts
+++ b/apps/dokploy/server/api/routers/server.ts
@@ -22,6 +22,7 @@ import {
 	findAdminById,
 	findServerById,
 	findServersByAdminId,
+	getPublicIpWithFallback,
 	haveActiveServices,
 	removeDeploymentsByServerId,
 	serverSetup,
@@ -181,4 +182,8 @@ export const serverRouter = createTRPCRouter({
 				throw error;
 			}
 		}),
+	publicIp: protectedProcedure.query(async ({ ctx }) => {
+		const ip = await getPublicIpWithFallback();
+		return ip;
+	}),
 });