vpanel-stack/panel/classes/Panel/Vhost/UsersAdd.php
2023-06-19 11:53:16 -07:00

91 lines
2.7 KiB
PHP

<?php
/**
* vpanel-stack
* https://git.stack-source.com/msb/vpanel-stack
* Copyright (c) 2022 Matthew Saunders Brown <matthewsaundersbrown@gmail.com>
* GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
*/
namespace Panel\Vhost;
class UsersAdd extends \Panel\Vhost {
function beforeRoute($f3) {
parent::beforeRoute($f3);
/* get system defaults for new users */
$user = array();
$user['username'] = '';
$user['password'] = '';
$user['password_confirm'] = '';
if ($f3->get('JAILUSER') == '1') {
$user['jailuser'] = 1;
} else {
$user['jailuser'] = 0;
}
$user['fpmmax'] = $f3->get('FPMMAX');
if ($f3->get('WRITEUSERINFO') == '1') {
$user['writeuserinfo'] = 1;
} else {
$user['writeuserinfo'] = 0;
}
if ($f3->get('SHOWWRITEINFO') == '1') {
$user['showwriteinfo'] = 1;
} else {
$user['showwriteinfo'] = 0;
}
$f3->set('user', $user);
}
static function get($f3) {
echo \Template::instance()->render('vhost/users-add.html');
}
function post($f3) {
extract($_POST);
/* force username to be all lower case */
$username = strtolower($username);
$f3->call('\Panel::validateUsername', $username);
/* only validate password if one was submitted, otherwise script will generate random password */
if ($password != '' || $password_confirm != '') {
$f3->call('\Panel::validatePassword', array($password, $password_confirm));
}
/* check for validation errors */
if ($f3->exists('SESSION.messages')) {
$messages = $f3->get('SESSION.messages');
$messages[] = "Please make changes and re-submit the form to try again.";
$f3->set('SESSION.messages', $messages);
$f3->set('user', $_POST);
$f3->call('\Panel\Vhost\UsersAdd::get', $f3);
} else {
$domain = $f3->get('PARAMS.domain');
if ($password != '') {
$password = "-p " . escapeshellarg($password);
}
exec("/usr/local/bin/vhost-user-add.sh -u $username -x $fpmmax $password -w $writeuserinfo", $output, $result_code);
if ($result_code == 0) {
$messages[] = "Success: User $username added.";
if ($jailuser == 1) {
exec("/usr/local/bin/vhost-user-jail.sh -u $username >/dev/null 2>/dev/null &", $output, $result_code);
$messages[] = "Note: User is being jailed. Setting up the jail environment takes about a minute to complete and is run in the background now.";
}
$f3->set('SESSION.messages', $messages);
$f3->reroute("/Users");
} else {
$messages[] = "Error adding user.";
$f3->set('SESSION.messages', $messages);
$f3->call('\Panel\Vhost\UsersAdd::get', $f3);
}
}
}
}