commit
ec1dbfee44
@ -6,6 +6,7 @@ const bcrypt = require("bcrypt");
|
|||||||
const crypto = require("crypto");
|
const crypto = require("crypto");
|
||||||
const validator = require('validator');
|
const validator = require('validator');
|
||||||
const axios = require('axios');
|
const axios = require('axios');
|
||||||
|
const pidusage = require('pidusage');
|
||||||
|
|
||||||
const { validationResult } = require('express-validator');
|
const { validationResult } = require('express-validator');
|
||||||
const { locationValidation, locationValidationUpdate, locationdeleteValidation
|
const { locationValidation, locationValidationUpdate, locationdeleteValidation
|
||||||
@ -197,17 +198,28 @@ app.post("/verify-otp", otpValidation ,async (req, res) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Redirect to the login page after logout
|
// Redirect to the login page after logout
|
||||||
res.redirect("/login");
|
res.redirect("/index");
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error in logout route:", error);
|
console.error("Error in logout route:", error);
|
||||||
res.status(500).send("Internal Server Error");
|
res.status(500).send("Internal Server Error");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
const getSystemHealth = async () => {
|
||||||
|
const cpuInfo = await pidusage(process.pid);
|
||||||
|
return {
|
||||||
|
serverStatus: { uptime: process.uptime() },
|
||||||
|
databaseStatus: { connected: true }, // Replace with actual logic
|
||||||
|
resourceUtilization: {
|
||||||
|
cpuUsage: cpuInfo.cpu,
|
||||||
|
memoryUsage: process.memoryUsage(),
|
||||||
|
},
|
||||||
|
networkHealth: { latency: 10 }, // Replace with actual logic
|
||||||
|
};
|
||||||
|
};
|
||||||
app.get("/home", isAuthenticated, async (req, res) => {
|
app.get("/home", isAuthenticated, async (req, res) => {
|
||||||
|
const systemHealth = await getSystemHealth();
|
||||||
res.render("home", { username: req.session.username});
|
res.render("home", { username: req.session.username, systemHealth});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get("/inusers", isAuthenticated, async (req, res) => {
|
app.get("/inusers", isAuthenticated, async (req, res) => {
|
||||||
|
@ -28,9 +28,46 @@
|
|||||||
<main>
|
<main>
|
||||||
<h2>Welcome to the Home Page, <%= username %>!</h2>
|
<h2>Welcome to the Home Page, <%= username %>!</h2>
|
||||||
</main>
|
</main>
|
||||||
|
<section>
|
||||||
|
<div class="health-container">
|
||||||
|
<h4>Server Uptime</h4>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Uptime:</strong> <span id="serverUptime"><%= systemHealth && systemHealth.serverStatus ? (systemHealth.serverStatus.uptime / 60).toFixed(2) : 'N/A' %> minutes</span></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="health-container">
|
||||||
|
<h4>Database Status</h4>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Status:</strong> <%= systemHealth && systemHealth.databaseStatus ? (systemHealth.databaseStatus.connected ? 'Connected' : 'Disconnected') : 'N/A' %></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="health-container">
|
||||||
|
<h4>CPU Usage</h4>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Usage:</strong> <span id="cpuUsage"><%= systemHealth && systemHealth.resourceUtilization ? systemHealth.resourceUtilization.cpuUsage.toFixed(2) : 'N/A' %> %</span></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="health-container">
|
||||||
|
<h4>Memory Usage</h4>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Usage:</strong> <%= systemHealth && systemHealth.resourceUtilization ? (systemHealth.resourceUtilization.memoryUsage.rss / (1024 * 1024)).toFixed(2) : 'N/A' %> MB</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="health-container">
|
||||||
|
<h4>Network Latency</h4>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Latency:</strong> <%= systemHealth && systemHealth.networkHealth ? systemHealth.networkHealth.latency : 'N/A' %> ms</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
<footer>
|
<footer>
|
||||||
Any Issue faced, Please contact the administrator at 11111111 or ecosaverAdmin@gmail.com
|
Any Issue faced, Please contact the administrator at 11111111 or ecosaverAdmin@gmail.com
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
@ -635,4 +635,41 @@ footer {
|
|||||||
/* Add any other specific styles for this form */
|
/* Add any other specific styles for this form */
|
||||||
.custom-location-form h3 {
|
.custom-location-form h3 {
|
||||||
color: #333; /* Customize the heading color */
|
color: #333; /* Customize the heading color */
|
||||||
|
}
|
||||||
|
section {
|
||||||
|
margin-top: 20px;
|
||||||
|
display: flex; /* Use flexbox to arrange items in a row */
|
||||||
|
justify-content: space-between; /* Distribute items evenly along the main axis */
|
||||||
|
}
|
||||||
|
|
||||||
|
.health-container {
|
||||||
|
width: 200px; /* Set a fixed width for square shape */
|
||||||
|
height: 200px; /* Set a fixed height for square shape */
|
||||||
|
background-color: #f0f0f0; /* Background color */
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 10px; /* Rounded corners */
|
||||||
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Box shadow for depth */
|
||||||
|
transition: transform 0.3s ease-in-out; /* Add a subtle transition effect */
|
||||||
|
}
|
||||||
|
|
||||||
|
.health-container:hover {
|
||||||
|
transform: scale(1.05); /* Scale up on hover */
|
||||||
|
}
|
||||||
|
|
||||||
|
.health-container h4 {
|
||||||
|
text-align: center;
|
||||||
|
color: #333; /* Heading color */
|
||||||
|
}
|
||||||
|
|
||||||
|
.health-container ul {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.health-container li {
|
||||||
|
margin: 5px 0;
|
||||||
|
color: #555; /* Text color */
|
||||||
}
|
}
|
13
package-lock.json
generated
13
package-lock.json
generated
@ -2100,6 +2100,11 @@
|
|||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"os": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz",
|
||||||
|
"integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ=="
|
||||||
|
},
|
||||||
"otp-generator": {
|
"otp-generator": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/otp-generator/-/otp-generator-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/otp-generator/-/otp-generator-4.0.1.tgz",
|
||||||
@ -2203,6 +2208,14 @@
|
|||||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"pidusage": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/pidusage/-/pidusage-3.0.2.tgz",
|
||||||
|
"integrity": "sha512-g0VU+y08pKw5M8EZ2rIGiEBaB8wrQMjYGFfW2QVIfyT8V+fq8YFLkvlz4bz5ljvFDJYNFCWT3PWqcRr2FKO81w==",
|
||||||
|
"requires": {
|
||||||
|
"safe-buffer": "^5.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"pngjs": {
|
"pngjs": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
|
||||||
|
@ -38,8 +38,10 @@
|
|||||||
"mysql2": "^3.7.1",
|
"mysql2": "^3.7.1",
|
||||||
"node-fetch": "^3.3.2",
|
"node-fetch": "^3.3.2",
|
||||||
"nodemailer": "^6.9.8",
|
"nodemailer": "^6.9.8",
|
||||||
|
"os": "^0.1.2",
|
||||||
"otp-generator": "^4.0.1",
|
"otp-generator": "^4.0.1",
|
||||||
"otplib": "^12.0.1",
|
"otplib": "^12.0.1",
|
||||||
|
"pidusage": "^3.0.2",
|
||||||
"qrcode": "^1.5.3",
|
"qrcode": "^1.5.3",
|
||||||
"sanitize-html": "^2.11.0",
|
"sanitize-html": "^2.11.0",
|
||||||
"sequelize": "^6.35.2",
|
"sequelize": "^6.35.2",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user