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") && (