mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
feat: initial commit
This commit is contained in:
69
server/utils/traefik/redirect.ts
Normal file
69
server/utils/traefik/redirect.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
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);
|
||||
};
|
||||
Reference in New Issue
Block a user