From 72a7ea6e91ea313a766c135f509aee71705eafc0 Mon Sep 17 00:00:00 2001 From: Kaname <56084970+kaname-png@users.noreply.github.com> Date: Mon, 12 Dec 2022 15:48:23 +0000 Subject: [PATCH 01/35] feat(ui): add libretranslate service icon --- apps/ui/static/icons/libretranslate.png | Bin 0 -> 2329 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/ui/static/icons/libretranslate.png diff --git a/apps/ui/static/icons/libretranslate.png b/apps/ui/static/icons/libretranslate.png new file mode 100644 index 0000000000000000000000000000000000000000..b22316b68597295cb1ae8dcd04c4608b6b1f62d0 GIT binary patch literal 2329 zcmZ{mc{~%0AIE1TjkUz&CdZt=4AH8s9COSy2`zJGO;L`BWx1DJsX1e`+{zUqSDCr* zEa!xY5IHJ6tdytckKgmx@At>&`+0pn|9-!(*Y_Q7YhwlmNrC_X02pJAw)^9_e zGk@=tcmeDZz=t))iq-c4x?B$H*joF=b z&Ar9hFhKJQa)?)GYXto4&d|nY&hRhP(1OthVx7+zKza#|gG$Ih5;|heFQCNBm%;<= z1w;`d4Rj3T|E+b{{CsZ(8`BC63S7KDW#&fP#B@o=am7AoNhdG>kylI*bFh|6We1ZU z<0YqWc8DK%Xr+X}na~3~1^KKQA`+`g=}<((C6?F9B=CzpEGzqI_9#mI?EC!)T?Lfz z&o&Duva&MI`G#1Q*EWtv*o;XXv_h_v!?0rCbA?dB+m8W;?ps}AFh#XUZ3O>$GGz#x z*pNGNQ2Tyt0e3sY{>q1hnIik(=VT>gh7`>j>qSL~8S2JumqduP(djmVnz#|qV!dw; zAYb9bnYH^3ip4N@%kq`eR0Ogq?x}ynxQ1Cz%C(`mAdSDKWd?LMp#jBFelqra5;o&o zw^6QM%fF$cmOg6gIxsVEN0-Si`62C?GD*UAL@kV^nH&)uzcqffvbVBE9zIF8e(l0Q z5KH;nhr>b7x>SM!si@e)xKT0+Ckm)hR8~?-kWW@oT2yypZ-b zzXxod6tbZe+a}2q5%oL+G{?>Oe9-xEIQk;my3`ubC21>LpdXxVzVCEG_1 z;vmNPL&ux)~6rJF=Mid#c({MMY!m-f(kjY|Ruh4kUOBZ}+z4H_c+v_j^n zVCDv9&dEZ0cJZ=0h#_CrayNOMHnj3|>0-Jm_Z6VWCD^YjD$w^y`a|#r&XKaWPmLci0I%F`1FkBj2x$-AxL( zC@l^l9Cz@VI@qo^_3={wWcRyxdX*O}KPCK>sKc$wBWq+`o@%)4`IkI*RC(X;T7csA z7hu|6veb0+-g^Dk9_{bIj z4W6nsG4ey9179SthB>gQnr2`#`-82Mw60KP{-dA~gi`mjZp<2E8v>`ceK^^vaRPW? zMm5qrxxF01GBb=GZ~J7Z8P|R7K~bVeyI-)VLAhJ$li;w*rzt(38(o8!iue<-#1hrW z9_+1iaX8yRy zXDi6EO`b*^w3kGDy3{#TMDUOmfg5`YkOstdM>hM5HRoxfP0^F7CP!0+8uZdt2RsMD z1zQ=WIK8#}N<8@Z65fBm#kY$E>F6UMv4O68-|9(?@5)MFp1!yHUCcBU&vUQ6_Vn|z z!>3wYdT)cvx(8-&sLx0~Suj>PqICGYQ$@WJPWYVf(PW3Mecx|as+H3x=@m?Nu1WE= z)n8B-CLB`qz#H0U#moa+;m*jMi6Wi2KU!ZqR0l%Ym^g9>;E3W2k51-w1U3dmJrJ+j zmhHK);B7-`O|C=sO&2AutG|Kv?pEn@zb6}K%F4f~rjSe*QZ8;0Ru<^W2P{_avG~Ik znnbUPFQuiC%KbGw$3Fu~q_{)X;`WZ5kV{;fLEzLIil#tN4W%$H2It-BdM9nU$>KUxwD z2lR~R9ZjXUqdOK}v@pR<5NW*U*lSk2_eNjXr$J;@Y-#F!k+B@?=CWg}vt3n2_<|}T z+s`Qr85p7nzi7qT9lMQ6VJHIQ05|zV{g2e$o%x%gboi73ZAw z!lT!T9(rwOr>)nH4ZJN7h(#Ku#MrLuS%7e~2?txO1zcXwWWwX@FEj6H{^V12DuSxwws`V)B7j;nBq z6y?ut`z?TP`8VW@jhADjp9~j0TzVIzI%ERi;|~-co;#HODpAgv{(SK5vYm4_uu`>M zuIiiIj8MIXXeVNB;x>#>56)Y2+ULH**bETmS$7 literal 0 HcmV?d00001 From ce3750c51c3884576f397bd1b0790fa3df52d195 Mon Sep 17 00:00:00 2001 From: hyddeos Date: Mon, 12 Dec 2022 17:38:45 +0100 Subject: [PATCH 02/35] Add link document to Mobile-menu --- apps/ui/src/routes/__layout.svelte | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/apps/ui/src/routes/__layout.svelte b/apps/ui/src/routes/__layout.svelte index ce779bda3..e396373ec 100644 --- a/apps/ui/src/routes/__layout.svelte +++ b/apps/ui/src/routes/__layout.svelte @@ -495,6 +495,30 @@ Settings +
  • + + + + + Documentation + +
  • From 0f2160222fc27a5d7aee636bf3e0957a549f2dad Mon Sep 17 00:00:00 2001 From: hyddeos Date: Mon, 12 Dec 2022 17:45:04 +0100 Subject: [PATCH 03/35] Add Documents link to Mobile-Menu --- apps/ui/src/routes/__layout.svelte | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/apps/ui/src/routes/__layout.svelte b/apps/ui/src/routes/__layout.svelte index e396373ec..1332ddbf8 100644 --- a/apps/ui/src/routes/__layout.svelte +++ b/apps/ui/src/routes/__layout.svelte @@ -161,8 +161,6 @@ Settings - Documentation Logout
  • -
  • - - - - - Documentation - -
  • From 0d51b04d79d55de0dcd41c70c1515ba234717f4a Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 18 Dec 2022 14:13:49 +0100 Subject: [PATCH 06/35] feat: adding icon for whoogle --- apps/ui/static/icons/whoogle.png | Bin 0 -> 10193 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/ui/static/icons/whoogle.png diff --git a/apps/ui/static/icons/whoogle.png b/apps/ui/static/icons/whoogle.png new file mode 100644 index 0000000000000000000000000000000000000000..5908757485333a0e895468a51b458eb3aa31d9ff GIT binary patch literal 10193 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 Y7JR_`w5g2#U7!Q0D!za=$Xi7IFV|i#_5c6? literal 0 HcmV?d00001 From ed24a9c990c720c4709edcafa1f50c04cbd04020 Mon Sep 17 00:00:00 2001 From: hyddeos Date: Mon, 19 Dec 2022 20:02:24 +0100 Subject: [PATCH 07/35] fix the consol error on documentation hover --- apps/ui/src/routes/__layout.svelte | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/ui/src/routes/__layout.svelte b/apps/ui/src/routes/__layout.svelte index d71367a6c..91374f0c3 100644 --- a/apps/ui/src/routes/__layout.svelte +++ b/apps/ui/src/routes/__layout.svelte @@ -299,10 +299,9 @@ Date: Mon, 19 Dec 2022 20:33:22 +0100 Subject: [PATCH 08/35] Change of link "rel" to "external" To prevent hover console-error like on the documentations-icon in the desktop mode --- apps/ui/src/routes/__layout.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ui/src/routes/__layout.svelte b/apps/ui/src/routes/__layout.svelte index 79c4da76c..2f315b9cd 100644 --- a/apps/ui/src/routes/__layout.svelte +++ b/apps/ui/src/routes/__layout.svelte @@ -475,7 +475,7 @@ class="no-underline icons hover:text-white hover:bg-info" href="https://docs.coollabs.io/coolify/" target="_blank" - rel="noopener noreferrer" + rel="noreferrer external" > Date: Wed, 21 Dec 2022 14:55:13 +0100 Subject: [PATCH 09/35] Add support for custom SSH user for GitLab self-hosted --- .../migration.sql | 27 +++++++++++++++++++ apps/api/prisma/schema.prisma | 1 + apps/api/src/jobs/deployApplication.ts | 1 + apps/api/src/lib/importers/gitlab.ts | 6 +++-- .../api/src/routes/api/v1/sources/handlers.ts | 14 +++++----- apps/api/src/routes/api/v1/sources/types.ts | 1 + apps/server/prisma/schema.prisma | 1 + .../ui/src/routes/sources/[id]/_Gitlab.svelte | 22 +++++++++++++-- 8 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 apps/api/prisma/migrations/20221221140911_git_source_custom_user/migration.sql diff --git a/apps/api/prisma/migrations/20221221140911_git_source_custom_user/migration.sql b/apps/api/prisma/migrations/20221221140911_git_source_custom_user/migration.sql new file mode 100644 index 000000000..d9d5a7204 --- /dev/null +++ b/apps/api/prisma/migrations/20221221140911_git_source_custom_user/migration.sql @@ -0,0 +1,27 @@ +-- RedefineTables +PRAGMA foreign_keys=OFF; +CREATE TABLE "new_GitSource" ( + "id" TEXT NOT NULL PRIMARY KEY, + "name" TEXT NOT NULL, + "forPublic" BOOLEAN NOT NULL DEFAULT false, + "type" TEXT, + "apiUrl" TEXT, + "htmlUrl" TEXT, + "customPort" INTEGER NOT NULL DEFAULT 22, + "customUser" TEXT NOT NULL DEFAULT 'git', + "organization" TEXT, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL, + "githubAppId" TEXT, + "gitlabAppId" TEXT, + "isSystemWide" BOOLEAN NOT NULL DEFAULT false, + CONSTRAINT "GitSource_gitlabAppId_fkey" FOREIGN KEY ("gitlabAppId") REFERENCES "GitlabApp" ("id") ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT "GitSource_githubAppId_fkey" FOREIGN KEY ("githubAppId") REFERENCES "GithubApp" ("id") ON DELETE SET NULL ON UPDATE CASCADE +); +INSERT INTO "new_GitSource" ("apiUrl", "createdAt", "customPort", "forPublic", "githubAppId", "gitlabAppId", "htmlUrl", "id", "isSystemWide", "name", "organization", "type", "updatedAt") SELECT "apiUrl", "createdAt", "customPort", "forPublic", "githubAppId", "gitlabAppId", "htmlUrl", "id", "isSystemWide", "name", "organization", "type", "updatedAt" FROM "GitSource"; +DROP TABLE "GitSource"; +ALTER TABLE "new_GitSource" RENAME TO "GitSource"; +CREATE UNIQUE INDEX "GitSource_githubAppId_key" ON "GitSource"("githubAppId"); +CREATE UNIQUE INDEX "GitSource_gitlabAppId_key" ON "GitSource"("gitlabAppId"); +PRAGMA foreign_key_check; +PRAGMA foreign_keys=ON; diff --git a/apps/api/prisma/schema.prisma b/apps/api/prisma/schema.prisma index 54eefc504..1e9b75aa5 100644 --- a/apps/api/prisma/schema.prisma +++ b/apps/api/prisma/schema.prisma @@ -325,6 +325,7 @@ model GitSource { apiUrl String? htmlUrl String? customPort Int @default(22) + customUser String @default("git") organization String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt diff --git a/apps/api/src/jobs/deployApplication.ts b/apps/api/src/jobs/deployApplication.ts index 6f79b94e8..cc3740af4 100644 --- a/apps/api/src/jobs/deployApplication.ts +++ b/apps/api/src/jobs/deployApplication.ts @@ -419,6 +419,7 @@ import * as buildpacks from '../lib/buildPacks'; githubAppId: gitSource.githubApp?.id, gitlabAppId: gitSource.gitlabApp?.id, customPort: gitSource.customPort, + customUser: gitSource.customUser, gitCommitHash, configuration, repository, diff --git a/apps/api/src/lib/importers/gitlab.ts b/apps/api/src/lib/importers/gitlab.ts index eef9b62ef..d75c3bbef 100644 --- a/apps/api/src/lib/importers/gitlab.ts +++ b/apps/api/src/lib/importers/gitlab.ts @@ -12,7 +12,8 @@ export default async function ({ buildId, privateSshKey, customPort, - forPublic + forPublic, + customUser, }: { applicationId: string; workdir: string; @@ -25,6 +26,7 @@ export default async function ({ privateSshKey: string; customPort: number; forPublic: boolean; + customUser: string; }): Promise { const url = htmlUrl.replace('https://', '').replace('http://', '').replace(/\/$/, ''); if (!forPublic) { @@ -53,7 +55,7 @@ export default async function ({ } else { await executeCommand({ command: - `git clone -q -b ${branch} git@${url}:${repository}.git --config core.sshCommand="ssh -p ${customPort} -q -i ${repodir}id.rsa -o StrictHostKeyChecking=no" ${workdir}/ && cd ${workdir}/ && git checkout ${gitCommitHash || ""} && git submodule update --init --recursive && git lfs pull && cd .. `, shell: true + `git clone -q -b ${branch} ${customUser}@${url}:${repository}.git --config core.sshCommand="ssh -p ${customPort} -q -i ${repodir}id.rsa -o StrictHostKeyChecking=no" ${workdir}/ && cd ${workdir}/ && git checkout ${gitCommitHash || ""} && git submodule update --init --recursive && git lfs pull && cd .. `, shell: true } ); } diff --git a/apps/api/src/routes/api/v1/sources/handlers.ts b/apps/api/src/routes/api/v1/sources/handlers.ts index e33652571..b4bd81aa4 100644 --- a/apps/api/src/routes/api/v1/sources/handlers.ts +++ b/apps/api/src/routes/api/v1/sources/handlers.ts @@ -22,11 +22,11 @@ export async function listSources(request: FastifyRequest) { export async function saveSource(request, reply) { try { const { id } = request.params - let { name, htmlUrl, apiUrl, customPort, isSystemWide } = request.body + let { name, htmlUrl, apiUrl, customPort, customUser, isSystemWide } = request.body if (customPort) customPort = Number(customPort) await prisma.gitSource.update({ where: { id }, - data: { name, htmlUrl, apiUrl, customPort, isSystemWide } + data: { name, htmlUrl, apiUrl, customPort, customUser, isSystemWide } }); return reply.code(201).send() } catch ({ status, message }) { @@ -48,6 +48,7 @@ export async function getSource(request: FastifyRequest) { apiUrl: null, organization: null, customPort: 22, + customUser: 'git', }, settings } @@ -102,7 +103,7 @@ export async function saveGitHubSource(request: FastifyRequest const { teamId } = request.user const { id } = request.params - let { name, htmlUrl, apiUrl, organization, customPort, isSystemWide } = request.body + let { name, htmlUrl, apiUrl, organization, customPort, customUser, isSystemWide } = request.body if (customPort) customPort = Number(customPort) if (id === 'new') { @@ -115,6 +116,7 @@ export async function saveGitHubSource(request: FastifyRequest apiUrl, organization, customPort, + customUser, isSystemWide, type: 'github', teams: { connect: { id: teamId } } @@ -133,7 +135,7 @@ export async function saveGitLabSource(request: FastifyRequest try { const { id } = request.params const { teamId } = request.user - let { type, name, htmlUrl, apiUrl, oauthId, appId, appSecret, groupName, customPort } = + let { type, name, htmlUrl, apiUrl, oauthId, appId, appSecret, groupName, customPort, customUser } = request.body if (oauthId) oauthId = Number(oauthId); @@ -142,7 +144,7 @@ export async function saveGitLabSource(request: FastifyRequest if (id === 'new') { const newId = cuid() - await prisma.gitSource.create({ data: { id: newId, type, apiUrl, htmlUrl, name, customPort, teams: { connect: { id: teamId } } } }); + await prisma.gitSource.create({ data: { id: newId, type, apiUrl, htmlUrl, name, customPort, customUser, teams: { connect: { id: teamId } } } }); await prisma.gitlabApp.create({ data: { teams: { connect: { id: teamId } }, @@ -158,7 +160,7 @@ export async function saveGitLabSource(request: FastifyRequest id: newId } } else { - await prisma.gitSource.update({ where: { id }, data: { type, apiUrl, htmlUrl, name, customPort } }); + await prisma.gitSource.update({ where: { id }, data: { type, apiUrl, htmlUrl, name, customPort, customUser } }); await prisma.gitlabApp.update({ where: { id }, data: { diff --git a/apps/api/src/routes/api/v1/sources/types.ts b/apps/api/src/routes/api/v1/sources/types.ts index bb65c7d85..bbccd2e7b 100644 --- a/apps/api/src/routes/api/v1/sources/types.ts +++ b/apps/api/src/routes/api/v1/sources/types.ts @@ -21,6 +21,7 @@ export interface SaveGitLabSource extends OnlyId { appSecret: string, groupName: string, customPort: number, + customUser: string, } } export interface CheckGitLabOAuthId extends OnlyId { diff --git a/apps/server/prisma/schema.prisma b/apps/server/prisma/schema.prisma index 54eefc504..1e9b75aa5 100644 --- a/apps/server/prisma/schema.prisma +++ b/apps/server/prisma/schema.prisma @@ -325,6 +325,7 @@ model GitSource { apiUrl String? htmlUrl String? customPort Int @default(22) + customUser String @default("git") organization String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt diff --git a/apps/ui/src/routes/sources/[id]/_Gitlab.svelte b/apps/ui/src/routes/sources/[id]/_Gitlab.svelte index 6f724ead2..a7c850824 100644 --- a/apps/ui/src/routes/sources/[id]/_Gitlab.svelte +++ b/apps/ui/src/routes/sources/[id]/_Gitlab.svelte @@ -51,7 +51,8 @@ appId: source.gitlabApp.appId, appSecret: source.gitlabApp.appSecret, groupName: source.gitlabApp.groupName, - customPort: source.customPort + customPort: source.customPort, + customUser: source.customUser, }); const from = $page.url.searchParams.get('from'); if (from) { @@ -70,7 +71,8 @@ name: source.name, htmlUrl: source.htmlUrl.replace(/\/$/, ''), apiUrl: source.apiUrl.replace(/\/$/, ''), - customPort: source.customPort + customPort: source.customPort, + customuser: source.customuser }); return addToast({ message: 'Configuration saved.', @@ -244,6 +246,22 @@ />
    {#if selfHosted} +
    + + +
  • - {#if application.gitSourceId} + {#if application.gitSourceId && $appSession.isAdmin}
  • {/if} + {#if $appSession.isAdmin}
  • Danger Zone
  • + {/if} diff --git a/apps/ui/src/routes/applications/[id]/_PreviewSecret.svelte b/apps/ui/src/routes/applications/[id]/_PreviewSecret.svelte index 99a6a5f94..3dba6e30f 100644 --- a/apps/ui/src/routes/applications/[id]/_PreviewSecret.svelte +++ b/apps/ui/src/routes/applications/[id]/_PreviewSecret.svelte @@ -9,7 +9,7 @@ import { del, post, put } from '$lib/api'; import { errorNotification } from '$lib/common'; import CopyPasswordField from '$lib/components/CopyPasswordField.svelte'; - import { addToast } from '$lib/store'; + import { addToast, appSession } from '$lib/store'; import { t } from '$lib/translations'; import { createEventDispatcher } from 'svelte'; @@ -120,6 +120,7 @@