diff --git a/baseTemplate/static/baseTemplate/custom-js/system-status.js b/baseTemplate/static/baseTemplate/custom-js/system-status.js index 739be30ac..5086d4187 100644 --- a/baseTemplate/static/baseTemplate/custom-js/system-status.js +++ b/baseTemplate/static/baseTemplate/custom-js/system-status.js @@ -869,10 +869,6 @@ app.controller('OnboardingCP', function ($scope, $http, $timeout, $window) { }); app.controller('dashboardStatsController', function ($scope, $http, $timeout) { - // Defensive: force modal hidden on load - $scope.showSessionModal = false; - $timeout(function() { $scope.showSessionModal = false; }, 200); - // Card values $scope.totalSites = 0; $scope.totalWPSites = 0; @@ -1201,54 +1197,41 @@ app.controller('dashboardStatsController', function ($scope, $http, $timeout) { pollAll(); }, 500); - // User Session Modal logic - $scope.showSessionModal = false; - $scope.sessionUser = ''; - $scope.sessionTTY = ''; - $scope.sessionWOutput = ''; - $scope.sessionTTYProcesses = ''; - $scope.sessionProcesses = ''; - $scope.sessionLoading = false; - $scope.sessionError = ''; - - $scope.showUserSession = function(login) { - $scope.sessionUser = login.user; - $scope.sessionTTY = login.tty || ''; - $scope.sessionWOutput = ''; - $scope.sessionTTYProcesses = ''; - $scope.sessionProcesses = ''; - $scope.sessionLoading = true; - $scope.sessionError = ''; - $scope.showSessionModal = true; - var postData = { user: login.user }; - // Try to extract tty from login.raw or login.tty if available + // SSH User Activity Modal + $scope.showSSHActivityModal = false; + $scope.sshActivity = { processes: [], w: [] }; + $scope.sshActivityUser = ''; + $scope.loadingSSHActivity = false; + $scope.errorSSHActivity = ''; + $scope.viewSSHActivity = function(login) { + $scope.showSSHActivityModal = true; + $scope.sshActivity = { processes: [], w: [] }; + $scope.sshActivityUser = login.user; + $scope.loadingSSHActivity = true; + $scope.errorSSHActivity = ''; + var tty = ''; + // Try to extract tty from login.raw or login.session if available if (login.raw) { - var m = login.raw.match(/(pts\/[0-9]+)/); - if (m) postData.tty = m[1]; - } else if (login.tty) { - postData.tty = login.tty; + var match = login.raw.match(/(pts\/[0-9]+)/); + if (match) tty = match[1]; } - $http.post('/base/getUserSessionInfo', postData).then(function(response) { - $scope.sessionLoading = false; - var data = response.data; - $scope.sessionWOutput = data.w_output || ''; - $scope.sessionTTYProcesses = data.tty_processes || ''; - $scope.sessionProcesses = data.processes || ''; + $http.post('/baseTemplate/getSSHUserActivity', { user: login.user, tty: tty }).then(function(response) { + $scope.loadingSSHActivity = false; + if (response.data) { + $scope.sshActivity = response.data; + } else { + $scope.sshActivity = { processes: [], w: [] }; + } }, function(err) { - $scope.sessionLoading = false; - $scope.sessionError = (err.data && err.data.error) ? err.data.error : 'Failed to fetch session info.'; + $scope.loadingSSHActivity = false; + $scope.errorSSHActivity = (err.data && err.data.error) ? err.data.error : 'Failed to fetch activity.'; }); }; - - $scope.closeSessionModal = function() { - $scope.showSessionModal = false; - $scope.sessionUser = ''; - $scope.sessionTTY = ''; - $scope.sessionWOutput = ''; - $scope.sessionTTYProcesses = ''; - $scope.sessionProcesses = ''; - $scope.sessionLoading = false; - $scope.sessionError = ''; - $timeout(function() { $scope.showSessionModal = false; }, 200); + $scope.closeSSHActivityModal = function() { + $scope.showSSHActivityModal = false; + $scope.sshActivity = { processes: [], w: [] }; + $scope.sshActivityUser = ''; + $scope.loadingSSHActivity = false; + $scope.errorSSHActivity = ''; }; }); \ No newline at end of file diff --git a/baseTemplate/templates/baseTemplate/homePage.html b/baseTemplate/templates/baseTemplate/homePage.html index a2bc6e214..8af419e0c 100755 --- a/baseTemplate/templates/baseTemplate/homePage.html +++ b/baseTemplate/templates/baseTemplate/homePage.html @@ -126,7 +126,7 @@ " > {$ totalSites $} - +
Total Sites -
- - - - + + + + + {$ totalWPSites $} - +
WordPress Sites -
- - - -
+ + + + + {$ totalDBs $} - +
Total Databases -
- - - -
+ + + + + - - - - + + + +
-
+
-
+
- {% if admin %} + {% if admin %}
@@ -494,12 +494,12 @@
Recent SSH Logins -
+
-
+
Loading...
{$ errorSSHLogins $}
No recent SSH logins found.
@@ -512,7 +512,7 @@ Country Date Session - Actions + Activity @@ -523,15 +523,13 @@ {$ login.date $} {$ login.session $} - + - - + +
@@ -565,7 +563,7 @@
- {% endif %} + {% endif %} @@ -1038,31 +1036,6 @@ .refresh-btn:hover .refresh-icon { transform: rotate(360deg); } - - /* User Session Modal */ - .view-session-btn:hover { - background: #4c5fad !important; - color: #fff !important; - border-color: #4c5fad !important; - transform: translateY(-2px); - box-shadow: 0 4px 15px rgba(76,95,173,0.10); - } - - .modal.fade[ng-show] { - display: block !important; - opacity: 1; - pointer-events: auto; - z-index: 9999; - } - - [ng-cloak] { display: none !important; } - .modal.fade[ng-show] { - display: block !important; - opacity: 1; - pointer-events: auto; - z-index: 9999; - transition: opacity 0.2s; - } @@ -1118,35 +1091,42 @@ }, 100); }); - - -