diff --git a/client/src/Hooks/useMonitorForm.ts b/client/src/Hooks/useMonitorForm.ts index 633fcb5c9..0606f4363 100644 --- a/client/src/Hooks/useMonitorForm.ts +++ b/client/src/Hooks/useMonitorForm.ts @@ -70,6 +70,16 @@ export const useMonitorForm = ({ gameId: data?.gameId || "", }; break; + case "grpc": + defaults = { + ...base, + type: "grpc", + url: data?.url || "", + port: data?.port || 50051, + grpcServiceName: data?.grpcServiceName || "", + ignoreTlsErrors: data?.ignoreTlsErrors || false, + }; + break; case "pagespeed": defaults = { ...base, diff --git a/client/src/Pages/CreateMonitor/index.tsx b/client/src/Pages/CreateMonitor/index.tsx index 5012c1154..560b0fc27 100644 --- a/client/src/Pages/CreateMonitor/index.tsx +++ b/client/src/Pages/CreateMonitor/index.tsx @@ -41,6 +41,8 @@ interface GeneralSettingsConfig { showPort: boolean; showGameSelect: boolean; showSecret: boolean; + showGrpcServiceName: boolean; + showIgnoreTls: boolean; } const getGeneralSettingsConfig = ( @@ -56,6 +58,8 @@ const getGeneralSettingsConfig = ( showPort: false, showGameSelect: false, showSecret: false, + showGrpcServiceName: false, + showIgnoreTls: false, }, ping: { urlLabel: t("pages.createMonitor.form.general.option.host.label"), @@ -65,6 +69,8 @@ const getGeneralSettingsConfig = ( showPort: false, showGameSelect: false, showSecret: false, + showGrpcServiceName: false, + showIgnoreTls: false, }, docker: { urlLabel: t("pages.createMonitor.form.general.option.container.label"), @@ -74,6 +80,8 @@ const getGeneralSettingsConfig = ( showPort: false, showGameSelect: false, showSecret: false, + showGrpcServiceName: false, + showIgnoreTls: false, }, port: { urlLabel: t("pages.createMonitor.form.general.option.url.label"), @@ -83,6 +91,8 @@ const getGeneralSettingsConfig = ( showPort: true, showGameSelect: false, showSecret: false, + showGrpcServiceName: false, + showIgnoreTls: false, }, game: { urlLabel: t("pages.createMonitor.form.general.option.url.label"), @@ -92,6 +102,19 @@ const getGeneralSettingsConfig = ( showPort: true, showGameSelect: true, showSecret: false, + showGrpcServiceName: false, + showIgnoreTls: false, + }, + grpc: { + urlLabel: t("pages.createMonitor.form.general.option.host.label"), + urlPlaceholder: t("pages.createMonitor.form.general.option.host.placeholder"), + namePlaceholder: t("pages.createMonitor.form.general.option.name.placeholder"), + showUrl: true, + showPort: true, + showGameSelect: false, + showSecret: false, + showGrpcServiceName: true, + showIgnoreTls: true, }, pagespeed: { urlLabel: t("pages.createMonitor.form.general.option.url.label"), @@ -101,6 +124,8 @@ const getGeneralSettingsConfig = ( showPort: false, showGameSelect: false, showSecret: false, + showGrpcServiceName: false, + showIgnoreTls: false, }, hardware: { urlLabel: t("pages.createMonitor.form.general.option.url.label"), @@ -110,6 +135,8 @@ const getGeneralSettingsConfig = ( showPort: false, showGameSelect: false, showSecret: true, + showGrpcServiceName: false, + showIgnoreTls: false, }, }; return configs[type] || configs.http; @@ -288,6 +315,13 @@ const CreateMonitorPage = () => { "pages.createMonitor.form.type.optionGameDescription" )} /> + )} @@ -376,6 +410,30 @@ const CreateMonitorPage = () => { /> )} + {/* gRPC Service Name field - only for grpc type */} + {generalSettingsConfig.showGrpcServiceName && ( + ( + + )} + /> + )} + {/* Secret field - only for hardware type */} {generalSettingsConfig.showSecret && ( { } /> - {watchedType === "http" && ( + {(watchedType === "http" || watchedType === "grpc") && (