diff --git a/electron/main.cjs b/electron/main.cjs index 2b0765e6..58c0f5b9 100644 --- a/electron/main.cjs +++ b/electron/main.cjs @@ -64,6 +64,8 @@ function createWindow() { contextIsolation: true, webSecurity: true, preload: path.join(__dirname, "preload.js"), + partition: "persist:termix", + allowRunningInsecureContent: false, }, show: false, }); @@ -123,6 +125,20 @@ function createWindow() { delete headers["Content-Security-Policy"]; } } + + if (headers["set-cookie"]) { + headers["set-cookie"] = headers["set-cookie"].map((cookie) => { + let modified = cookie.replace(/;\s*SameSite=Strict/gi, "; SameSite=None"); + modified = modified.replace(/;\s*SameSite=Lax/gi, "; SameSite=None"); + if (!modified.includes("SameSite=")) { + modified += "; SameSite=None"; + } + if (!modified.includes("Secure") && details.url.startsWith("https")) { + modified += "; Secure"; + } + return modified; + }); + } } callback({ responseHeaders: headers }); diff --git a/src/backend/dashboard.ts b/src/backend/dashboard.ts index 8298045f..465ab9d8 100644 --- a/src/backend/dashboard.ts +++ b/src/backend/dashboard.ts @@ -37,7 +37,11 @@ app.use( return callback(null, true); } - callback(null, true); + if (origin.startsWith("http://")) { + return callback(null, true); + } + + callback(new Error("Not allowed by CORS")); }, credentials: true, methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"], diff --git a/src/backend/database/database.ts b/src/backend/database/database.ts index 38bee98d..661549b5 100644 --- a/src/backend/database/database.ts +++ b/src/backend/database/database.ts @@ -68,6 +68,10 @@ app.use( return callback(null, true); } + if (origin.startsWith("http://")) { + return callback(null, true); + } + callback(new Error("Not allowed by CORS")); }, credentials: true, diff --git a/src/backend/ssh/file-manager.ts b/src/backend/ssh/file-manager.ts index c8a8bbd0..b1e0cdba 100644 --- a/src/backend/ssh/file-manager.ts +++ b/src/backend/ssh/file-manager.ts @@ -65,7 +65,11 @@ app.use( return callback(null, true); } - callback(null, true); + if (origin.startsWith("http://")) { + return callback(null, true); + } + + callback(new Error("Not allowed by CORS")); }, credentials: true, methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"], diff --git a/src/backend/ssh/server-stats.ts b/src/backend/ssh/server-stats.ts index 6325da45..152e941d 100644 --- a/src/backend/ssh/server-stats.ts +++ b/src/backend/ssh/server-stats.ts @@ -603,7 +603,11 @@ app.use( return callback(null, true); } - callback(null, true); + if (origin.startsWith("http://")) { + return callback(null, true); + } + + callback(new Error("Not allowed by CORS")); }, credentials: true, methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"], diff --git a/src/backend/ssh/tunnel.ts b/src/backend/ssh/tunnel.ts index 8790392e..3dff10eb 100644 --- a/src/backend/ssh/tunnel.ts +++ b/src/backend/ssh/tunnel.ts @@ -41,7 +41,11 @@ app.use( return callback(null, true); } - callback(null, true); + if (origin.startsWith("http://")) { + return callback(null, true); + } + + callback(new Error("Not allowed by CORS")); }, credentials: true, methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"], diff --git a/src/main.tsx b/src/main.tsx index 31612fdf..53ff210e 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -76,25 +76,23 @@ function RootApp() { return ( <> - {isElectron() && ( -
- )} +