Browse Source

#766 Creates .bash_aliases with a alias to the wanted php Please note crontab / cronjobs are not affected

Jaap Marcus 5 years ago
parent
commit
fa9fbbcbbc
4 changed files with 217 additions and 15 deletions
  1. 76 0
      bin/v-change-user-php-cli
  2. 88 0
      bin/v-list-sys-php
  3. 17 0
      web/edit/user/index.php
  4. 36 15
      web/templates/admin/edit_user.html

+ 76 - 0
bin/v-change-user-php-cli

@@ -0,0 +1,76 @@
+#!/bin/bash
+# info: add php version to .bash_aliases
+# options: USER VERSION
+
+#  add line to .bash_aliases to set default php incase of multiPHP
+
+
+#----------------------------------------------------------#
+#                    Variable&Function                     #
+#----------------------------------------------------------#
+
+# Argument definition
+user=$1
+version=$2
+
+
+# Includes
+source $HESTIA/func/main.sh
+source $HESTIA/conf/hestia.conf
+
+
+#----------------------------------------------------------#
+#                    Verifications                         #
+#----------------------------------------------------------#
+
+# Reading user values
+source $USER_DATA/user.conf
+
+FILE=$HOMEDIR/$user/.bash_aliases
+
+is_format_valid 'user'
+is_object_valid 'user' 'USER' "$user"
+is_object_unsuspended 'user' 'USER' "$user"
+
+# Verify php version format
+if [[ ! $version =~ ^[0-9]\.[0-9]+ ]]; then
+    echo "The php version format is invalid, it should look like [0-9].[0-9]..."
+    exit
+fi
+
+# Check if php version is supported
+if [ ! -f "$HESTIA_INSTALL_DIR/multiphp/$WEB_SYSTEM/PHP-${version//.}.sh" ]; then
+    echo "Version is currently not supported or does not exist..."
+    exit
+fi
+
+if grep -q "alias php='env php$version'" "$FILE"; then
+  echo "PHP CLI Already defined"
+  exit;
+fi
+
+#----------------------------------------------------------#
+#                       Action                             #
+#----------------------------------------------------------#
+
+#create .bash_aliases is not exsists
+if [ ! -f "$FILE" ]; then
+    touch "$FILE"
+fi
+
+sed -i "/alias php='env/d" "$FILE"
+
+echo "alias php='env php$version'" >> $FILE
+
+# Change language
+if [ -z "$(grep PHPCLI $USER_DATA/user.conf)" ]; then
+    sed -i "s/^TIME/PHPCLI='$version'\nTIME/g" $USER_DATA/user.conf
+else
+    update_user_value "$user" '$PHPCLI' "$version"
+fi
+
+#----------------------------------------------------------#
+#                       Hestia                             #
+#----------------------------------------------------------#
+
+exit

+ 88 - 0
bin/v-list-sys-php

@@ -0,0 +1,88 @@
+#!/bin/bash
+# info: listing availble PHP versions installed
+# options: [FORMAT]
+#
+# List /etc/php/* version check if folder fpm is avalible
+
+
+#----------------------------------------------------------#
+#                    Variable&Function                     #
+#----------------------------------------------------------#
+
+# Argument definition
+format=${1-shell}
+
+# Includes
+source $HESTIA/func/main.sh
+source $HESTIA/conf/hestia.conf
+
+# JSON list function
+json_list() {
+    i=1
+    objects=$(echo "$versions" |wc -w)
+    echo '['
+    for version in $versions; do
+        if [ "$i" -lt "$objects" ]; then
+            echo -e  "\t\"$version\","
+        else
+            echo -e  "\t\"$version\""
+        fi
+        (( ++i))
+    done
+    echo "]"
+}
+
+# SHELL list function
+shell_list() {
+    echo "VERSION"
+    echo "--------"
+    for version in $versions; do
+        echo "$version"
+    done
+}
+
+# PLAIN list function
+plain_list() {
+    for version in $versions; do
+        echo "$version"
+    done
+}
+
+# CSV list function
+csv_list() {
+    echo "VERSION"
+    for version in $versions; do
+        echo "$version"
+    done
+}
+
+
+#----------------------------------------------------------#
+#                       Action                             #
+#----------------------------------------------------------#
+
+# List trough /etc/php
+versions_list=$(ls -d /etc/php/*)
+versions=()
+for version in $versions_list; do
+    if [ -d "$version/fpm" ] 
+    then
+    version=$(echo $version | cut -d'/' -f4);
+    versions+=" $version"
+    fi
+done
+
+# Listing data
+case $format in
+    json)   json_list ;;
+    plain)  plain_list ;;
+    csv)    csv_list ;;
+    shell)  shell_list ;;
+esac
+
+
+#----------------------------------------------------------#
+#                       Hestia                             #
+#----------------------------------------------------------#
+
+exit

+ 17 - 0
web/edit/user/index.php

@@ -38,6 +38,7 @@ $v_lname = $data[$v_username]['LNAME'];
 $v_shell = $data[$v_username]['SHELL'];
 $v_twofa = $data[$v_username]['TWOFA'];
 $v_qrcode = $data[$v_username]['QRCODE'];
+$v_phpcli = $data[$v_username]['PHPCLI'];
 $v_ns = $data[$v_username]['NS'];
 $nameservers = explode(",", $v_ns);
 $v_ns1 = $nameservers[0];
@@ -73,6 +74,14 @@ exec (HESTIA_CMD."v-list-sys-shells json", $output, $return_var);
 $shells = json_decode(implode('', $output), true);
 unset($output);
 
+//List PHP Versions
+// List supported php versions
+exec (HESTIA_CMD."v-list-sys-php json", $output, $return_var);
+$php_versions = json_decode(implode('', $output), true);
+unset($output);
+
+
+
 // Are you admin?
 
 // Check POST request
@@ -131,6 +140,14 @@ if (!empty($_POST['save'])) {
         unset($output);
     }
 
+    // Change phpcli (admin only)
+    if (($v_phpcli != $_POST['v_phpcli']) && ($_SESSION['user'] == 'admin') && (empty($_SESSION['error_msg']))) {
+        $v_phpcli = escapeshellarg($_POST['v_phpcli']);
+        exec (HESTIA_CMD."v-change-user-php-cli ".escapeshellarg($v_username)." ".$v_phpcli, $output, $return_var);
+        check_return_code($return_var,$output);
+        unset($output);
+    }
+
     // Change language
     if (($v_language != $_POST['v_language']) && (empty($_SESSION['error_msg']))) {
         $v_language = escapeshellarg($_POST['v_language']);

+ 36 - 15
web/templates/admin/edit_user.html

@@ -4,6 +4,15 @@
             <a class="ui-button cancel" id="btn-back" href="/list/user/"><i class="fas fa-arrow-left status-icon blue"></i> <?=__('Back')?></a>
           </div>
           <div class="l-unit-toolbar__buttonstrip float-right">
+              <?php
+              if (!empty($_SESSION['error_msg'])) {
+                echo "<span class=\"vst-error\"> → ".htmlentities($_SESSION['error_msg'])."</span>";
+              } else {
+                if (!empty($_SESSION['ok_msg'])) {
+                  echo "<span class=\"vst-ok\"> → ".$_SESSION['ok_msg']."</span>";
+                }
+              }
+            ?>
             <a href="#" class="ui-button" title="<?=__('Save')?>" data-action="submit" data-id="vstobjects"><i class="fas fa-save status-icon purple"></i> <?=__('Save')?></a>
           </div>
         </div>
@@ -41,20 +50,7 @@
                                 <td class="step-top">
                                     <span class="page-title"><?=__('Editing User')?></span>
                                 </td>
-                            </tr>
-                            <tr>
-                                <td>
-                                    <?php
-                                        if (!empty($_SESSION['error_msg'])) {
-                                            echo "<span class=\"vst-error\"> <i class=\"fas fa-exclamation-circle status-icon red\"></i> ".htmlentities($_SESSION['error_msg'])."</span>";
-                                        } else {
-                                            if (!empty($_SESSION['ok_msg'])) {
-                                                echo "<span class=\"vst-ok\"> <i class=\"fas fa-check-circle status-icon green\"></i> ".$_SESSION['ok_msg']."</span>";
-                                            }
-                                        }
-                                    ?>
-                                </td>
-                            </tr>
+                            </tr>  
                             <tr>
                                 <td class="vst-text step-top">
                                     <?php print __('Username');?>
@@ -78,7 +74,7 @@
                             </tr>
                             <tr>
                                 <td>
-                                    <label><input type="checkbox" class="vst-checkbox password-option" name="v_twofa" <?php if(!empty($v_twofa)) echo "checked=yes" ?>> <?php print __('Enable 2FA');?></label>
+                                    <label><input type="checkbox" class="vst-checkbox password-option" name="v_twofa" <?php if(!empty($v_twofa)) echo "checked=yes" ?> onclick="App.Actions.WEB.toggle_twofa(this)"> <?php print __('Enable 2FA');?></label>
                                     <?php if (!empty($v_twofa)) { ?>
                                     <p><?php echo __('2FA Reset Code:').' '.$v_twofa; ?></br></p>
                                     <p><?php echo __('Please scan the code below in your 2FA application:'); ?></p>
@@ -137,6 +133,31 @@
                                     </select>
                                 </td>
                             </tr>
+                            <tr>
+                                <td class="vst-text input-label">
+                                    <?php print __('PHP_CLI');?>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>
+                                    <select class="vst-list" name="v_phpcli">
+                                        <?php
+                                            foreach ($php_versions as $key => $value) {
+                                                $php = explode('-',$value);
+                                                echo "\t\t\t\t<option value=\"".$value."\"";
+                                                $svalue = "'".$value."'";
+                                                if ((!empty($v_phpcli)) && ( $value == $v_phpcli ) || ($svalue == $v_phpcli)){
+                                                    echo ' selected' ;
+                                                }
+                                                if ((empty($v_phpcli)) && ($value == DEFAULT_PHP_VERSION)){
+                                                    echo ' selected' ;
+                                                }
+                                                echo ">".htmlentities($value)."</option>\n";
+                                            }
+                                        ?>
+                                    </select>
+                                </td>
+                            </tr>
                             <tr>
                                 <td class="vst-text input-label">
                                     <?php print __('Language');?>