fix hc port NaN issue

This commit is contained in:
miloschwartz
2025-12-04 22:03:37 -05:00
parent a7185ff913
commit 2dcc94cd14
3 changed files with 49 additions and 24 deletions

View File

@@ -1510,14 +1510,15 @@
"enableHealthChecksDescription": "Monitor the health of this target. You can monitor a different endpoint than the target if required.",
"healthScheme": "Method",
"healthSelectScheme": "Select Method",
"healthCheckPortInvalid": "Health check port must be between 1 and 65535",
"healthCheckPath": "Path",
"healthHostname": "IP / Host",
"healthPort": "Port",
"healthCheckPathDescription": "The path to check for health status.",
"healthyIntervalSeconds": "Healthy Interval",
"unhealthyIntervalSeconds": "Unhealthy Interval",
"healthyIntervalSeconds": "Healthy Interval (sec)",
"unhealthyIntervalSeconds": "Unhealthy Interval (sec)",
"IntervalSeconds": "Healthy Interval",
"timeoutSeconds": "Timeout",
"timeoutSeconds": "Timeout (sec)",
"timeIsInSeconds": "Time is in seconds",
"retryAttempts": "Retry Attempts",
"expectedResponseCodes": "Expected Response Codes",

View File

@@ -691,6 +691,7 @@ export default function ReverseProxyTargets(props: {
target.port <= 0 ||
isNaN(target.port)
);
console.log(targetsWithInvalidFields);
if (targetsWithInvalidFields.length > 0) {
toast({
variant: "destructive",
@@ -1833,9 +1834,7 @@ export default function ReverseProxyTargets(props: {
30
}}
onChanges={async (config) => {
console.log("here");
if (selectedTargetForHealthCheck) {
console.log(config);
updateTargetHealthCheck(
selectedTargetForHealthCheck.targetId,
config

View File

@@ -80,17 +80,33 @@ export default function HealthCheckDialog({
hcMethod: z
.string()
.min(1, { message: t("healthCheckMethodRequired") }),
hcInterval: z.int()
hcInterval: z
.int()
.positive()
.min(5, { message: t("healthCheckIntervalMin") }),
hcTimeout: z.int()
hcTimeout: z
.int()
.positive()
.min(1, { message: t("healthCheckTimeoutMin") }),
hcStatus: z.int().positive().min(100).optional().nullable(),
hcHeaders: z.array(z.object({ name: z.string(), value: z.string() })).nullable().optional(),
hcHeaders: z
.array(z.object({ name: z.string(), value: z.string() }))
.nullable()
.optional(),
hcScheme: z.string().optional(),
hcHostname: z.string(),
hcPort: z.number().positive().gt(0).lte(65535),
hcPort: z
.string()
.min(1, { message: t("healthCheckPortInvalid") })
.refine(
(val) => {
const port = parseInt(val);
return port > 0 && port <= 65535;
},
{
message: t("healthCheckPortInvalid")
}
),
hcFollowRedirects: z.boolean(),
hcMode: z.string(),
hcUnhealthyInterval: z.int().positive().min(5)
@@ -126,7 +142,9 @@ export default function HealthCheckDialog({
hcHeaders: initialConfig?.hcHeaders,
hcScheme: getDefaultScheme(),
hcHostname: initialConfig?.hcHostname,
hcPort: initialConfig?.hcPort,
hcPort: initialConfig?.hcPort
? initialConfig.hcPort.toString()
: "",
hcFollowRedirects: initialConfig?.hcFollowRedirects,
hcMode: initialConfig?.hcMode,
hcUnhealthyInterval: initialConfig?.hcUnhealthyInterval
@@ -139,10 +157,15 @@ export default function HealthCheckDialog({
try {
const currentValues = form.getValues();
const updatedValues = { ...currentValues, [fieldName]: value };
await onChanges({
// Convert hcPort from string to number before passing to parent
const configToSend: HealthCheckConfig = {
...updatedValues,
hcPort: parseInt(updatedValues.hcPort),
hcStatus: updatedValues.hcStatus || null
});
};
await onChanges(configToSend);
} catch (error) {
toast({
title: t("healthCheckError"),
@@ -210,14 +233,20 @@ export default function HealthCheckDialog({
{t("healthScheme")}
</FormLabel>
<Select
onValueChange={(value) => {
field.onChange(value);
onValueChange={(
value
) => {
field.onChange(
value
);
handleFieldChange(
"hcScheme",
value
);
}}
defaultValue={field.value}
defaultValue={
field.value
}
>
<FormControl>
<SelectTrigger>
@@ -281,10 +310,8 @@ export default function HealthCheckDialog({
{...field}
onChange={(e) => {
const value =
parseInt(
e.target
.value
);
e.target
.value;
field.onChange(
value
);
@@ -483,10 +510,6 @@ export default function HealthCheckDialog({
</FormItem>
)}
/>
<FormDescription>
{t("timeIsInSeconds")}
</FormDescription>
</div>
{/* Expected Response Codes */}
@@ -544,7 +567,9 @@ export default function HealthCheckDialog({
<HeadersInput
value={field.value}
onChange={(value) => {
field.onChange(value);
field.onChange(
value
);
handleFieldChange(
"hcHeaders",
value