mirror of
https://github.com/crocofied/CoreControl.git
synced 2025-12-29 16:14:43 +00:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d02f5f237 | ||
|
|
a2b9d92dd4 | ||
|
|
109463f242 | ||
|
|
2b9b7a5960 | ||
|
|
9f3f1b56e2 | ||
|
|
b5d6b42100 | ||
|
|
275d332d23 | ||
|
|
022465b383 | ||
|
|
135b3684a9 | ||
|
|
c212986fb5 | ||
|
|
dbf86ab283 | ||
|
|
1ad84e7ea3 | ||
|
|
1b75d95be4 | ||
|
|
634c7aaec3 | ||
|
|
799a292471 | ||
|
|
c624ddafb2 | ||
|
|
ce8739181a | ||
|
|
cf177d587c |
42
Dockerfile
42
Dockerfile
@@ -1,22 +1,22 @@
|
||||
# Builder Stage
|
||||
FROM --platform=$BUILDPLATFORM node:20-alpine AS builder
|
||||
|
||||
ARG TARGETARCH # Wird automatisch von Buildx gesetzt
|
||||
ARG TARGETARCH # Automatically set by Buildx
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN case ${TARGETARCH} in \
|
||||
"amd64") export PRISMA_CLI_BINARY_TARGETS="linux-musl-x64-openssl-3.0.x" ;; \
|
||||
"arm64") export PRISMA_CLI_BINARY_TARGETS="linux-musl-arm64-openssl-3.0.x" ;; \
|
||||
"arm") export PRISMA_CLI_BINARY_TARGETS="linux-musl-arm-openssl-3.0.x" ;; \
|
||||
*) echo "Unsupported ARCH: ${TARGETARCH}" && exit 1 ;; \
|
||||
esac
|
||||
|
||||
COPY package.json package-lock.json* ./
|
||||
COPY ./prisma ./prisma
|
||||
|
||||
RUN npm install
|
||||
RUN npx prisma generate
|
||||
# Set PRISMA_CLI_BINARY_TARGETS based on TARGETARCH and install dependencies
|
||||
RUN case ${TARGETARCH} in \
|
||||
"amd64") export PRISMA_CLI_BINARY_TARGETS="linux-musl-openssl-3.0.x" ;; \
|
||||
"arm64") export PRISMA_CLI_BINARY_TARGETS="linux-musl-arm64-openssl-3.0.x" ;; \
|
||||
"arm") export PRISMA_CLI_BINARY_TARGETS="linux-musl-arm-openssl-3.0.x" ;; \
|
||||
*) echo "Unsupported ARCH: ${TARGETARCH}" && exit 1 ;; \
|
||||
esac && \
|
||||
npm install && \
|
||||
npx prisma generate
|
||||
|
||||
COPY . .
|
||||
RUN npm run build
|
||||
@@ -27,8 +27,8 @@ FROM --platform=$TARGETPLATFORM node:20-alpine AS production
|
||||
WORKDIR /app
|
||||
|
||||
ENV NODE_ENV production
|
||||
ENV PRISMA_CLI_BINARY_TARGETS="linux-musl-arm64-openssl-3.0.x"
|
||||
|
||||
# Copy built assets and dependencies from builder
|
||||
COPY --from=builder /app/node_modules ./node_modules
|
||||
COPY --from=builder /app/prisma ./prisma
|
||||
COPY --from=builder /app/.next ./.next
|
||||
@@ -36,16 +36,18 @@ COPY --from=builder /app/public ./public
|
||||
COPY --from=builder /app/package.json ./package.json
|
||||
COPY --from=builder /app/next.config.js* ./
|
||||
|
||||
# Prune dev dependencies
|
||||
RUN npm prune --production
|
||||
|
||||
EXPOSE 3000
|
||||
CMD ["sh", "-c", "npx prisma migrate deploy && npm start"]
|
||||
|
||||
|
||||
# - - BUILD COMMAND - -
|
||||
# docker buildx build \
|
||||
# --platform linux/amd64,linux/arm64,linux/arm/v7 \
|
||||
# -t haedlessdev/corecontrol:1.0.0 \
|
||||
# -t haedlessdev/corecontrol:latest \
|
||||
# --push \
|
||||
# .
|
||||
# Dynamically set PRISMA_CLI_BINARY_TARGETS based on runtime architecture and start
|
||||
CMD ["sh", "-c", "\
|
||||
export PRISMA_CLI_BINARY_TARGETS=$(case $(uname -m) in \
|
||||
x86_64) echo linux-musl-openssl-3.0.x ;; \
|
||||
aarch64) echo linux-musl-arm64-openssl-3.0.x ;; \
|
||||
armv7l) echo linux-musl-arm-openssl-3.0.x ;; \
|
||||
*) echo \"Unsupported architecture: $(uname -m)\" && exit 1 ;; \
|
||||
esac) && \
|
||||
npx prisma migrate deploy && \
|
||||
npm start"]
|
||||
@@ -96,7 +96,7 @@ __Password:__ admin
|
||||
|
||||
The application is build with:
|
||||
- Next.js & Typescript
|
||||
- Go (for the agent)
|
||||
- Go (used for the agent)
|
||||
- Tailwindcss with [shadcn](shadcn.com)
|
||||
- PostgreSQL with [Prisma ORM](https://www.prisma.io/)
|
||||
- Icons by [Lucide](https://lucide.dev/)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { NextResponse, NextRequest } from "next/server";
|
||||
import jwt from 'jsonwebtoken';
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import bcrypt from 'bcrypt';
|
||||
import bcrypt from 'bcryptjs';
|
||||
|
||||
interface EditEmailRequest {
|
||||
oldPassword: string;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { NextResponse, NextRequest } from "next/server";
|
||||
import jwt from 'jsonwebtoken';
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import bcrypt from 'bcrypt';
|
||||
import bcrypt from 'bcryptjs';
|
||||
|
||||
interface LoginRequest {
|
||||
username: string;
|
||||
|
||||
@@ -15,13 +15,17 @@ interface AddRequest {
|
||||
disk: string;
|
||||
monitoring: boolean;
|
||||
monitoringURL: string;
|
||||
|
||||
m_cpu: boolean;
|
||||
m_gpu: boolean;
|
||||
m_ram: boolean;
|
||||
m_disk: boolean;
|
||||
m_temp: boolean;
|
||||
}
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
const body: AddRequest = await request.json();
|
||||
const { host, hostServer, name, icon, os, ip, url, cpu, gpu, ram, disk, monitoring, monitoringURL } = body;
|
||||
const { host, hostServer, name, icon, os, ip, url, cpu, gpu, ram, disk, monitoring, monitoringURL, m_cpu, m_gpu, m_ram, m_disk, m_temp } = body;
|
||||
|
||||
const server = await prisma.server.create({
|
||||
data: {
|
||||
@@ -37,7 +41,12 @@ export async function POST(request: NextRequest) {
|
||||
ram,
|
||||
disk,
|
||||
monitoring,
|
||||
monitoringURL
|
||||
monitoringURL,
|
||||
m_cpu,
|
||||
m_gpu,
|
||||
m_ram,
|
||||
m_disk,
|
||||
m_temp
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -16,12 +16,17 @@ interface EditRequest {
|
||||
disk: string;
|
||||
monitoring: boolean;
|
||||
monitoringURL: string;
|
||||
m_cpu: boolean;
|
||||
m_gpu: boolean;
|
||||
m_ram: boolean;
|
||||
m_disk: boolean;
|
||||
m_temp: boolean;
|
||||
}
|
||||
|
||||
export async function PUT(request: NextRequest) {
|
||||
try {
|
||||
const body: EditRequest = await request.json();
|
||||
const { host, hostServer, id, name, icon, os, ip, url, cpu, gpu, ram, disk, monitoring, monitoringURL } = body;
|
||||
const { host, hostServer, id, name, icon, os, ip, url, cpu, gpu, ram, disk, monitoring, monitoringURL, m_cpu, m_gpu, m_ram, m_disk, m_temp } = body;
|
||||
|
||||
const existingServer = await prisma.server.findUnique({ where: { id } });
|
||||
if (!existingServer) {
|
||||
@@ -50,7 +55,12 @@ export async function PUT(request: NextRequest) {
|
||||
ram,
|
||||
disk,
|
||||
monitoring,
|
||||
monitoringURL
|
||||
monitoringURL,
|
||||
m_cpu,
|
||||
m_gpu,
|
||||
m_ram,
|
||||
m_disk,
|
||||
m_temp
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -275,19 +275,33 @@ export default function Settings() {
|
||||
|
||||
useEffect(() => {
|
||||
const language = Cookies.get("language")
|
||||
if (language === "en") {
|
||||
setLanguage("english")
|
||||
} else if (language === "de") {
|
||||
setLanguage("german")
|
||||
switch (language) {
|
||||
case "de":
|
||||
setLanguage("german")
|
||||
break;
|
||||
case "es":
|
||||
setLanguage("spanish")
|
||||
break;
|
||||
case "en":
|
||||
default:
|
||||
setLanguage("english")
|
||||
break;
|
||||
}
|
||||
}, [])
|
||||
|
||||
const setLanguageFunc = (value: string) => {
|
||||
setLanguage(value)
|
||||
if (value === "english") {
|
||||
Cookies.set("language", "en")
|
||||
} else if (value === "german") {
|
||||
Cookies.set("language", "de")
|
||||
switch (value) {
|
||||
case "german":
|
||||
Cookies.set("language", "de")
|
||||
break;
|
||||
case "spanish":
|
||||
Cookies.set("language", "es")
|
||||
break;
|
||||
case "english":
|
||||
default:
|
||||
Cookies.set("language", "en")
|
||||
break;
|
||||
}
|
||||
// Reload the page
|
||||
window.location.reload()
|
||||
@@ -468,6 +482,7 @@ export default function Settings() {
|
||||
<SelectContent>
|
||||
<SelectItem value="english">{t('Settings.LanguageSettings.English')}</SelectItem>
|
||||
<SelectItem value="german">{t('Settings.LanguageSettings.German')}</SelectItem>
|
||||
<SelectItem value="spanish">{t('Settings.LanguageSettings.Spanish')}</SelectItem>
|
||||
</SelectContent>
|
||||
</Select>
|
||||
</div>
|
||||
@@ -653,8 +668,8 @@ export default function Settings() {
|
||||
type="text"
|
||||
onChange={(e) => setNtfyToken(e.target.value)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -699,7 +714,7 @@ export default function Settings() {
|
||||
<span className="text-xs text-muted-foreground">{t('Settings.Notifications.AddNotification.Echobell.AddMessage')}</span>
|
||||
</div>
|
||||
)}
|
||||
|
||||
|
||||
</Select>
|
||||
</div>
|
||||
</AlertDialogDescription>
|
||||
@@ -810,7 +825,7 @@ export default function Settings() {
|
||||
)}
|
||||
<div className="space-y-1">
|
||||
<h3 className="font-medium capitalize">
|
||||
{notification.name ||
|
||||
{notification.name ||
|
||||
t(`Settings.Notifications.AddNotification.${notification.type.charAt(0).toUpperCase() + notification.type.slice(1)}.Title`)}
|
||||
</h3>
|
||||
<p className="text-xs text-muted-foreground">
|
||||
|
||||
6
docs/.vitepress/dist/general/Settings.html
vendored
6
docs/.vitepress/dist/general/Settings.html
vendored
File diff suppressed because one or more lines are too long
@@ -14,7 +14,7 @@ With the theme settings you have the choice between light and dark mode. There i
|
||||
## Language Settings
|
||||

|
||||
|
||||
To promote internationalization (also often known as i18n), you can select the language in which you want everything to be displayed within CoreControl. Currently there is the standard language “English” and the language German.
|
||||
To promote internationalization (also often known as i18n), you can select the language in which you want everything to be displayed within CoreControl. Currently there is the standard language “English”, German and Spanish.
|
||||
|
||||
## Notification Settings
|
||||

|
||||
|
||||
@@ -350,6 +350,7 @@
|
||||
"Type": "Typ",
|
||||
"SMTP": {
|
||||
"Title": "SMTP",
|
||||
"Description": "Sende Benachrichtigungen via SMTP",
|
||||
"Host": "SMTP-Host",
|
||||
"Port": "SMTP-Port",
|
||||
"Secure": "Sichere Verbindung (TLS/SSL)",
|
||||
@@ -360,31 +361,37 @@
|
||||
},
|
||||
"Telegram": {
|
||||
"Title": "Telegram",
|
||||
"Description": "Sende Benachrichtigungen via Telegram",
|
||||
"Token": "Bot-Token",
|
||||
"ChatId": "Chat-ID"
|
||||
},
|
||||
"Discord": {
|
||||
"Title": "Discord",
|
||||
"Description": "Sende Benachrichtigungen via Discord",
|
||||
"Webhook": "Webhook-URL"
|
||||
},
|
||||
"Gotify": {
|
||||
"Title": "Gotify",
|
||||
"Description": "Sende Benachrichtigungen via Gotify",
|
||||
"Url": "Gotify-URL",
|
||||
"Token": "Gotify-Token"
|
||||
},
|
||||
"Ntfy": {
|
||||
"Title": "Ntfy",
|
||||
"Description": "Sende Benachrichtigungen via Ntfy",
|
||||
"Url": "Ntfy-URL",
|
||||
"Token": "Ntfy-Token"
|
||||
},
|
||||
"Pushover": {
|
||||
"Title": "Pushover",
|
||||
"Description": "Sende Benachrichtigungen via Pushover",
|
||||
"Url": "Pushover-URL",
|
||||
"Token": "Pushover-Token",
|
||||
"User": "Pushover-Benutzer"
|
||||
},
|
||||
"Echobell": {
|
||||
"Title": "Echobell",
|
||||
"Description": "Sende Benachrichtigungen via Echobell",
|
||||
"Url": "Echobell-URL",
|
||||
"AddMessage": "Füge in Echobell den \"message\" Feld hinzu."
|
||||
}
|
||||
|
||||
@@ -350,6 +350,7 @@
|
||||
"Type": "Notification Type",
|
||||
"SMTP": {
|
||||
"Title": "SMTP",
|
||||
"Description": "Send notifications via SMTP",
|
||||
"Host": "SMTP Host",
|
||||
"Port": "SMTP Port",
|
||||
"Secure": "Secure Connection (TLS/SSL)",
|
||||
@@ -360,31 +361,37 @@
|
||||
},
|
||||
"Telegram": {
|
||||
"Title": "Telegram",
|
||||
"Description": "Send notifications via Telegram",
|
||||
"Token": "Bot Token",
|
||||
"ChatId": "Chat ID"
|
||||
},
|
||||
"Discord": {
|
||||
"Title": "Discord",
|
||||
"Description": "Send notifications via Discord",
|
||||
"Webhook": "Webhook URL"
|
||||
},
|
||||
"Gotify": {
|
||||
"Title": "Gotify",
|
||||
"Description": "Send notifications via Gotify",
|
||||
"Url": "Gotify URL",
|
||||
"Token": "Gotify Token"
|
||||
},
|
||||
"Ntfy": {
|
||||
"Title": "Ntfy",
|
||||
"Description": "Send notifications via Ntfy",
|
||||
"Url": "Ntfy URL",
|
||||
"Token": "Ntfy Token"
|
||||
},
|
||||
"Pushover": {
|
||||
"Title": "Pushover",
|
||||
"Description": "Send notifications via Pushover",
|
||||
"Url": "Pushover URL",
|
||||
"Token": "Pushover Token",
|
||||
"User": "Pushover User"
|
||||
},
|
||||
"Echobell": {
|
||||
"Title": "Echobell",
|
||||
"Description": "Send notifications via Echobell",
|
||||
"Url": "Echobell URL",
|
||||
"AddMessage": "Add in Echobell the \"message\" field."
|
||||
}
|
||||
|
||||
424
i18n/languages/es.json
Normal file
424
i18n/languages/es.json
Normal file
@@ -0,0 +1,424 @@
|
||||
{
|
||||
"Common": {
|
||||
"ChangeView": "Cambiar Vista",
|
||||
"ListView": "Vista de Lista",
|
||||
"GridView": "Vista de Cuadrícula",
|
||||
"optional": "opcional",
|
||||
"cancel": "Cancelar",
|
||||
"add": "Añadir",
|
||||
"since": "desde {date}",
|
||||
"notSet": "No establecido",
|
||||
"noData": "Sin datos",
|
||||
"Loading": "Cargando...",
|
||||
"Refresh": "Refrescar",
|
||||
"Save": "Guardar",
|
||||
"Server": {
|
||||
"CPU": "CPU",
|
||||
"GPU": "GPU",
|
||||
"RAM": "RAM",
|
||||
"Disk": "Disco",
|
||||
"OS": "SO",
|
||||
"IP": "IP",
|
||||
"Host": "Host",
|
||||
"Temperature": "Temperatura",
|
||||
"Usage": "Uso",
|
||||
"Tabs": {
|
||||
"General": "General",
|
||||
"Hardware": "Hardware",
|
||||
"Host": "Host",
|
||||
"Monitoring": "Monitoreo"
|
||||
}
|
||||
},
|
||||
"ItemsPerPage": {
|
||||
"items": "elementos",
|
||||
"item": "elemento",
|
||||
"4": "4 elementos",
|
||||
"5": "5 elementos",
|
||||
"6": "6 elementos",
|
||||
"10": "10 elementos",
|
||||
"15": "15 elementos",
|
||||
"20": "20 elementos",
|
||||
"25": "25 elementos",
|
||||
"Custom": "Personalizado (1-100)"
|
||||
}
|
||||
},
|
||||
"Server": {
|
||||
"Hardware": "Hardware",
|
||||
"Network": "Red",
|
||||
"CurrentUsage": "Uso Actual",
|
||||
"UsageHistory": "Historial de Uso",
|
||||
"ResourceUsageHistory": "Historial de Uso de Recursos",
|
||||
"TimeRange": {
|
||||
"Select": "Seleccionar rango de tiempo",
|
||||
"LastHour": "Última Hora",
|
||||
"Last24Hours": "Últimas 24 Horas",
|
||||
"Last7Days": "Últimos 7 Días",
|
||||
"Last30Days": "Últimos 30 Días"
|
||||
},
|
||||
"VirtualMachines": "Máquinas Virtuales",
|
||||
"VirtualMachinesDescription": "Máquinas virtuales alojadas en este servidor",
|
||||
"HardwareInformation": "Información del Hardware",
|
||||
"ManagementURL": "URL de Administración",
|
||||
"VM": "VM",
|
||||
"Physical": "Físico",
|
||||
"HostedOn": "Alojado en",
|
||||
"NotFound": "Servidor no encontrado",
|
||||
"NotFoundDescription": "El servidor que estás buscando no se pudo encontrar."
|
||||
},
|
||||
"Sidebar": {
|
||||
"Main Navigation": "Navegación Principal",
|
||||
"Dashboard": "Panel de Control",
|
||||
"My Infrastructure": "Mi Infraestructura",
|
||||
"Servers": "Servidores",
|
||||
"Applications": "Aplicaciones",
|
||||
"Uptime": "Uptime",
|
||||
"Network": "Red",
|
||||
"Settings": "Ajustes",
|
||||
"Logout": "Cerrar Sesión"
|
||||
},
|
||||
"Home": {
|
||||
"TitleUnder": "Panel de control para gestionar toda tu infraestructura de servidores",
|
||||
"LoginCardTitle": "Iniciar Sesión",
|
||||
"LoginCardDescription": "Introduce tus credenciales para continuar",
|
||||
"AuthenticationError": "Error de Autenticación",
|
||||
"Email": "Correo Electrónico",
|
||||
"Password": "Contraseña",
|
||||
"SigninButton": "Iniciar Sesión",
|
||||
"SigninButtonSigningIn": "Iniciando sesión..."
|
||||
},
|
||||
"Dashboard": {
|
||||
"Title": "Panel de Control",
|
||||
"Servers": {
|
||||
"Title": "Servidores",
|
||||
"Description": "Descripción general de servidores físicos y virtuales",
|
||||
"PhysicalServers": "Servidores Físicos",
|
||||
"VirtualServers": "Servidores Virtuales",
|
||||
"ManageServers": "Gestionar Servidores"
|
||||
},
|
||||
"Applications": {
|
||||
"Title": "Aplicaciones",
|
||||
"Description": "Gestiona tus aplicaciones desplegadas",
|
||||
"OnlineApplications": "Aplicaciones En Línea",
|
||||
"ViewAllApplications": "Ver todas las aplicaciones"
|
||||
},
|
||||
"Uptime": {
|
||||
"Title": "Uptime",
|
||||
"Description": "Monitoriza la disponibilidad de tus servicios",
|
||||
"OnlineApplications": "Aplicaciones En Línea",
|
||||
"ViewUptimeMetrics": "Ver métricas de uptime"
|
||||
},
|
||||
"Network": {
|
||||
"Title": "Red",
|
||||
"Description": "Gestionar la configuración de red",
|
||||
"ActiveConnections": "Conexiones Activas",
|
||||
"ViewNetworkDetails": "Ver detalles de la red"
|
||||
}
|
||||
},
|
||||
"Servers": {
|
||||
"Title": "Servidores",
|
||||
"MyInfrastructure": "Mi Infraestructura",
|
||||
"YourServers": "Tus Servidores",
|
||||
"AddServer": {
|
||||
"Title": "Añadir un servidor",
|
||||
"General": {
|
||||
"Title": "Añadir un servidor",
|
||||
"CopyServer": "Copiar servidor",
|
||||
"Icon": "Icono",
|
||||
"IconPlaceholder": "Seleccionar un icono",
|
||||
"IconSearchPlaceholder": "Buscar iconos...",
|
||||
"Preview": "Previsualizar",
|
||||
"Name": "Nombre",
|
||||
"OperatingSystem": "Sistema Operativo",
|
||||
"OperatingSystemPlaceholder": "Seleccionar SO",
|
||||
"IPAdress": "Dirección IP",
|
||||
"ManagementURL": "URL de Administración",
|
||||
"ManagementURLTooltip": "Enlace a una interfaz web (ej. Proxmox o Portainer) con la que se puede administrar el servidor"
|
||||
},
|
||||
"Host": {
|
||||
"MarkAsHostServer": "Marcar como servidor anfitrión",
|
||||
"SelectHostServer": "Seleccionar un servidor anfitrión",
|
||||
"SelectHostServerPlaceholder": "Seleccionar un servidor anfitrión",
|
||||
"NoHostServer": "Sin servidor anfitrión"
|
||||
},
|
||||
"Monitoring": {
|
||||
"Enable": "Activar la monitorización",
|
||||
"URL": "URL de Monitorización",
|
||||
"SetupTitle": "Configuración Requerida del Servidor",
|
||||
"SetupDescription": "Para habilitar la monitorización, necesitas instalar Glances en tu servidor. Aquí tienes un ejemplo de configuración de Docker Compose:"
|
||||
}
|
||||
},
|
||||
"ServerCard": {
|
||||
"HardwareInformation": "Información del Hardware",
|
||||
"ViewDetails": "Ver Detalles",
|
||||
"OpenManagementURL": "Abrir URL de Administración",
|
||||
"EditServer": "Editar Servidor",
|
||||
"DeleteServer": "Eliminar Servidor",
|
||||
"HostedVMs": "VMs Alojadas",
|
||||
"ResourceUsage": "Uso de Recursos",
|
||||
"DeleteConfirmation": {
|
||||
"Title": "Eliminar {name}",
|
||||
"Description": "¿Estás seguro de que quieres eliminar este servidor? Esta acción no se puede deshacer.",
|
||||
"Cancel": "Cancelar",
|
||||
"Delete": "Eliminar"
|
||||
}
|
||||
},
|
||||
"EditServer": {
|
||||
"Title": "Editar {name}",
|
||||
"Save": "Guardar",
|
||||
"General": {
|
||||
"Title": "General",
|
||||
"Icon": "Icono",
|
||||
"Name": "Nombre",
|
||||
"OperatingSystem": "Sistema Operativo",
|
||||
"IPAddress": "Dirección IP",
|
||||
"ManagementURL": "URL de Administración"
|
||||
},
|
||||
"Hardware": {
|
||||
"Title": "Hardware",
|
||||
"CPU": "CPU",
|
||||
"GPU": "GPU",
|
||||
"RAM": "RAM",
|
||||
"Disk": "Disco"
|
||||
},
|
||||
"Host": {
|
||||
"Title": "Anfitrión",
|
||||
"MarkAsHostServer": "Marcar como servidor anfitrión",
|
||||
"CannotDisableHost": "No se puede desactivar mientras aloja VMs",
|
||||
"SelectHostServer": "Seleccionar un servidor anfitrión"
|
||||
},
|
||||
"Monitoring": {
|
||||
"Title": "Monitoreo",
|
||||
"Enable": "Activar el monitoreo",
|
||||
"URL": "URL de Monitoreo",
|
||||
"SetupTitle": "Configuración Requerida del Servidor",
|
||||
"SetupDescription": "Para habilitar el monitoreo, necesitas instalar Glances en tu servidor. Aquí tienes un ejemplo de configuración de Docker Compose:"
|
||||
}
|
||||
},
|
||||
"Pagination": {
|
||||
"Showing": "Mostrando {start}-{end} de {total} servidores",
|
||||
"NoServers": "No se encontraron servidores"
|
||||
},
|
||||
"Search": {
|
||||
"Placeholder": "Escribe para buscar..."
|
||||
}
|
||||
},
|
||||
"Applications": {
|
||||
"Title": "Tus Aplicaciones",
|
||||
"Breadcrumb": {
|
||||
"MyInfrastructure": "Mi Infraestructura",
|
||||
"Applications": "Aplicaciones"
|
||||
},
|
||||
"Views": {
|
||||
"ChangeView": "Cambiar vista",
|
||||
"ListView": "Vista de Lista",
|
||||
"GridView": "Vista de Cuadrícula",
|
||||
"CompactView": "Vista Compacta"
|
||||
},
|
||||
"Add": {
|
||||
"Title": "Añadir una aplicación",
|
||||
"Name": "Nombre",
|
||||
"NamePlaceholder": "ej. Portainer",
|
||||
"Server": "Servidor",
|
||||
"SelectServer": "Seleccionar servidor",
|
||||
"Description": "Descripción",
|
||||
"DescriptionPlaceholder": "Descripción de la aplicación",
|
||||
"IconURL": "URL del Icono",
|
||||
"IconURLPlaceholder": "https://example.com/icon.png",
|
||||
"PublicURL": "URL Pública",
|
||||
"PublicURLPlaceholder": "https://example.com",
|
||||
"LocalURL": "URL Local",
|
||||
"LocalURLPlaceholder": "http://localhost:3000",
|
||||
"CustomUptimeCheck": "URL Personalizada de Comprobación de Actividad",
|
||||
"CustomUptimeCheckTooltip": "Cuando está activado, esta URL reemplaza la URL Pública para las comprobaciones de monitoreo de actividad",
|
||||
"UptimeCheckURL": "URL de Comprobación de Actividad",
|
||||
"UptimeCheckURLPlaceholder": "https://example.com/status"
|
||||
},
|
||||
"Edit": {
|
||||
"Title": "Editar Aplicación",
|
||||
"SaveButton": "Guardar Cambios"
|
||||
},
|
||||
"Card": {
|
||||
"Server": "Servidor",
|
||||
"NoServer": "Sin servidor",
|
||||
"PublicURL": "URL Pública",
|
||||
"LocalURL": "URL Local",
|
||||
"Icon": "Icono",
|
||||
"Image": "Imagen"
|
||||
},
|
||||
"Messages": {
|
||||
"AddServerFirst": "Primero debes añadir un servidor.",
|
||||
"AddSuccess": "Aplicación añadida correctamente",
|
||||
"EditSuccess": "Aplicación editada correctamente",
|
||||
"DeleteSuccess": "Aplicación eliminada correctamente",
|
||||
"GetError": "Error al obtener las aplicaciones",
|
||||
"EditError": "Error al editar la aplicación",
|
||||
"DeleteError": "Error al eliminar la aplicación",
|
||||
"NumberValidation": "Por favor, introduce un número entre 1 y 100"
|
||||
},
|
||||
"Pagination": {
|
||||
"Showing": "Mostrando {start}-{end} de {total} aplicaciones",
|
||||
"NoApplications": "No se encontraron aplicaciones"
|
||||
},
|
||||
"Search": {
|
||||
"Placeholder": "Escribe para buscar..."
|
||||
}
|
||||
},
|
||||
"Uptime": {
|
||||
"Title": "Tiempo de Actividad",
|
||||
"Breadcrumb": {
|
||||
"MyInfrastructure": "Mi Infraestructura",
|
||||
"Uptime": "Tiempo de Actividad"
|
||||
},
|
||||
"TimeRange": {
|
||||
"Select": "Seleccionar periodo de tiempo",
|
||||
"LastHour": "Última 1 hora",
|
||||
"LastDay": "Último 1 día",
|
||||
"Last7Days": "Últimos 7 días",
|
||||
"Last30Days": "Últimos 30 días"
|
||||
},
|
||||
"Status": {
|
||||
"Online": "En Línea",
|
||||
"Offline": "Fuera de Línea",
|
||||
"NoData": "Sin datos"
|
||||
},
|
||||
"Messages": {
|
||||
"NumberValidation": "Por favor, introduce un número entre 1 y 100",
|
||||
"NoItems": "No se encontraron elementos",
|
||||
"Loading": "Cargando..."
|
||||
},
|
||||
"Pagination": {
|
||||
"Showing": "Mostrando {start}-{end} de {total} elementos"
|
||||
}
|
||||
},
|
||||
"Network": {
|
||||
"Title": "Red",
|
||||
"Breadcrumb": {
|
||||
"MyInfrastructure": "Mi Infraestructura",
|
||||
"Network": "Red"
|
||||
}
|
||||
},
|
||||
"Settings": {
|
||||
"Title": "Ajustes",
|
||||
"Breadcrumb": {
|
||||
"Dashboard": "Panel de Control",
|
||||
"Settings": "Ajustes"
|
||||
},
|
||||
"UserSettings": {
|
||||
"Title": "Ajustes de Usuario",
|
||||
"Description": "Gestiona aquí tus ajustes de usuario. Puedes cambiar tu correo electrónico, contraseña y otros ajustes de cuenta.",
|
||||
"ChangeEmail": {
|
||||
"Title": "Cambiar Correo Electrónico",
|
||||
"Placeholder": "Introduce nuevo correo electrónico",
|
||||
"Button": "Cambiar Correo Electrónico",
|
||||
"Success": "Correo electrónico cambiado correctamente.",
|
||||
"Error": "Error"
|
||||
},
|
||||
"ChangePassword": {
|
||||
"Title": "Cambiar Contraseña",
|
||||
"OldPassword": "Introduce la contraseña antigua",
|
||||
"NewPassword": "Introduce la nueva contraseña",
|
||||
"ConfirmPassword": "Confirma la nueva contraseña",
|
||||
"Button": "Cambiar Contraseña",
|
||||
"Success": "Contraseña cambiada correctamente.",
|
||||
"Error": "Error",
|
||||
"PasswordsDontMatch": "Las contraseñas no coinciden",
|
||||
"AllFieldsRequired": "Todos los campos son obligatorios"
|
||||
}
|
||||
},
|
||||
"ThemeSettings": {
|
||||
"Title": "Ajustes del Tema",
|
||||
"Description": "Selecciona un tema para la aplicación. Puedes elegir entre tema claro, oscuro o del sistema.",
|
||||
"Light": "Claro",
|
||||
"Dark": "Oscuro",
|
||||
"System": "Sistema"
|
||||
},
|
||||
"LanguageSettings": {
|
||||
"Title": "Ajustes de Idioma",
|
||||
"Description": "Selecciona un idioma para la aplicación.",
|
||||
"English": "Inglés",
|
||||
"German": "Alemán"
|
||||
},
|
||||
"Notifications": {
|
||||
"Title": "Notificaciones",
|
||||
"Description": "Configura las notificaciones para recibir alertas instantáneas cuando una aplicación cambie de estado.",
|
||||
"AddChannel": "Añadir Canal de Notificación",
|
||||
"NoNotifications": "No hay notificaciones configuradas",
|
||||
"NoNotificationsDescription": "Añade un canal de notificación para recibir alertas cuando tus aplicaciones cambien de estado.",
|
||||
"AddNotification": {
|
||||
"Title": "Añadir Notificación",
|
||||
"Name": "Nombre de la Notificación (opcional)",
|
||||
"Type": "Tipo de Notificación",
|
||||
"SMTP": {
|
||||
"Title": "SMTP",
|
||||
"Description": "Enviar notificaciones vía SMTP",
|
||||
"Host": "Servidor SMTP",
|
||||
"Port": "Puerto SMTP",
|
||||
"Secure": "Conexión Segura (TLS/SSL)",
|
||||
"Username": "Nombre de Usuario SMTP",
|
||||
"Password": "Contraseña SMTP",
|
||||
"From": "Dirección de Remitente",
|
||||
"To": "Dirección de Destinatario"
|
||||
},
|
||||
"Telegram": {
|
||||
"Title": "Telegram",
|
||||
"Description": "Enviar notificaciones vía Telegram",
|
||||
"Token": "Token del Bot",
|
||||
"ChatId": "ID del Chat"
|
||||
},
|
||||
"Discord": {
|
||||
"Title": "Discord",
|
||||
"Description": "Enviar notificaciones vía Discord",
|
||||
"Webhook": "URL del Webhook"
|
||||
},
|
||||
"Gotify": {
|
||||
"Title": "Gotify",
|
||||
"Description": "Enviar notificaciones vía Gotify",
|
||||
"Url": "URL de Gotify",
|
||||
"Token": "Token de Gotify"
|
||||
},
|
||||
"Ntfy": {
|
||||
"Title": "Ntfy",
|
||||
"Description": "Enviar notificaciones vía Ntfy",
|
||||
"Url": "URL de Ntfy",
|
||||
"Token": "Token de Ntfy"
|
||||
},
|
||||
"Pushover": {
|
||||
"Title": "Pushover",
|
||||
"Description": "Enviar notificaciones vía Pushover",
|
||||
"Url": "URL de Pushover",
|
||||
"Token": "Token de Pushover",
|
||||
"User": "Usuario de Pushover"
|
||||
},
|
||||
"Echobell": {
|
||||
"Title": "Echobell",
|
||||
"Description": "Enviar notificaciones vía Echobell",
|
||||
"Url": "URL de Echobell",
|
||||
"AddMessage": "Añade en Echobell el campo \"message\"."
|
||||
}
|
||||
},
|
||||
"CustomizeText": {
|
||||
"Display": "Personalizar Texto de Notificación",
|
||||
"Title": "Personalizar Texto de Notificación",
|
||||
"Application": "Texto de Notificación para Aplicaciones",
|
||||
"Server": "Texto de Notificación para Servidores",
|
||||
"Placeholders": {
|
||||
"Title": "Puedes usar los siguientes marcadores de posición en el texto:",
|
||||
"Server": {
|
||||
"Title": "Relacionado con el servidor:",
|
||||
"Name": "!name - El nombre del servidor",
|
||||
"Status": "!status - El estado actual del servidor (en línea/fuera de línea)"
|
||||
},
|
||||
"Application": {
|
||||
"Title": "Relacionado con la aplicación:",
|
||||
"Name": "!name - El nombre de la aplicación",
|
||||
"Url": "!url - La URL donde está alojada la aplicación",
|
||||
"Status": "!status - El estado actual de la aplicación (en línea/fuera de línea)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ActiveChannels": "Canales de Notificación Activos",
|
||||
"Test": "Probar",
|
||||
"Delete": "Eliminar"
|
||||
}
|
||||
}
|
||||
}
|
||||
82
package-lock.json
generated
82
package-lock.json
generated
@@ -31,6 +31,7 @@
|
||||
"@xyflow/react": "^12.5.5",
|
||||
"axios": "^1.8.4",
|
||||
"bcrypt": "^5.1.1",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"chart.js": "^4.4.9",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
@@ -50,12 +51,13 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/postcss": "^4",
|
||||
"@types/bcryptjs": "^2.4.6",
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"postcss": "^8.5.3",
|
||||
"prisma": "^6.6.0",
|
||||
"prisma": "^6.7.0",
|
||||
"tailwindcss": "^4.1.4",
|
||||
"tsx": "^4.19.3",
|
||||
"typescript": "^5"
|
||||
@@ -1174,9 +1176,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@prisma/config": {
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.6.0.tgz",
|
||||
"integrity": "sha512-d8FlXRHsx72RbN8nA2QCRORNv5AcUnPXgtPvwhXmYkQSMF/j9cKaJg+9VcUzBRXGy9QBckNzEQDEJZdEOZ+ubA==",
|
||||
"version": "6.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.7.0.tgz",
|
||||
"integrity": "sha512-di8QDdvSz7DLUi3OOcCHSwxRNeW7jtGRUD2+Z3SdNE3A+pPiNT8WgUJoUyOwJmUr5t+JA2W15P78C/N+8RXrOA==",
|
||||
"devOptional": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
@@ -1185,30 +1187,30 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@prisma/debug": {
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.6.0.tgz",
|
||||
"integrity": "sha512-DL6n4IKlW5k2LEXzpN60SQ1kP/F6fqaCgU/McgaYsxSf43GZ8lwtmXLke9efS+L1uGmrhtBUP4npV/QKF8s2ZQ==",
|
||||
"version": "6.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.7.0.tgz",
|
||||
"integrity": "sha512-RabHn9emKoYFsv99RLxvfG2GHzWk2ZI1BuVzqYtmMSIcuGboHY5uFt3Q3boOREM9de6z5s3bQoyKeWnq8Fz22w==",
|
||||
"devOptional": true,
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/@prisma/engines": {
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.6.0.tgz",
|
||||
"integrity": "sha512-nC0IV4NHh7500cozD1fBoTwTD1ydJERndreIjpZr/S3mno3P6tm8qnXmIND5SwUkibNeSJMpgl4gAnlqJ/gVlg==",
|
||||
"version": "6.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.7.0.tgz",
|
||||
"integrity": "sha512-3wDMesnOxPrOsq++e5oKV9LmIiEazFTRFZrlULDQ8fxdub5w4NgRBoxtWbvXmj2nJVCnzuz6eFix3OhIqsZ1jw==",
|
||||
"devOptional": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@prisma/debug": "6.6.0",
|
||||
"@prisma/engines-version": "6.6.0-53.f676762280b54cd07c770017ed3711ddde35f37a",
|
||||
"@prisma/fetch-engine": "6.6.0",
|
||||
"@prisma/get-platform": "6.6.0"
|
||||
"@prisma/debug": "6.7.0",
|
||||
"@prisma/engines-version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed",
|
||||
"@prisma/fetch-engine": "6.7.0",
|
||||
"@prisma/get-platform": "6.7.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@prisma/engines-version": {
|
||||
"version": "6.6.0-53.f676762280b54cd07c770017ed3711ddde35f37a",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.6.0-53.f676762280b54cd07c770017ed3711ddde35f37a.tgz",
|
||||
"integrity": "sha512-JzRaQ5Em1fuEcbR3nUsMNYaIYrOT1iMheenjCvzZblJcjv/3JIuxXN7RCNT5i6lRkLodW5ojCGhR7n5yvnNKrw==",
|
||||
"version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed.tgz",
|
||||
"integrity": "sha512-EvpOFEWf1KkJpDsBCrih0kg3HdHuaCnXmMn7XFPObpFTzagK1N0Q0FMnYPsEhvARfANP5Ok11QyoTIRA2hgJTA==",
|
||||
"devOptional": true,
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
@@ -1224,25 +1226,25 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@prisma/fetch-engine": {
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.6.0.tgz",
|
||||
"integrity": "sha512-Ohfo8gKp05LFLZaBlPUApM0M7k43a0jmo86YY35u1/4t+vuQH9mRGU7jGwVzGFY3v+9edeb/cowb1oG4buM1yw==",
|
||||
"version": "6.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.7.0.tgz",
|
||||
"integrity": "sha512-zLlAGnrkmioPKJR4Yf7NfW3hftcvqeNNEHleMZK9yX7RZSkhmxacAYyfGsCcqRt47jiZ7RKdgE0Wh2fWnm7WsQ==",
|
||||
"devOptional": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@prisma/debug": "6.6.0",
|
||||
"@prisma/engines-version": "6.6.0-53.f676762280b54cd07c770017ed3711ddde35f37a",
|
||||
"@prisma/get-platform": "6.6.0"
|
||||
"@prisma/debug": "6.7.0",
|
||||
"@prisma/engines-version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed",
|
||||
"@prisma/get-platform": "6.7.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@prisma/get-platform": {
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.6.0.tgz",
|
||||
"integrity": "sha512-3qCwmnT4Jh5WCGUrkWcc6VZaw0JY7eWN175/pcb5Z6FiLZZ3ygY93UX0WuV41bG51a6JN/oBH0uywJ90Y+V5eA==",
|
||||
"version": "6.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.7.0.tgz",
|
||||
"integrity": "sha512-i9IH5lO4fQwnMLvQLYNdgVh9TK3PuWBfQd7QLk/YurnAIg+VeADcZDbmhAi4XBBDD+hDif9hrKyASu0hbjwabw==",
|
||||
"devOptional": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@prisma/debug": "6.6.0"
|
||||
"@prisma/debug": "6.7.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@radix-ui/number": {
|
||||
@@ -2476,6 +2478,13 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/bcryptjs": {
|
||||
"version": "2.4.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.6.tgz",
|
||||
"integrity": "sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/d3-color": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
|
||||
@@ -2746,6 +2755,15 @@
|
||||
"node": ">= 10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bcryptjs": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-3.0.2.tgz",
|
||||
"integrity": "sha512-k38b3XOZKv60C4E2hVsXTolJWfkGRMbILBIe2IBITXciy5bOsTKot5kDrf3ZfufQtQOUN5mXceUEpU1rTl9Uog==",
|
||||
"license": "BSD-3-Clause",
|
||||
"bin": {
|
||||
"bcrypt": "bin/bcrypt"
|
||||
}
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
@@ -4577,15 +4595,15 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/prisma": {
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/prisma/-/prisma-6.6.0.tgz",
|
||||
"integrity": "sha512-SYCUykz+1cnl6Ugd8VUvtTQq5+j1Q7C0CtzKPjQ8JyA2ALh0EEJkMCS+KgdnvKW1lrxjtjCyJSHOOT236mENYg==",
|
||||
"version": "6.7.0",
|
||||
"resolved": "https://registry.npmjs.org/prisma/-/prisma-6.7.0.tgz",
|
||||
"integrity": "sha512-vArg+4UqnQ13CVhc2WUosemwh6hr6cr6FY2uzDvCIFwH8pu8BXVv38PktoMLVjtX7sbYThxbnZF5YiR8sN2clw==",
|
||||
"devOptional": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@prisma/config": "6.6.0",
|
||||
"@prisma/engines": "6.6.0"
|
||||
"@prisma/config": "6.7.0",
|
||||
"@prisma/engines": "6.7.0"
|
||||
},
|
||||
"bin": {
|
||||
"prisma": "build/index.js"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "corecontrol",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev --turbopack",
|
||||
@@ -32,6 +32,7 @@
|
||||
"@xyflow/react": "^12.5.5",
|
||||
"axios": "^1.8.4",
|
||||
"bcrypt": "^5.1.1",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"chart.js": "^4.4.9",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
@@ -51,12 +52,13 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/postcss": "^4",
|
||||
"@types/bcryptjs": "^2.4.6",
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"postcss": "^8.5.3",
|
||||
"prisma": "^6.6.0",
|
||||
"prisma": "^6.7.0",
|
||||
"tailwindcss": "^4.1.4",
|
||||
"tsx": "^4.19.3",
|
||||
"typescript": "^5"
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "server" ADD COLUMN "m_cpu" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "m_disk" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "m_gpu" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "m_ram" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "m_temp" BOOLEAN NOT NULL DEFAULT true;
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
binaryTargets = ["native", "linux-musl-openssl-3.0.x", "linux-musl-arm64-openssl-3.0.x"]
|
||||
}
|
||||
|
||||
datasource db {
|
||||
@@ -67,6 +68,11 @@ model server {
|
||||
uptime String?
|
||||
gpuUsage String?
|
||||
temp String?
|
||||
m_cpu Boolean @default(true)
|
||||
m_ram Boolean @default(true)
|
||||
m_disk Boolean @default(true)
|
||||
m_gpu Boolean @default(true)
|
||||
m_temp Boolean @default(true)
|
||||
}
|
||||
|
||||
model settings {
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 83 KiB |
Reference in New Issue
Block a user