Преглед изворни кода

Web-Multiphp: Prevent removal of php backends with assigned webdomains

Robert Zollner пре 6 година
родитељ
комит
fa57c70cab
3 измењених фајлова са 56 додато и 3 уклоњено
  1. 16 3
      web/edit/server/index.php
  2. 27 0
      web/inc/main.php
  3. 13 0
      web/templates/admin/edit_server.html

+ 16 - 3
web/edit/server/index.php

@@ -50,7 +50,8 @@ sort($v_php_versions);
 if(empty($backend_templates))
     $v_php_versions=[];
 
-$v_php_versions = array_map(function($php_version) use ($backend_templates, $v_php_versions) {
+$backends_active = backendtpl_with_webdomains();
+$v_php_versions = array_map(function($php_version) use ($backend_templates, $backends_active) {
     // Mark installed php versions
 
     if(stripos($php_version,'php') !== 0)
@@ -59,17 +60,29 @@ $v_php_versions = array_map(function($php_version) use ($backend_templates, $v_p
     $phpinfo = (object) [
         "name" => $php_version,
         "tpl" => strtoupper(str_replace('.', '_', $php_version)),
-        "version" => str_ireplace('php-', '', $php_version)
+        "version" => str_ireplace('php-', '', $php_version),
+        "usedby" => [],
     ];
 
     if(in_array($phpinfo->tpl, $backend_templates)) {
         $phpinfo->installed = true;
     }
 
-    if(array_search($phpinfo->name, array_reverse($v_php_versions, true)) == array_key_last($v_php_versions)) {
+    if (array_key_exists($phpinfo->tpl, $backends_active)) {
+        // Prevent used php version to be removed
+        if($phpinfo->installed)
+            $phpinfo->protected = true;
+        $phpinfo->usedby = $backends_active[$phpinfo->tpl];
+    }
+
+    if ($phpinfo->name == DEFAULT_PHP_VERSION) {
         // Prevent default php version to be removed
         if($phpinfo->installed)
             $phpinfo->protected = true;
+
+        if (!empty($backends_active['default'])) {
+            $phpinfo->usedby = array_merge_recursive($phpinfo->usedby,$backends_active['default'] );
+        }
     }
 
     return $phpinfo;

+ 27 - 0
web/inc/main.php

@@ -4,6 +4,7 @@ session_start();
 
 define('HESTIA_CMD', '/usr/bin/sudo /usr/local/hestia/bin/');
 define('JS_LATEST_UPDATE', '1491697868');
+define('DEFAULT_PHP_VERSION', 'php-7.3');
 
 $i = 0;
 
@@ -373,3 +374,29 @@ function load_hestia_config() {
         $_SESSION[$key] = $value;
     }
 }
+
+/**
+ * Returns the list of all web domains from all users grouped by Backend Template used and owner
+ *
+ * @return array
+ */
+function backendtpl_with_webdomains() {
+    exec (HESTIA_CMD . "v-list-users json", $output, $return_var);
+    $users = json_decode(implode('', $output), true);
+    unset($output);
+
+    $backend_list=[];
+    foreach ($users as $user => $user_details) {
+        exec (HESTIA_CMD . "v-list-web-domains ". escapeshellarg($user) . " json", $output, $return_var);
+        $domains = json_decode(implode('', $output), true);
+        unset($output);
+
+        foreach ($domains as $domain => $domain_details) {
+            if (!empty($domain_details['BACKEND'])) {
+                $backend = $domain_details['BACKEND'];
+                $backend_list[$backend][$user][] = $domain;
+            }
+        }
+    }
+    return $backend_list;
+}

+ 13 - 0
web/templates/admin/edit_server.html

@@ -265,6 +265,19 @@
                                                 <label for="<?=$php_version->name?>"><?=$php_version->name?></label>
                                             </td>
                                         </tr>
+                                            <?php foreach($php_version->usedby as $wd_user => $wd_domains ): ?>
+                                                <?php foreach($wd_domains as $wd_domain ): ?>
+                                                <tr>
+                                                    <td class="vst-text" style="border: 1px lightgrey; padding:0 10px;">
+                                                        <span>
+                                                            <i class="fas fa-user"></i>
+                                                            <?=$wd_user;?>
+                                                        </span>
+                                                        <span class="optional" style="float:right"><?=$wd_domain;?></span>
+                                                    </td>
+                                                </tr>
+                                                <?php endforeach; ?>
+                                            <?php endforeach; ?>
                                         <?php endforeach; ?>
                                         <?php endif; ?>
                                     </table>