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

View File

@@ -151,26 +151,9 @@ router.get('/system-info', async (req, res) => {
}, {}); }, {});
} catch (dockerError) { } catch (dockerError) {
console.log('Docker stats not available:', dockerError.message); console.log('Docker stats not available:', dockerError.message);
// Fallback to mock data for development
containerMetrics = { containerMetrics = {
'drone-detection-backend': { error: 'Docker not available or containers not running',
cpu: '2.5%', message: dockerError.message
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'
}
}; };
} }
@@ -202,9 +185,11 @@ router.get('/system-info', async (req, res) => {
} catch (sysError) { } catch (sysError) {
console.log('System metrics not available:', sysError.message); console.log('System metrics not available:', sysError.message);
systemMetrics = { systemMetrics = {
memory: { used: '1.2GB', total: '4GB', percentage: 30 }, error: 'System metrics not available',
cpu: { usage: '15.5%', percentage: 15.5 }, message: sysError.message,
disk: '2.1GB / 20GB (11%)' 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 // Check SSL for management host only
const sslChecks = await Promise.all([ const managementHost = 'management.dev.uggla.uamils.com';
checkSSLCert('dev.uggla.uamils.com'), let sslStatus = {};
checkSSLCert('uamils-ab.dev.uggla.uamils.com'),
checkSSLCert('management.dev.uggla.uamils.com')
]);
const sslStatus = { try {
'dev.uggla.uamils.com': sslChecks[0], const sslCheck = await checkSSLCert(managementHost);
'uamils-ab.dev.uggla.uamils.com': sslChecks[1], sslStatus[managementHost] = sslCheck;
'management.dev.uggla.uamils.com': sslChecks[2] } catch (sslError) {
}; console.log('SSL check failed:', sslError.message);
sslStatus[managementHost] = {
status: 'error',
expiresAt: null,
error: 'SSL check failed: ' + sslError.message
};
}
res.json({ res.json({
success: true, success: true,