mirror of
https://github.com/9technologygroup/patchmon.net.git
synced 2025-11-21 15:09:21 +00:00
added reboot required flag
added kernel running/installed version Added dasboard card and filteres for reboot fixed security qty updated on dnf
This commit is contained in:
@@ -92,58 +92,63 @@ async function createDefaultDashboardPreferences(userId, userRole = "user") {
|
||||
requiredPermission: "can_view_hosts",
|
||||
order: 5,
|
||||
},
|
||||
{
|
||||
cardId: "hostsNeedingReboot",
|
||||
requiredPermission: "can_view_hosts",
|
||||
order: 6,
|
||||
},
|
||||
|
||||
// Repository-related cards
|
||||
{ cardId: "totalRepos", requiredPermission: "can_view_hosts", order: 6 },
|
||||
{ cardId: "totalRepos", requiredPermission: "can_view_hosts", order: 7 },
|
||||
|
||||
// User management cards (admin only)
|
||||
{ cardId: "totalUsers", requiredPermission: "can_view_users", order: 7 },
|
||||
{ cardId: "totalUsers", requiredPermission: "can_view_users", order: 8 },
|
||||
|
||||
// System/Report cards
|
||||
{
|
||||
cardId: "osDistribution",
|
||||
requiredPermission: "can_view_reports",
|
||||
order: 8,
|
||||
order: 9,
|
||||
},
|
||||
{
|
||||
cardId: "osDistributionBar",
|
||||
requiredPermission: "can_view_reports",
|
||||
order: 9,
|
||||
order: 10,
|
||||
},
|
||||
{
|
||||
cardId: "osDistributionDoughnut",
|
||||
requiredPermission: "can_view_reports",
|
||||
order: 10,
|
||||
order: 11,
|
||||
},
|
||||
{
|
||||
cardId: "recentCollection",
|
||||
requiredPermission: "can_view_hosts",
|
||||
order: 11,
|
||||
order: 12,
|
||||
},
|
||||
{
|
||||
cardId: "updateStatus",
|
||||
requiredPermission: "can_view_reports",
|
||||
order: 12,
|
||||
order: 13,
|
||||
},
|
||||
{
|
||||
cardId: "packagePriority",
|
||||
requiredPermission: "can_view_packages",
|
||||
order: 13,
|
||||
order: 14,
|
||||
},
|
||||
{
|
||||
cardId: "packageTrends",
|
||||
requiredPermission: "can_view_packages",
|
||||
order: 14,
|
||||
order: 15,
|
||||
},
|
||||
{
|
||||
cardId: "recentUsers",
|
||||
requiredPermission: "can_view_users",
|
||||
order: 15,
|
||||
order: 16,
|
||||
},
|
||||
{
|
||||
cardId: "quickStats",
|
||||
requiredPermission: "can_view_dashboard",
|
||||
order: 16,
|
||||
order: 17,
|
||||
},
|
||||
];
|
||||
|
||||
@@ -290,26 +295,33 @@ router.get("/defaults", authenticateToken, async (_req, res) => {
|
||||
enabled: true,
|
||||
order: 5,
|
||||
},
|
||||
{
|
||||
cardId: "hostsNeedingReboot",
|
||||
title: "Needs Reboots",
|
||||
icon: "RotateCcw",
|
||||
enabled: true,
|
||||
order: 6,
|
||||
},
|
||||
{
|
||||
cardId: "totalRepos",
|
||||
title: "Repositories",
|
||||
icon: "GitBranch",
|
||||
enabled: true,
|
||||
order: 6,
|
||||
order: 7,
|
||||
},
|
||||
{
|
||||
cardId: "totalUsers",
|
||||
title: "Users",
|
||||
icon: "Users",
|
||||
enabled: true,
|
||||
order: 7,
|
||||
order: 8,
|
||||
},
|
||||
{
|
||||
cardId: "osDistribution",
|
||||
title: "OS Distribution",
|
||||
icon: "BarChart3",
|
||||
enabled: true,
|
||||
order: 8,
|
||||
order: 9,
|
||||
},
|
||||
{
|
||||
cardId: "osDistributionBar",
|
||||
|
||||
@@ -41,6 +41,7 @@ router.get(
|
||||
erroredHosts,
|
||||
securityUpdates,
|
||||
offlineHosts,
|
||||
hostsNeedingReboot,
|
||||
totalHostGroups,
|
||||
totalUsers,
|
||||
totalRepos,
|
||||
@@ -106,6 +107,13 @@ router.get(
|
||||
},
|
||||
}),
|
||||
|
||||
// Hosts needing reboot
|
||||
prisma.hosts.count({
|
||||
where: {
|
||||
needs_reboot: true,
|
||||
},
|
||||
}),
|
||||
|
||||
// Total host groups count
|
||||
prisma.host_groups.count(),
|
||||
|
||||
@@ -174,6 +182,7 @@ router.get(
|
||||
erroredHosts,
|
||||
securityUpdates,
|
||||
offlineHosts,
|
||||
hostsNeedingReboot,
|
||||
totalHostGroups,
|
||||
totalUsers,
|
||||
totalRepos,
|
||||
@@ -217,6 +226,7 @@ router.get("/hosts", authenticateToken, requireViewHosts, async (_req, res) => {
|
||||
auto_update: true,
|
||||
notes: true,
|
||||
api_id: true,
|
||||
needs_reboot: true,
|
||||
host_group_memberships: {
|
||||
include: {
|
||||
host_groups: {
|
||||
|
||||
@@ -59,6 +59,7 @@ router.get("/:id", authenticateToken, async (req, res) => {
|
||||
os_version: true,
|
||||
status: true,
|
||||
last_update: true,
|
||||
needs_reboot: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -259,6 +260,7 @@ router.get("/:id/hosts", authenticateToken, async (req, res) => {
|
||||
status: true,
|
||||
last_update: true,
|
||||
created_at: true,
|
||||
needs_reboot: true,
|
||||
},
|
||||
orderBy: {
|
||||
friendly_name: "asc",
|
||||
|
||||
@@ -533,6 +533,14 @@ router.post(
|
||||
.optional()
|
||||
.isString()
|
||||
.withMessage("Machine ID must be a string"),
|
||||
body("needsReboot")
|
||||
.optional()
|
||||
.isBoolean()
|
||||
.withMessage("Needs reboot must be a boolean"),
|
||||
body("rebootReason")
|
||||
.optional()
|
||||
.isString()
|
||||
.withMessage("Reboot reason must be a string"),
|
||||
],
|
||||
async (req, res) => {
|
||||
try {
|
||||
@@ -596,6 +604,10 @@ router.post(
|
||||
updateData.system_uptime = req.body.systemUptime;
|
||||
if (req.body.loadAverage) updateData.load_average = req.body.loadAverage;
|
||||
|
||||
// Reboot Status
|
||||
if (req.body.needsReboot !== undefined)
|
||||
updateData.needs_reboot = req.body.needsReboot;
|
||||
|
||||
// If this is the first update (status is 'pending'), change to 'active'
|
||||
if (host.status === "pending") {
|
||||
updateData.status = "active";
|
||||
|
||||
@@ -142,6 +142,7 @@ router.get("/", async (req, res) => {
|
||||
friendly_name: true,
|
||||
hostname: true,
|
||||
os_type: true,
|
||||
needs_reboot: true,
|
||||
},
|
||||
},
|
||||
current_version: true,
|
||||
@@ -236,6 +237,7 @@ router.get("/:packageId", async (req, res) => {
|
||||
os_type: true,
|
||||
os_version: true,
|
||||
last_update: true,
|
||||
needs_reboot: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -365,6 +367,7 @@ router.get("/:packageId/hosts", async (req, res) => {
|
||||
os_type: true,
|
||||
os_version: true,
|
||||
last_update: true,
|
||||
needs_reboot: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -386,6 +389,7 @@ router.get("/:packageId/hosts", async (req, res) => {
|
||||
needsUpdate: hp.needs_update,
|
||||
isSecurityUpdate: hp.is_security_update,
|
||||
lastChecked: hp.last_checked,
|
||||
needsReboot: hp.hosts.needs_reboot,
|
||||
}));
|
||||
|
||||
res.json({
|
||||
|
||||
@@ -119,6 +119,7 @@ router.get(
|
||||
os_version: true,
|
||||
status: true,
|
||||
last_update: true,
|
||||
needs_reboot: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user