Browse Source

Performance: Do not load notification list on every pageload

Robert Zollner 6 years ago
parent
commit
40d516ec05
3 changed files with 6 additions and 18 deletions
  1. 1 0
      CHANGELOG.md
  2. 4 3
      bin/v-list-user
  3. 1 15
      web/inc/main.php

+ 1 - 0
CHANGELOG.md

@@ -31,6 +31,7 @@ All notable changes to this project will be documented in this file.
 - Added a confirmation dialog when deleting user logs (/list/log/)
 - Fixed issue with sftp-jail not working for users restored from backups
 - SecImprove: Improved input validation in multiple cli scripts
+- Performance: Do not load complete notifications list on every page load, reduced load time from over 1sec to under 100ms
 
 ## [1.0.5] - 2019-08-06 - Hotfix
 ### Bugfixes

+ 4 - 3
bin/v-list-user

@@ -74,6 +74,7 @@ json_list() {
         "U_CRON_JOBS": "'$U_CRON_JOBS'",
         "U_BACKUPS": "'$U_BACKUPS'",
         "LANGUAGE": "'$LANGUAGE'",
+        "NOTIFICATIONS": "'$NOTIFICATIONS'",
         "TIME": "'$TIME'",
         "DATE": "'$DATE'"
         }
@@ -120,7 +121,7 @@ plain_list() {
     echo -ne "$U_WEB_DOMAINS\t$U_WEB_SSL\t$U_WEB_ALIASES\t"
     echo -ne "$U_DNS_DOMAINS\t$U_DNS_RECORDS\t$U_MAIL_DOMAINS\t"
     echo -ne "$U_MAIL_DKIM\t$U_MAIL_ACCOUNTS\t$U_DATABASES\t"
-    echo -e "'$U_CRON_JOBS\t$U_BACKUPS\t$LANGUAGE\t$TIME\t$DATE"
+    echo -e "$U_CRON_JOBS\t$U_BACKUPS\t$LANGUAGE\t$TIME\t$DATE"
 }
 
 # CSV list function
@@ -135,7 +136,7 @@ csv_list() {
     echo -n "U_DISK_WEB,U_DISK_MAIL,U_DISK_DB,U_BANDWIDTH,U_WEB_DOMAINS,"
     echo -n "U_WEB_SSL,U_WEB_ALIASES,U_DNS_DOMAINS,U_DNS_RECORDS,"
     echo -n "U_MAIL_DOMAINS,U_MAIL_DKIM,U_MAIL_ACCOUNTS,U_DATABASES"
-    echo "U_CRON_JOBS,U_BACKUPS,LANGUAGE,TIME,DATE"
+    echo "U_CRON_JOBS,U_BACKUPS,LANGUAGE,NOTIFICATIONS,TIME,DATE"
     echo -n "$USER,\"$FNAME\",\"$LNAME\",$PACKAGE,$WEB_TEMPLATE,"
     echo -n "$BACKEND_TEMPLATE,$PROXY_TEMPLATE,$DNS_TEMPLATE,$WEB_DOMAINS,"
     echo -n "$WEB_ALIASES,$DNS_DOMAINS,$DNS_RECORDS,$MAIL_DOMAINS,"
@@ -147,7 +148,7 @@ csv_list() {
     echo -n "$U_DISK_MAIL,$U_DISK_DB,$U_BANDWIDTH,$U_WEB_DOMAINS,$U_WEB_SSL,"
     echo -n "$U_WEB_ALIASES,$U_DNS_DOMAINS,$U_DNS_RECORDS,$U_MAIL_DOMAINS,"
     echo -n "$U_MAIL_DKIM,$U_MAIL_ACCOUNTS,$U_DATABASES,$U_CRON_JOBS,"
-    echo "$U_BACKUPS,$LANGUAGE,$TIME,$DATE"
+    echo "$U_BACKUPS,$LANGUAGE,$NOTIFICATIONS,$TIME,$DATE"
 }
 
 

+ 1 - 15
web/inc/main.php

@@ -167,7 +167,7 @@ function render_page($user, $TAB, $page) {
 
 function top_panel($user, $TAB) {
     global $panel;
-    $command = HESTIA_CMD."v-list-user '".$user."' 'json'";
+    $command = HESTIA_CMD."v-list-user ".escapeshellarg($user)." 'json'";
     exec ($command, $output, $return_var);
     if ( $return_var > 0 ) {
         header("Location: /error/");
@@ -176,20 +176,6 @@ function top_panel($user, $TAB) {
     $panel = json_decode(implode('', $output), true);
     unset($output);
 
-
-    // getting notifications
-    $command = HESTIA_CMD."v-list-user-notifications '".$user."' 'json'";
-    exec ($command, $output, $return_var);
-    $notifications = json_decode(implode('', $output), true);
-    foreach($notifications as $message){
-        if($message['ACK'] == 'no'){
-            $panel[$user]['NOTIFICATIONS'] = 'yes';
-            break;
-        }
-    }
-    unset($output);
-
-
     if ( $user == 'admin' ) {
         include(dirname(__FILE__).'/../templates/admin/panel.html');
     } else {