Fix jwt-token
This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user