fix: remove max redirects from ping (#1828)

This commit is contained in:
Manuel
2024-01-16 20:14:52 +01:00
committed by GitHub
parent b911e8b56f
commit ffc9387edb

View File

@@ -1,13 +1,13 @@
import { TRPCError } from '@trpc/server'; import { TRPCError } from '@trpc/server';
import axios, { AxiosError } from 'axios'; import axios, { AxiosError } from 'axios';
import Consola from 'consola'; import Consola from 'consola';
import * as https from 'https';
import { z } from 'zod'; import { z } from 'zod';
import { isStatusOk } from '~/components/Dashboard/Tiles/Apps/AppPing'; import { isStatusOk } from '~/components/Dashboard/Tiles/Apps/AppPing';
import { getConfig } from '~/tools/config/getConfig'; import { getConfig } from '~/tools/config/getConfig';
import { AppType } from '~/types/app'; import { AppType } from '~/types/app';
import { createTRPCRouter, publicProcedure } from '../trpc'; import { createTRPCRouter, publicProcedure } from '../trpc';
import * as https from 'https';
export const appRouter = createTRPCRouter({ export const appRouter = createTRPCRouter({
ping: publicProcedure ping: publicProcedure
@@ -16,13 +16,15 @@ export const appRouter = createTRPCRouter({
z.object({ z.object({
id: z.string(), id: z.string(),
configName: z.string(), configName: z.string(),
}), })
)
.output(
z.object({
status: z.number(),
statusText: z.string(),
state: z.string(),
})
) )
.output(z.object({
status: z.number(),
statusText: z.string(),
state: z.string()
}))
.query(async ({ input }) => { .query(async ({ input }) => {
const config = getConfig(input.configName); const config = getConfig(input.configName);
const app = config.apps.find((app) => app.id === input.id); const app = config.apps.find((app) => app.id === input.id);
@@ -38,19 +40,19 @@ export const appRouter = createTRPCRouter({
const agent = new https.Agent({ const agent = new https.Agent({
rejectUnauthorized: false, rejectUnauthorized: false,
requestCert: false requestCert: false,
}); });
return await axios.get(app.url, { return await axios
method: 'GET', .get(app.url, {
headers: { method: 'GET',
// Cache for 5 minutes headers: {
'Cache-Control': 'max-age=300' // Cache for 5 minutes
}, 'Cache-Control': 'max-age=300',
httpsAgent: agent, },
timeout: 12 * 1000, // 12 seconds, httpsAgent: agent,
maxRedirects: 3 timeout: 12 * 1000, // 12 seconds
}) })
.then((response) => ({ .then((response) => ({
status: response.status, status: response.status,
statusText: response.statusText, statusText: response.statusText,
@@ -67,7 +69,7 @@ export const appRouter = createTRPCRouter({
if (error.code === 'ECONNABORTED') { if (error.code === 'ECONNABORTED') {
Consola.error( Consola.error(
`Ping timed out for app with id '${input.id}' in config '${input.configName}' -> url: ${app.url})`, `Ping timed out for app with id '${input.id}' in config '${input.configName}' -> url: ${app.url})`
); );
throw new TRPCError({ throw new TRPCError({
code: 'TIMEOUT', code: 'TIMEOUT',