mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
70 lines
1.8 KiB
TypeScript
70 lines
1.8 KiB
TypeScript
import type { Redirect } from "@/server/api/services/redirect";
|
|
import { loadOrCreateConfig, writeTraefikConfig } from "./application";
|
|
import {
|
|
addMiddleware,
|
|
deleteMiddleware,
|
|
loadMiddlewares,
|
|
writeMiddleware,
|
|
} from "./middleware";
|
|
import type { FileConfig } from "./file-types";
|
|
|
|
export const updateRedirectMiddleware = (appName: string, data: Redirect) => {
|
|
const config = loadMiddlewares<FileConfig>();
|
|
|
|
if (config?.http?.middlewares?.[appName]) {
|
|
const middlewareName = `${appName}-${data.uniqueConfigKey}`;
|
|
|
|
config.http.middlewares[middlewareName] = {
|
|
redirectRegex: {
|
|
regex: data.regex,
|
|
replacement: data.replacement,
|
|
permanent: data.permanent,
|
|
},
|
|
};
|
|
}
|
|
|
|
writeMiddleware(config);
|
|
};
|
|
export const createRedirectMiddleware = (appName: string, data: Redirect) => {
|
|
const config = loadMiddlewares<FileConfig>();
|
|
const middlewareName = `redirect-${appName}-${data.uniqueConfigKey}`;
|
|
const newMiddleware = {
|
|
[middlewareName]: {
|
|
redirectRegex: {
|
|
regex: data.regex,
|
|
replacement: data.replacement,
|
|
permanent: data.permanent,
|
|
},
|
|
},
|
|
};
|
|
|
|
if (config?.http) {
|
|
config.http.middlewares = {
|
|
...config.http.middlewares,
|
|
...newMiddleware,
|
|
};
|
|
}
|
|
|
|
const appConfig = loadOrCreateConfig(appName);
|
|
|
|
addMiddleware(appConfig, middlewareName);
|
|
|
|
writeTraefikConfig(appConfig, appName);
|
|
writeMiddleware(config);
|
|
};
|
|
|
|
export const removeRedirectMiddleware = (appName: string, data: Redirect) => {
|
|
const config = loadMiddlewares<FileConfig>();
|
|
const middlewareName = `redirect-${appName}-${data.uniqueConfigKey}`;
|
|
|
|
if (config?.http?.middlewares?.[middlewareName]) {
|
|
delete config.http.middlewares[middlewareName];
|
|
}
|
|
|
|
const appConfig = loadOrCreateConfig(appName);
|
|
|
|
deleteMiddleware(appConfig, middlewareName);
|
|
writeTraefikConfig(appConfig, appName);
|
|
writeMiddleware(config);
|
|
};
|