fix: umami + ghost issues
This commit is contained in:
@@ -173,7 +173,13 @@ const host = '0.0.0.0';
|
|||||||
// Refresh and check templates
|
// Refresh and check templates
|
||||||
setInterval(async () => {
|
setInterval(async () => {
|
||||||
await refreshTemplates()
|
await refreshTemplates()
|
||||||
|
}, 60000)
|
||||||
|
|
||||||
|
setInterval(async () => {
|
||||||
await refreshTags()
|
await refreshTags()
|
||||||
|
}, 60000)
|
||||||
|
|
||||||
|
setInterval(async () => {
|
||||||
await migrateServicesToNewTemplate()
|
await migrateServicesToNewTemplate()
|
||||||
}, 60000)
|
}, 60000)
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import cuid from "cuid";
|
import cuid from "cuid";
|
||||||
import { decrypt, encrypt, fixType, generatePassword, getDomain, prisma } from "./lib/common";
|
import { decrypt, encrypt, fixType, generatePassword, prisma } from "./lib/common";
|
||||||
import { getTemplates } from "./lib/services";
|
import { getTemplates } from "./lib/services";
|
||||||
|
|
||||||
export async function migrateServicesToNewTemplate() {
|
export async function migrateServicesToNewTemplate() {
|
||||||
@@ -253,6 +253,8 @@ async function umami(service: any, template: any) {
|
|||||||
await migrateSettings(settings, service, template);
|
await migrateSettings(settings, service, template);
|
||||||
await migrateSecrets(secrets, service);
|
await migrateSecrets(secrets, service);
|
||||||
|
|
||||||
|
await prisma.service.update({ where: { id: service.id }, data: { type: "umami-postgresql" } })
|
||||||
|
|
||||||
// Disconnect old service data
|
// Disconnect old service data
|
||||||
// await prisma.service.update({ where: { id: service.id }, data: { umami: { disconnect: true } } })
|
// await prisma.service.update({ where: { id: service.id }, data: { umami: { disconnect: true } } })
|
||||||
}
|
}
|
||||||
@@ -440,6 +442,7 @@ async function plausibleAnalytics(service: any, template: any) {
|
|||||||
|
|
||||||
async function migrateSettings(settings: any[], service: any, template: any) {
|
async function migrateSettings(settings: any[], service: any, template: any) {
|
||||||
for (const setting of settings) {
|
for (const setting of settings) {
|
||||||
|
try {
|
||||||
if (!setting) continue;
|
if (!setting) continue;
|
||||||
let [name, value] = setting.split('@@@')
|
let [name, value] = setting.split('@@@')
|
||||||
let minio = name
|
let minio = name
|
||||||
@@ -456,10 +459,14 @@ async function migrateSettings(settings: any[], service: any, template: any) {
|
|||||||
// console.log('Migrating setting', name, value, 'for service', service.id, ', service name:', service.name, 'variableName: ', variableName)
|
// console.log('Migrating setting', name, value, 'for service', service.id, ', service name:', service.name, 'variableName: ', variableName)
|
||||||
|
|
||||||
await prisma.serviceSetting.findFirst({ where: { name: minio, serviceId: service.id } }) || await prisma.serviceSetting.create({ data: { name: minio, value, variableName, service: { connect: { id: service.id } } } })
|
await prisma.serviceSetting.findFirst({ where: { name: minio, serviceId: service.id } }) || await prisma.serviceSetting.create({ data: { name: minio, value, variableName, service: { connect: { id: service.id } } } })
|
||||||
|
} catch(error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function migrateSecrets(secrets: any[], service: any) {
|
async function migrateSecrets(secrets: any[], service: any) {
|
||||||
for (const secret of secrets) {
|
for (const secret of secrets) {
|
||||||
|
try {
|
||||||
if (!secret) continue;
|
if (!secret) continue;
|
||||||
let [name, value] = secret.split('@@@')
|
let [name, value] = secret.split('@@@')
|
||||||
if (!value || value === 'null') {
|
if (!value || value === 'null') {
|
||||||
@@ -467,6 +474,9 @@ async function migrateSecrets(secrets: any[], service: any) {
|
|||||||
}
|
}
|
||||||
// console.log('Migrating secret', name, value, 'for service', service.id, ', service name:', service.name)
|
// console.log('Migrating secret', name, value, 'for service', service.id, ', service name:', service.name)
|
||||||
await prisma.serviceSecret.findFirst({ where: { name, serviceId: service.id } }) || await prisma.serviceSecret.create({ data: { name, value, service: { connect: { id: service.id } } } })
|
await prisma.serviceSecret.findFirst({ where: { name, serviceId: service.id } }) || await prisma.serviceSecret.create({ data: { name, value, service: { connect: { id: service.id } } } })
|
||||||
|
} catch(error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function createVolumes(service: any, template: any) {
|
async function createVolumes(service: any, template: any) {
|
||||||
|
@@ -17,7 +17,7 @@ import { day } from './dayjs';
|
|||||||
import { saveBuildLog } from './buildPacks/common';
|
import { saveBuildLog } from './buildPacks/common';
|
||||||
import { scheduler } from './scheduler';
|
import { scheduler } from './scheduler';
|
||||||
|
|
||||||
export const version = '3.11.1';
|
export const version = '3.11.2';
|
||||||
export const isDev = process.env.NODE_ENV === 'development';
|
export const isDev = process.env.NODE_ENV === 'development';
|
||||||
|
|
||||||
const algorithm = 'aes-256-ctr';
|
const algorithm = 'aes-256-ctr';
|
||||||
|
@@ -49,10 +49,6 @@ export async function refreshTags() {
|
|||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error)
|
console.log(error)
|
||||||
throw {
|
|
||||||
status: 500,
|
|
||||||
message: 'Could not fetch templates from get.coollabs.io'
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
@@ -73,12 +69,7 @@ export async function refreshTemplates() {
|
|||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error)
|
console.log(error)
|
||||||
throw {
|
|
||||||
status: 500,
|
|
||||||
message: 'Could not fetch templates from get.coollabs.io'
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
} catch ({ status, message }) {
|
} catch ({ status, message }) {
|
||||||
return errorHandler({ status, message });
|
return errorHandler({ status, message });
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { FastifyPluginAsync } from 'fastify';
|
import { FastifyPluginAsync } from 'fastify';
|
||||||
import { checkUpdate, login, showDashboard, update, resetQueue, getCurrentUser, cleanupManually, restartCoolify, refreshTemplates } from './handlers';
|
import { checkUpdate, login, showDashboard, update, resetQueue, getCurrentUser, cleanupManually, restartCoolify } from './handlers';
|
||||||
import { GetCurrentUser } from './types';
|
import { GetCurrentUser } from './types';
|
||||||
|
|
||||||
export interface Update {
|
export interface Update {
|
||||||
@@ -52,10 +52,6 @@ const root: FastifyPluginAsync = async (fastify): Promise<void> => {
|
|||||||
fastify.post('/internal/cleanup', {
|
fastify.post('/internal/cleanup', {
|
||||||
onRequest: [fastify.authenticate]
|
onRequest: [fastify.authenticate]
|
||||||
}, async (request) => await cleanupManually(request));
|
}, async (request) => await cleanupManually(request));
|
||||||
|
|
||||||
fastify.post('/internal/refreshTemplates', {
|
|
||||||
onRequest: [fastify.authenticate]
|
|
||||||
}, async () => await refreshTemplates());
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default root;
|
export default root;
|
||||||
|
@@ -79,9 +79,7 @@
|
|||||||
$isDeploymentEnabled = checkIfDeploymentEnabledServices($appSession.isAdmin, service);
|
$isDeploymentEnabled = checkIfDeploymentEnabledServices($appSession.isAdmin, service);
|
||||||
|
|
||||||
let statusInterval: any;
|
let statusInterval: any;
|
||||||
let loading = {
|
|
||||||
refreshTemplates: false
|
|
||||||
};
|
|
||||||
|
|
||||||
async function deleteService() {
|
async function deleteService() {
|
||||||
const sure = confirm($t('application.confirm_to_delete', { name: service.name }));
|
const sure = confirm($t('application.confirm_to_delete', { name: service.name }));
|
||||||
@@ -106,20 +104,6 @@
|
|||||||
await startService();
|
await startService();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function refreshTemplate() {
|
|
||||||
try {
|
|
||||||
loading.refreshTemplates = true;
|
|
||||||
await post(`/internal/refreshTemplates`, {});
|
|
||||||
addToast({
|
|
||||||
message: 'Services refreshed.',
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
return errorNotification(error);
|
|
||||||
} finally {
|
|
||||||
loading.refreshTemplates = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
async function stopService(skip = false) {
|
async function stopService(skip = false) {
|
||||||
if (skip) {
|
if (skip) {
|
||||||
$status.service.initialLoading = true;
|
$status.service.initialLoading = true;
|
||||||
@@ -278,14 +262,6 @@
|
|||||||
Delete Service
|
Delete Service
|
||||||
</button>
|
</button>
|
||||||
{/if}
|
{/if}
|
||||||
{#if $page.url.pathname === `/services/${id}/configuration/type` && dev}
|
|
||||||
<button
|
|
||||||
disabled={loading.refreshTemplates}
|
|
||||||
class:loading={loading.refreshTemplates}
|
|
||||||
class="btn btn-sm btn-primary text-sm"
|
|
||||||
on:click={refreshTemplate}>Refresh Services List</button
|
|
||||||
>
|
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<div
|
<div
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "coolify",
|
"name": "coolify",
|
||||||
"description": "An open-source & self-hostable Heroku / Netlify alternative.",
|
"description": "An open-source & self-hostable Heroku / Netlify alternative.",
|
||||||
"version": "3.11.1",
|
"version": "3.11.2",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"repository": "github:coollabsio/coolify",
|
"repository": "github:coollabsio/coolify",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
Reference in New Issue
Block a user