فهرست منبع

Merge pull request #1900 from jaapmarcus/fix/rename-package

#1548 Add support renaming packages via WebUI
Raphael Schneeberger 4 سال پیش
والد
کامیت
8c5bc4cba2
4فایلهای تغییر یافته به همراه27 افزوده شده و 6 حذف شده
  1. 4 0
      bin/v-copy-user-package
  2. 13 4
      bin/v-rename-user-package
  3. 9 1
      web/edit/package/index.php
  4. 1 1
      web/templates/pages/edit_package.html

+ 4 - 0
bin/v-copy-user-package

@@ -38,6 +38,10 @@ if [ ! -z $1 ]; then
     if [ ! -z $2 ]; then
         # Copy package
         cp -f $HESTIA/data/packages/$package.pkg $HESTIA/data/packages/$new_package.pkg
+        # Don't leave the .sh file behind
+        if [ ! -f $HESTIA/data/packages/$package.sh ]; then 
+            cp $HESTIA/data/packages/$package.sh $HESTIA/data/packages/$new_package.sh
+        fi
     else
         echo "Error: new package name not specified."
     fi

+ 13 - 4
bin/v-rename-user-package

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: change package name
-# options: OLD_NAME NEW_NAME
+# options: OLD_NAME NEW_NAME [mode]
 # labels: hestia
 #
 # example: v-rename-package package package2
@@ -15,6 +15,7 @@
 # Argument definition
 old_name=$1
 new_name=$2
+mode=$3
 
 # Includes
 # shellcheck source=/usr/local/hestia/func/main.sh
@@ -29,6 +30,7 @@ source $HESTIA/conf/hestia.conf
 #                    Verifications                         #
 #----------------------------------------------------------#
 
+
 # Ensure that package names have been passed to the script.
 if [ -z "$old_name" ]; then
     echo "ERROR: Current package name not specified."
@@ -49,17 +51,24 @@ check_hestia_demo_mode
 
 if [ -e $HESTIA/data/packages/$old_name.pkg ]; then
     mv $HESTIA/data/packages/$old_name.pkg $HESTIA/data/packages/$new_name.pkg
-    
+    # Don't leave the .sh file behind
+    if [ -e $HESTIA/data/packages/$old_name.sh ]; then 
+        mv $HESTIA/data/packages/$old_name.sh $HESTIA/data/packages/$new_name.sh
+    fi
 
     # Update package for existing users
     for user in `ls $HESTIA/data/users/`; do
         OLD_PACKAGE=$(v-get-user-value $user PACKAGE)
         if [ "$old_name" = "$OLD_PACKAGE" ]; then
-            echo "Updating package for user: $user..."
+            if [ "$mode" == "yes" ]; then
+                echo  "Successfully renamed package $old_name to $new_name."
+            fi
             v-change-user-package $user $new_name
         fi
     done
-    echo "Successfully renamed package $old_name to $new_name."
+    if [ "$mode" == "yes" ]; then 
+        echo  "Successfully renamed package $old_name to $new_name."
+    fi
 else
     echo "ERROR: Specified package not found."
 fi

+ 9 - 1
web/edit/package/index.php

@@ -33,6 +33,7 @@ unset($output);
 
 // Parse package
 $v_package = $_GET['package'];
+$v_package_new = $_GET['package'];
 $v_web_template = $data[$v_package]['WEB_TEMPLATE'];
 $v_backend_template = $data[$v_package]['BACKEND_TEMPLATE'];
 $v_proxy_template = $data[$v_package]['PROXY_TEMPLATE'];
@@ -104,6 +105,7 @@ if (!empty($_POST['save'])) {
 
     // Check empty fields
     if (empty($_POST['v_package'])) $errors[] = _('package');
+    if (empty($_POST['v_package_new'])) $errors[] = _('package_new');
     if (empty($_POST['v_web_template'])) $errors[] = _('web template');
     if (!empty($_SESSION['WEB_BACKEND'])) {
         if (empty($_POST['v_backend_template'])) $errors[] = _('backend template');
@@ -144,6 +146,7 @@ if (!empty($_POST['save'])) {
 
     // Protect input
     $v_package = escapeshellarg($_POST['v_package']);
+    $v_package_new = escapeshellarg($_POST['v_package_new']);
     $v_web_template = escapeshellarg($_POST['v_web_template']);
     if (!empty($_SESSION['WEB_BACKEND'])) {
         $v_backend_template = escapeshellarg($_POST['v_backend_template']);
@@ -225,7 +228,12 @@ if (!empty($_POST['save'])) {
     exec (HESTIA_CMD."v-update-user-package ".$v_package." 'json'", $output, $return_var);
     check_return_code($return_var,$output);
     unset($output);
-
+    
+    if($v_package_new != $v_package){
+        exec (HESTIA_CMD."v-rename-user-package " . $v_package . " " . $v_package_new, $output, $return_var);
+        check_return_code($return_var,$output);
+        unset($output);
+    }
     // Set success message
     if (empty($_SESSION['error_msg'])) {
         $_SESSION['ok_msg'] = _('Changes has been saved.');

+ 1 - 1
web/templates/pages/edit_package.html

@@ -61,7 +61,7 @@
 						</tr>
 						<tr>
 							<td>
-								<input type="text" size="20" class="vst-input" name="v_package" value="<?=htmlentities(trim($v_package, "'"))?>" disabled>
+								<input type="text" size="20" class="vst-input" name="v_package_new" value="<?=htmlentities(trim($v_package_new, "'"))?>">
 								<input type="hidden" name="v_package" value="<?=htmlentities(trim($v_package, "'"))?>">
 							</td>
 						</tr>