瀏覽代碼

Fix edit package (#2131)

* Fix edit pacakge

TODO add tests for create / edit / delete package

* Remove temp files + add tests

 ✓ Package: Create new Package 
 ✓ Package: Assign user to new Package 
 ✓ Package: Create new package (Duplicate) 
 ✓ Package: Update new Package 
 ✓ Package: Update package of user
 ✓ Package: Delete package
Jaap Marcus 4 年之前
父節點
當前提交
93a665b940
共有 3 個文件被更改,包括 59 次插入16 次删除
  1. 52 3
      test/test.bats
  2. 1 0
      web/add/package/index.php
  3. 6 13
      web/edit/package/index.php

+ 52 - 3
test/test.bats

@@ -1462,9 +1462,58 @@ function check_ip_not_banned(){
 @test "Test Whitelist Fail2ban" {
 
 echo   "1.2.3.4" >> $HESTIA/data/firewall/excludes.conf
-run v-add-firewall-ban '1.2.3.4' 'HESTIA'
-rm $HESTIA/data/firewall/excludes.conf
-check_ip_not_banned '1.2.3.4' 'HESTIA'
+  run v-add-firewall-ban '1.2.3.4' 'HESTIA'
+  rm $HESTIA/data/firewall/excludes.conf
+  check_ip_not_banned '1.2.3.4' 'HESTIA'
+}
+
+#----------------------------------------------------------#
+#                         PACKAGE                          #
+#----------------------------------------------------------#
+
+@test "Package: Create new Package" {
+    cp $HESTIA/data/packages/default.pkg /tmp/package
+    run v-add-user-package /tmp/package hestiatest
+    assert_success
+    refute_output
+}
+
+@test "Package: Assign user to new Package" {
+    run v-change-user-package  $user hestiatest
+    assert_success
+    refute_output
+}
+
+@test "Package: Create new package (Duplicate)" {
+    sed -i "s/BANDWIDTH='unlimited'/BANDWIDTH='100'/g" /tmp/package
+    run v-add-user-package /tmp/package hestiatest
+    assert_failure $E_EXISTS
+}
+
+@test "Package: Update new Package" {
+    sed -i "s/BANDWIDTH='unlimited'/BANDWIDTH='100'/g" /tmp/package
+    run v-add-user-package /tmp/package hestiatest yes
+    assert_success
+    refute_output
+}
+
+@test "Package: Update package of user" {
+    run v-change-user-package  $user hestiatest
+    assert_success
+    refute_output
+    run grep "BANDWIDTH='100'" $HESTIA/data/users/$user/user.conf
+    assert_success
+    assert_output --partial "100"
+}
+
+@test "Package: Delete package" {
+    run v-delete-user-package hestiatest
+    rm /tmp/package
+    assert_success
+    refute_output
+    run grep "BANDWIDTH='unlimited'" $HESTIA/data/users/$user/user.conf
+    assert_success
+    assert_output --partial "unlimited"
 }
 
 #----------------------------------------------------------#

+ 1 - 0
web/add/package/index.php

@@ -179,6 +179,7 @@ if (!empty($_POST['ok'])) {
         unset($output);
 
         fclose($fp);
+        unlink($tmpfile);
     }
 
     // Flush field values on success

+ 6 - 13
web/edit/package/index.php

@@ -233,11 +233,6 @@ if (!empty($_POST['save'])) {
     $v_time = escapeshellarg(date('H:i:s'));
     $v_date = escapeshellarg(date('Y-m-d'));
 
-    // Create temprorary directory
-    exec('mktemp -d', $output, $return_var);
-    $tmpdir = $output[0];
-    unset($output);
-
     // Save package file on a fs
     $pkg = "WEB_TEMPLATE=".$v_web_template."\n";
     $pkg .= "BACKEND_TEMPLATE=".$v_backend_template."\n";
@@ -258,18 +253,16 @@ if (!empty($_POST['save'])) {
     $pkg .= "BACKUPS=".$v_backups."\n";
     $pkg .= "TIME=".$v_time."\n";
     $pkg .= "DATE=".$v_date."\n";
-    $fp = fopen($tmpdir."/".$_POST['v_package'].".pkg", 'w');
-    fwrite($fp, $pkg);
-    fclose($fp);
 
-    // Save changes
-    exec(HESTIA_CMD."v-add-user-package ".$tmpdir." ".$v_package." 'yes'", $output, $return_var);
+    $tmpfile = tempnam('/tmp/', 'hst_');
+    $fp = fopen($tmpfile, 'w');
+    fwrite($fp, $pkg);
+    exec(HESTIA_CMD."v-add-user-package ".$tmpfile." ".$v_package." yes", $output, $return_var);
     check_return_code($return_var, $output);
     unset($output);
 
-    // Remove temporary dir
-    exec('rm -rf '.$tmpdir, $output, $return_var);
-    unset($output);
+    fclose($fp);
+    unlink($tmpfile);
 
     // Propogate new package
     exec(HESTIA_CMD."v-update-user-package ".$v_package." 'json'", $output, $return_var);