mirror of
https://github.com/LukeHagar/dokploy.git
synced 2025-12-09 12:27:48 +00:00
Merge pull request #2756 from niieani/bb/fix-null
fix: return an empty object if yaml file is empty
This commit is contained in:
@@ -100,7 +100,7 @@ export const loadRemoteMiddlewares = async (serverId: string) => {
|
|||||||
throw new Error(`File not found: ${configPath}`);
|
throw new Error(`File not found: ${configPath}`);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
export const writeMiddleware = <T>(config: T) => {
|
export const writeMiddleware = (config: FileConfig) => {
|
||||||
const { DYNAMIC_TRAEFIK_PATH } = paths();
|
const { DYNAMIC_TRAEFIK_PATH } = paths();
|
||||||
const configPath = join(DYNAMIC_TRAEFIK_PATH, "middlewares.yml");
|
const configPath = join(DYNAMIC_TRAEFIK_PATH, "middlewares.yml");
|
||||||
const newYamlContent = stringify(config);
|
const newYamlContent = stringify(config);
|
||||||
@@ -111,6 +111,18 @@ export const createPathMiddlewares = async (
|
|||||||
app: ApplicationNested,
|
app: ApplicationNested,
|
||||||
domain: Domain,
|
domain: Domain,
|
||||||
) => {
|
) => {
|
||||||
|
const { appName } = app;
|
||||||
|
const { uniqueConfigKey, internalPath, stripPath, path } = domain;
|
||||||
|
|
||||||
|
// Early return if there's no path middleware to create
|
||||||
|
const needsInternalPathMiddleware =
|
||||||
|
internalPath && internalPath !== "/" && internalPath !== path;
|
||||||
|
const needsStripPathMiddleware = stripPath && path && path !== "/";
|
||||||
|
|
||||||
|
if (!needsInternalPathMiddleware && !needsStripPathMiddleware) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
let config: FileConfig;
|
let config: FileConfig;
|
||||||
|
|
||||||
if (app.serverId) {
|
if (app.serverId) {
|
||||||
@@ -127,20 +139,19 @@ export const createPathMiddlewares = async (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const { appName } = app;
|
if (!config) {
|
||||||
const { uniqueConfigKey, internalPath, stripPath, path } = domain;
|
config = { http: { middlewares: {} } };
|
||||||
|
} else if (!config.http) {
|
||||||
if (!config.http) {
|
|
||||||
config.http = { middlewares: {} };
|
config.http = { middlewares: {} };
|
||||||
}
|
}
|
||||||
if (!config.http.middlewares) {
|
if (!config.http?.middlewares) {
|
||||||
config.http.middlewares = {};
|
config.http!.middlewares = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add internal path prefix middleware
|
// Add internal path prefix middleware
|
||||||
if (internalPath && internalPath !== "/" && internalPath !== path) {
|
if (internalPath && internalPath !== "/" && internalPath !== path) {
|
||||||
const middlewareName = `addprefix-${appName}-${uniqueConfigKey}`;
|
const middlewareName = `addprefix-${appName}-${uniqueConfigKey}`;
|
||||||
config.http.middlewares[middlewareName] = {
|
config.http!.middlewares[middlewareName] = {
|
||||||
addPrefix: {
|
addPrefix: {
|
||||||
prefix: internalPath,
|
prefix: internalPath,
|
||||||
},
|
},
|
||||||
@@ -150,7 +161,7 @@ export const createPathMiddlewares = async (
|
|||||||
// Strip external path middleware if needed
|
// Strip external path middleware if needed
|
||||||
if (stripPath && path && path !== "/") {
|
if (stripPath && path && path !== "/") {
|
||||||
const middlewareName = `stripprefix-${appName}-${uniqueConfigKey}`;
|
const middlewareName = `stripprefix-${appName}-${uniqueConfigKey}`;
|
||||||
config.http.middlewares[middlewareName] = {
|
config.http!.middlewares[middlewareName] = {
|
||||||
stripPrefix: {
|
stripPrefix: {
|
||||||
prefixes: [path],
|
prefixes: [path],
|
||||||
},
|
},
|
||||||
@@ -184,6 +195,10 @@ export const removePathMiddlewares = async (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!config) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const { appName } = app;
|
const { appName } = app;
|
||||||
|
|
||||||
if (config.http?.middlewares) {
|
if (config.http?.middlewares) {
|
||||||
@@ -194,6 +209,23 @@ export const removePathMiddlewares = async (
|
|||||||
delete config.http.middlewares[stripPrefixMiddleware];
|
delete config.http.middlewares[stripPrefixMiddleware];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
config?.http?.middlewares &&
|
||||||
|
Object.keys(config.http.middlewares).length === 0
|
||||||
|
) {
|
||||||
|
// if there aren't any middlewares, remove the whole section
|
||||||
|
delete config.http.middlewares;
|
||||||
|
}
|
||||||
|
|
||||||
|
// // If http section is empty, remove it completely
|
||||||
|
if (config?.http && Object.keys(config?.http).length === 0) {
|
||||||
|
delete config.http;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config && Object.keys(config || {}).length === 0) {
|
||||||
|
config = {};
|
||||||
|
}
|
||||||
|
|
||||||
if (app.serverId) {
|
if (app.serverId) {
|
||||||
await writeTraefikConfigRemote(config, "middlewares", app.serverId);
|
await writeTraefikConfigRemote(config, "middlewares", app.serverId);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user