Skip to content

Commit 1d558b1

Browse files
author
Kristan Kenney
authored
Merge pull request hestiacp#802 from jaapmarcus/feature-user-phpcli
hestiacp#766 Feature Selectable user CLI
2 parents add7fde + a89ee05 commit 1d558b1

File tree

4 files changed

+207
-1
lines changed

4 files changed

+207
-1
lines changed

bin/v-change-user-php-cli

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#!/bin/bash
2+
# info: add php version to .bash_aliases
3+
# options: USER VERSION
4+
5+
# add line to .bash_aliases to set default php incase of multiPHP
6+
7+
8+
#----------------------------------------------------------#
9+
# Variable&Function #
10+
#----------------------------------------------------------#
11+
12+
# Argument definition
13+
user=$1
14+
version=$2
15+
16+
17+
# Includes
18+
source $HESTIA/func/main.sh
19+
source $HESTIA/conf/hestia.conf
20+
21+
22+
#----------------------------------------------------------#
23+
# Verifications #
24+
#----------------------------------------------------------#
25+
26+
# Reading user values
27+
source $USER_DATA/user.conf
28+
29+
FILE=$HOMEDIR/$user/.bash_aliases
30+
31+
is_format_valid 'user'
32+
is_object_valid 'user' 'USER' "$user"
33+
is_object_unsuspended 'user' 'USER' "$user"
34+
35+
# Verify php version format
36+
if [[ ! $version =~ ^[0-9]\.[0-9]+ ]]; then
37+
echo "The php version format is invalid, it should look like [0-9].[0-9]..."
38+
exit
39+
fi
40+
41+
# Check if php version is supported
42+
if [ ! -f "$HESTIA_INSTALL_DIR/multiphp/$WEB_SYSTEM/PHP-${version//.}.sh" ]; then
43+
echo "Version is currently not supported or does not exist..."
44+
exit
45+
fi
46+
47+
if grep -q "alias php='env php$version'" "$FILE"; then
48+
echo "PHP CLI Already defined"
49+
exit;
50+
fi
51+
52+
#----------------------------------------------------------#
53+
# Action #
54+
#----------------------------------------------------------#
55+
56+
#create .bash_aliases is not exsists
57+
if [ ! -f "$FILE" ]; then
58+
touch "$FILE"
59+
fi
60+
61+
sed -i "/alias php='env/d" "$FILE"
62+
63+
echo "alias php='env php$version'" >> $FILE
64+
65+
# Change language
66+
if [ -z "$(grep PHPCLI $USER_DATA/user.conf)" ]; then
67+
sed -i "s/^TIME/PHPCLI='$version'\nTIME/g" $USER_DATA/user.conf
68+
else
69+
update_user_value "$user" '$PHPCLI' "$version"
70+
fi
71+
72+
#----------------------------------------------------------#
73+
# Hestia #
74+
#----------------------------------------------------------#
75+
76+
exit

bin/v-list-sys-php

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#!/bin/bash
2+
# info: listing availble PHP versions installed
3+
# options: [FORMAT]
4+
#
5+
# List /etc/php/* version check if folder fpm is avalible
6+
7+
8+
#----------------------------------------------------------#
9+
# Variable&Function #
10+
#----------------------------------------------------------#
11+
12+
# Argument definition
13+
format=${1-shell}
14+
15+
# Includes
16+
source $HESTIA/func/main.sh
17+
source $HESTIA/conf/hestia.conf
18+
19+
# JSON list function
20+
json_list() {
21+
i=1
22+
objects=$(echo "$versions" |wc -w)
23+
echo '['
24+
for version in $versions; do
25+
if [ "$i" -lt "$objects" ]; then
26+
echo -e "\t\"$version\","
27+
else
28+
echo -e "\t\"$version\""
29+
fi
30+
(( ++i))
31+
done
32+
echo "]"
33+
}
34+
35+
# SHELL list function
36+
shell_list() {
37+
echo "VERSION"
38+
echo "--------"
39+
for version in $versions; do
40+
echo "$version"
41+
done
42+
}
43+
44+
# PLAIN list function
45+
plain_list() {
46+
for version in $versions; do
47+
echo "$version"
48+
done
49+
}
50+
51+
# CSV list function
52+
csv_list() {
53+
echo "VERSION"
54+
for version in $versions; do
55+
echo "$version"
56+
done
57+
}
58+
59+
60+
#----------------------------------------------------------#
61+
# Action #
62+
#----------------------------------------------------------#
63+
64+
# List trough /etc/php
65+
versions_list=$(ls -d /etc/php/*)
66+
versions=()
67+
for version in $versions_list; do
68+
if [ -d "$version/fpm" ]
69+
then
70+
version=$(echo $version | cut -d'/' -f4);
71+
versions+=" $version"
72+
fi
73+
done
74+
75+
# Listing data
76+
case $format in
77+
json) json_list ;;
78+
plain) plain_list ;;
79+
csv) csv_list ;;
80+
shell) shell_list ;;
81+
esac
82+
83+
84+
#----------------------------------------------------------#
85+
# Hestia #
86+
#----------------------------------------------------------#
87+
88+
exit

web/edit/user/index.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
$v_shell = $data[$v_username]['SHELL'];
3939
$v_twofa = $data[$v_username]['TWOFA'];
4040
$v_qrcode = $data[$v_username]['QRCODE'];
41+
$v_phpcli = $data[$v_username]['PHPCLI'];
4142
$v_ns = $data[$v_username]['NS'];
4243
$nameservers = explode(",", $v_ns);
4344
$v_ns1 = $nameservers[0];
@@ -73,6 +74,14 @@
7374
$shells = json_decode(implode('', $output), true);
7475
unset($output);
7576

77+
//List PHP Versions
78+
// List supported php versions
79+
exec (HESTIA_CMD."v-list-sys-php json", $output, $return_var);
80+
$php_versions = json_decode(implode('', $output), true);
81+
unset($output);
82+
83+
84+
7685
// Are you admin?
7786
7887
// Check POST request
@@ -131,6 +140,14 @@
131140
unset($output);
132141
}
133142

143+
// Change phpcli (admin only)
144+
if (($v_phpcli != $_POST['v_phpcli']) && ($_SESSION['user'] == 'admin') && (empty($_SESSION['error_msg']))) {
145+
$v_phpcli = escapeshellarg($_POST['v_phpcli']);
146+
exec (HESTIA_CMD."v-change-user-php-cli ".escapeshellarg($v_username)." ".$v_phpcli, $output, $return_var);
147+
check_return_code($return_var,$output);
148+
unset($output);
149+
}
150+
134151
// Change language
135152
if (($v_language != $_POST['v_language']) && (empty($_SESSION['error_msg']))) {
136153
$v_language = escapeshellarg($_POST['v_language']);

web/templates/admin/edit_user.html

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,31 @@
182182
</select>
183183
</td>
184184
</tr>
185+
<tr>
186+
<td class="vst-text input-label">
187+
<?php print __('PHP_CLI');?>
188+
</td>
189+
</tr>
190+
<tr>
191+
<td>
192+
<select class="vst-list" name="v_phpcli">
193+
<?php
194+
foreach ($php_versions as $key => $value) {
195+
$php = explode('-',$value);
196+
echo "\t\t\t\t<option value=\"".$value."\"";
197+
$svalue = "'".$value."'";
198+
if ((!empty($v_phpcli)) && ( $value == $v_phpcli ) || ($svalue == $v_phpcli)){
199+
echo ' selected' ;
200+
}
201+
if ((empty($v_phpcli)) && ($value == DEFAULT_PHP_VERSION)){
202+
echo ' selected' ;
203+
}
204+
echo ">".htmlentities($value)."</option>\n";
205+
}
206+
?>
207+
</select>
208+
</td>
209+
</tr>
185210
<?php if ((isset($_SESSION['DNS_SYSTEM'])) && (!empty($_SESSION['DNS_SYSTEM']))) {?>
186211
<tr>
187212
<td class="vst-text input-label">
@@ -262,4 +287,4 @@
262287
</tr>
263288
</table>
264289
</form>
265-
</div>
290+
</div>

0 commit comments

Comments
 (0)