diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx b/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx index 0ec7e091d..653c86ec0 100644 --- a/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx +++ b/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx @@ -96,6 +96,7 @@ export const AvailableElementTypes = ({ network: { enabledStatusChecker: true, statusCodes: ['200'], + okStatus: [200], }, behaviour: { isOpeningNewTab: true, diff --git a/src/components/Dashboard/Tiles/Apps/AppPing.tsx b/src/components/Dashboard/Tiles/Apps/AppPing.tsx index 0a14bb9f2..b2e3bd559 100644 --- a/src/components/Dashboard/Tiles/Apps/AppPing.tsx +++ b/src/components/Dashboard/Tiles/Apps/AppPing.tsx @@ -1,4 +1,5 @@ import { Indicator, Tooltip } from '@mantine/core'; +import Consola from 'consola'; import { useQuery } from '@tanstack/react-query'; import { motion } from 'framer-motion'; import { useTranslation } from 'next-i18next'; @@ -19,7 +20,7 @@ export const AppPing = ({ app }: AppPingProps) => { queryKey: ['ping', { id: app.id, name: app.name }], queryFn: async () => { const response = await fetch(`/api/modules/ping?url=${encodeURI(app.url)}`); - const isOk = app.network.statusCodes.includes(response.status.toString()); + const isOk = getIsOk(app, response.status); return { status: response.status, state: isOk ? 'online' : 'down', @@ -60,3 +61,12 @@ export const AppPing = ({ app }: AppPingProps) => { ); }; + +const getIsOk = (app: AppType, status: number) => { +if (app.network.okStatus === undefined || app.network.statusCodes.length >= 1) { +Consola.log('Using new status codes'); +return app.network.statusCodes.includes(status.toString()); +} +Consola.warn('Using deprecated okStatus'); +return app.network.okStatus.includes(status); +}; diff --git a/src/modules/Docker/ContainerActionBar.tsx b/src/modules/Docker/ContainerActionBar.tsx index fa3aa79fe..e5aa253b6 100644 --- a/src/modules/Docker/ContainerActionBar.tsx +++ b/src/modules/Docker/ContainerActionBar.tsx @@ -178,6 +178,7 @@ export default function ContainerActionBar({ selected, reload }: ContainerAction network: { enabledStatusChecker: true, statusCodes: ['200'], + okStatus: [200], }, behaviour: { isOpeningNewTab: true, diff --git a/src/pages/api/configs/[slug].ts b/src/pages/api/configs/[slug].ts index 7050413f6..b7cbfea8d 100644 --- a/src/pages/api/configs/[slug].ts +++ b/src/pages/api/configs/[slug].ts @@ -35,6 +35,13 @@ function Put(req: NextApiRequest, res: NextApiResponse) { apps: [ ...config.apps.map((app) => ({ ...app, + network: { + ...app.network, + statusCodes: app.network.okStatus === undefined ? + app.network.statusCodes : + app.network.okStatus.map((x) => x.toString()), + okStatus: undefined, + }, integration: { ...app.integration, properties: app.integration.properties.map((property) => { diff --git a/src/pages/api/modules/ping.ts b/src/pages/api/modules/ping.ts index 270ed49f8..7c2a1bbe1 100644 --- a/src/pages/api/modules/ping.ts +++ b/src/pages/api/modules/ping.ts @@ -1,5 +1,6 @@ import axios from 'axios'; import https from 'https'; +import Consola from 'consola'; import { NextApiRequest, NextApiResponse } from 'next'; async function Get(req: NextApiRequest, res: NextApiResponse) { @@ -13,6 +14,7 @@ async function Get(req: NextApiRequest, res: NextApiResponse) { }) .catch((error) => { if (error.response) { + Consola.error(`Unexpected response: ${error.response.data}`); res.status(error.response.status).json(error.response.statusText); } else if (error.code === 'ECONNABORTED') { res.status(408).json('Request Timeout'); diff --git a/src/types/app.ts b/src/types/app.ts index ca933d2d4..ad951539f 100644 --- a/src/types/app.ts +++ b/src/types/app.ts @@ -23,6 +23,7 @@ interface AppBehaviourType { interface AppNetworkType { enabledStatusChecker: boolean; + okStatus?: number[]; statusCodes: string[]; }