Fix jwt-token

This commit is contained in:
2025-09-14 18:12:17 +02:00
parent b6909e9964
commit 264aafbf43
2 changed files with 81 additions and 71 deletions

View File

@@ -103,24 +103,31 @@ const System = () => {
<h4 className="font-medium text-gray-900 mb-3 truncate" title={name}>
{name.replace('drone-detection-', '').replace('uamils-', '')}
</h4>
<div className="space-y-2 text-sm">
<div className="flex justify-between">
<span className="text-gray-500">CPU</span>
<span className="font-medium">{metrics.cpu}</span>
{metrics.error ? (
<div className="text-sm text-red-600">
<div className="font-medium">Not Available</div>
<div className="text-xs mt-1">{metrics.message}</div>
</div>
<div className="flex justify-between">
<span className="text-gray-500">Memory</span>
<span className="font-medium">{metrics.memory.percentage}</span>
) : (
<div className="space-y-2 text-sm">
<div className="flex justify-between">
<span className="text-gray-500">CPU</span>
<span className="font-medium">{metrics.cpu}</span>
</div>
<div className="flex justify-between">
<span className="text-gray-500">Memory</span>
<span className="font-medium">{metrics.memory.percentage}</span>
</div>
<div className="flex justify-between">
<span className="text-gray-500">Network I/O</span>
<span className="font-medium text-xs">{metrics.network}</span>
</div>
<div className="flex justify-between">
<span className="text-gray-500">Disk I/O</span>
<span className="font-medium text-xs">{metrics.disk}</span>
</div>
</div>
<div className="flex justify-between">
<span className="text-gray-500">Network I/O</span>
<span className="font-medium text-xs">{metrics.network}</span>
</div>
<div className="flex justify-between">
<span className="text-gray-500">Disk I/O</span>
<span className="font-medium text-xs">{metrics.disk}</span>
</div>
</div>
)}
</div>
)
@@ -233,26 +240,33 @@ const System = () => {
</StatusCard>
<StatusCard title="System Resources" icon={CpuChipIcon}>
<div className="space-y-3">
<div>
<div className="flex justify-between text-sm mb-1">
<span className="text-gray-500">CPU Usage</span>
<span className="font-medium">{systemInfo.system.cpu.usage}</span>
{systemInfo.system.error ? (
<div className="text-center text-red-600">
<div className="font-medium">System metrics unavailable</div>
<div className="text-xs mt-1">{systemInfo.system.message}</div>
</div>
) : (
<div className="space-y-3">
<div>
<div className="flex justify-between text-sm mb-1">
<span className="text-gray-500">CPU Usage</span>
<span className="font-medium">{systemInfo.system.cpu.usage}</span>
</div>
<ProgressBar percentage={systemInfo.system.cpu.percentage} />
</div>
<ProgressBar percentage={systemInfo.system.cpu.percentage} />
</div>
<div>
<div className="flex justify-between text-sm mb-1">
<span className="text-gray-500">Memory</span>
<span className="font-medium">{systemInfo.system.memory.used} / {systemInfo.system.memory.total}</span>
<div>
<div className="flex justify-between text-sm mb-1">
<span className="text-gray-500">Memory</span>
<span className="font-medium">{systemInfo.system.memory.used} / {systemInfo.system.memory.total}</span>
</div>
<ProgressBar percentage={systemInfo.system.memory.percentage} />
</div>
<div className="flex justify-between text-sm">
<span className="text-gray-500">Disk</span>
<span className="font-medium text-xs">{systemInfo.system.disk}</span>
</div>
<ProgressBar percentage={systemInfo.system.memory.percentage} />
</div>
<div className="flex justify-between text-sm">
<span className="text-gray-500">Disk</span>
<span className="font-medium text-xs">{systemInfo.system.disk}</span>
</div>
</div>
)}
</StatusCard>
<StatusCard title="Statistics" icon={ChartBarIcon}>
@@ -290,11 +304,19 @@ const System = () => {
{/* Container Metrics */}
<div className="mb-8">
<StatusCard title="Container Metrics" icon={ServerIcon}>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{Object.entries(systemInfo.containers).map(([name, metrics]) => (
<ContainerCard key={name} name={name} metrics={metrics} />
))}
</div>
{systemInfo.containers.error ? (
<div className="text-center text-red-600 py-8">
<XCircleIcon className="mx-auto h-12 w-12 text-red-400 mb-2" />
<div className="font-medium">Docker containers not available</div>
<div className="text-sm mt-1">{systemInfo.containers.message}</div>
</div>
) : (
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{Object.entries(systemInfo.containers).map(([name, metrics]) => (
<ContainerCard key={name} name={name} metrics={metrics} />
))}
</div>
)}
</StatusCard>
</div>

View File

@@ -151,26 +151,9 @@ router.get('/system-info', async (req, res) => {
}, {});
} catch (dockerError) {
console.log('Docker stats not available:', dockerError.message);
// Fallback to mock data for development
containerMetrics = {
'drone-detection-backend': {
cpu: '2.5%',
memory: { usage: '256MB / 1GB', percentage: '25.6%' },
network: '1.2MB / 3.4MB',
disk: '45MB / 12MB'
},
'drone-detection-frontend': {
cpu: '0.8%',
memory: { usage: '128MB / 512MB', percentage: '25%' },
network: '800KB / 2.1MB',
disk: '12MB / 5MB'
},
'drone-detection-management': {
cpu: '1.2%',
memory: { usage: '192MB / 512MB', percentage: '37.5%' },
network: '500KB / 1.2MB',
disk: '8MB / 3MB'
}
error: 'Docker not available or containers not running',
message: dockerError.message
};
}
@@ -202,9 +185,11 @@ router.get('/system-info', async (req, res) => {
} catch (sysError) {
console.log('System metrics not available:', sysError.message);
systemMetrics = {
memory: { used: '1.2GB', total: '4GB', percentage: 30 },
cpu: { usage: '15.5%', percentage: 15.5 },
disk: '2.1GB / 20GB (11%)'
error: 'System metrics not available',
message: sysError.message,
memory: { used: 'N/A', total: 'N/A', percentage: 0 },
cpu: { usage: 'N/A', percentage: 0 },
disk: 'N/A'
};
}
@@ -261,18 +246,21 @@ router.get('/system-info', async (req, res) => {
});
};
// Check SSL for main domains
const sslChecks = await Promise.all([
checkSSLCert('dev.uggla.uamils.com'),
checkSSLCert('uamils-ab.dev.uggla.uamils.com'),
checkSSLCert('management.dev.uggla.uamils.com')
]);
// Check SSL for management host only
const managementHost = 'management.dev.uggla.uamils.com';
let sslStatus = {};
const sslStatus = {
'dev.uggla.uamils.com': sslChecks[0],
'uamils-ab.dev.uggla.uamils.com': sslChecks[1],
'management.dev.uggla.uamils.com': sslChecks[2]
};
try {
const sslCheck = await checkSSLCert(managementHost);
sslStatus[managementHost] = sslCheck;
} catch (sslError) {
console.log('SSL check failed:', sslError.message);
sslStatus[managementHost] = {
status: 'error',
expiresAt: null,
error: 'SSL check failed: ' + sslError.message
};
}
res.json({
success: true,