Pre release

This commit is contained in:
naumov-socolov 2012-01-17 00:57:07 +03:00
parent 230c93fbe1
commit 3c81394a3e
25 changed files with 2486 additions and 124 deletions

View file

@ -6,14 +6,14 @@ V_BIN="$VESTA/bin"
V_TEST="$VESTA/test"
# Define functions
tmp_user() {
random() {
MATRIX='0123456789'
LENGTH=4
LENGTH=$1
while [ ${n:=1} -le $LENGTH ]; do
rand="$rand${MATRIX:$(($RANDOM%${#MATRIX})):1}"
let n+=1
done
echo "tmp_$rand"
echo "$rand"
}
echo_result() {
@ -25,8 +25,8 @@ echo_result() {
echo -n 'FAILED'
echo -n ']'
echo -ne '\r\n'
echo "$4"
echo "RETURN VALUE $2"
echo ">>> $4"
echo ">>> RETURN VALUE $2"
cat $3
else
echo -n ' OK '
@ -36,54 +36,63 @@ echo_result() {
}
# Create random username
user=$(tmp_user)
user="tmp_$(random 4)"
while [ ! -z "$(grep "^$user:" /etc/passwd)" ]; do
user=$(tmp_user)
user="tmp_$(random 4)"
done
# Create random tmpfile
tmpfile=$(mktemp -p /tmp )
# Add new user
cmd="v_add_user $user $user $user@vestacp.com default Super Test"
$cmd > $tmpfile 2>> $tmpfile
echo_result "Adding new user $user" "$?" "$tmpfile" "$cmd"
# Change system shell
cmd="v_change_user_shell $user bash"
$cmd > $tmpfile 2>> $tmpfile
echo_result "Changing system shell to /bin/bash" "$?" "$tmpfile" "$cmd"
# Change name servers
cmd="v_change_user_ns $user ns0.com ns1.com ns2.com ns3.com"
$cmd > $tmpfile 2>> $tmpfile
echo_result "Changing nameservers" "$?" "$tmpfile" "$cmd"
# Add cron job
cmd="v_add_cron_job $user 1 1 1 1 1 echo"
$cmd > $tmpfile 2>> $tmpfile
echo_result "Adding cron job" "$?" "$tmpfile" "$cmd"
# Suspend cron job
cmd="v_suspend_cron_job $user 1"
$cmd > $tmpfile 2>> $tmpfile
echo_result "Suspending cron job" "$?" "$tmpfile" "$cmd"
# Unsuspend cron job
cmd="v_unsuspend_cron_job $user 1"
$cmd > $tmpfile 2>> $tmpfile
echo_result "Unsuspending cron job" "$?" "$tmpfile" "$cmd"
# Delete cron job
cmd="v_delete_cron_job $user 1"
$cmd > $tmpfile 2>> $tmpfile
echo_result "Deleting cron job" "$?" "$tmpfile" "$cmd"
# Add cron job
cmd="v_add_cron_job $user 1 1 1 1 1 echo 1"
$cmd > $tmpfile 2>> $tmpfile
echo_result "Adding cron job" "$?" "$tmpfile" "$cmd"
# Add cron job
cmd="v_add_cron_job $user 1 1 1 1 1 echo 1"
$cmd > $tmpfile 2>> $tmpfile
@ -94,9 +103,28 @@ else
fi
echo_result "Dublicate cron job check" "$retval" "$tmpfile" "$cmd"
# Check ip
#cat /proc/net/dev|cut -f 1 -d :|tail -n1
#v_add_sys_ip 192.168.11.11 255.255.255.255 venet0 ekho
# List network interfaces
cmd="v_list_sys_interfaces plain"
interface=$($cmd 2> $tmpfile | head -n 1)
if [ -z "$interface" ]; then
echo_result "Listing network interfaces" "1" "$tmpfile" "$cmd"
else
echo_result "Listing network interfaces" "0" "$tmpfile" "$cmd"
fi
# Add new ip address
cmd="v_add_sys_ip 198.18.0.123 255.255.255.255 $interface $user"
$cmd > $tmpfile 2>> $tmpfile
echo_result "Adding ip 198.18.0.123" "$?" "$tmpfile" "$cmd"
# Delete ip address
cmd="v_delete_sys_ip 198.18.0.123"
$cmd > $tmpfile 2>> $tmpfile
echo_result "Deleting ip 198.18.0.123" "$?" "$tmpfile" "$cmd"
# Delete new user
cmd="v_delete_user $user"

View file

@ -1584,10 +1584,14 @@ input::-moz-focus-inner{
background-color:#FFFFCB;
}
.b-new-entry select.styled{
top:10px;
top:0;
}
.b-new-entry option{
font:14px arial,sans-serif;
padding:5px 5px 5px 8px;
font-family:Arial, Helvetica, sans-serif;
font-size:14px;
font-weight:bold;
color:#555;
}
.b-new-entry .form-options-group{}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

BIN
web/images/checkboxes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

View file

@ -82,7 +82,6 @@
<dl class="users-nav-item">
<dt class="section-title cc">
<span class="to-section">User</span>
<i class="add-entry do_action_new_entry">&nbsp;</i>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> users</span>
@ -98,7 +97,6 @@
<dl class="users-nav-item">
<dt class="section-title cc">
<span class="to-section">Web</span>
<i class="add-entry do_action_new_entry">&nbsp;</i>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> web domains</span>
@ -108,12 +106,24 @@
</div>
<i class="section-devider"></i>
</li>
<li class="section active" id="DNS">
<div class="section-inner">
<dl class="users-nav-item">
<dt class="section-title cc">
<span class="to-section">DNS</span>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> dns domain(s)</span>
</dd>
</dl>
</div>
<i class="section-devider"></i>
</li>
<li class="section" id="MAIL">
<div class="section-inner">
<dl class="users-nav-item">
<dt class="section-title cc">
<span class="to-section">Mail</span>
<i class="add-entry do_action_new_entry">&nbsp;</i>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> mail domain(s)</span>
@ -127,7 +137,6 @@
<dl class="users-nav-item">
<dt class="section-title cc">
<span class="to-section">DB</span>
<i class="add-entry do_action_new_entry">&nbsp;</i>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> databases</span>
@ -137,44 +146,28 @@
</div>
<i class="section-devider"></i>
</li>
<li class="section active" id="DNS">
<li class="section" id="CRON">
<div class="section-inner">
<dl class="users-nav-item">
<dt class="section-title cc">
<span class="to-section">DNS</span>
<i class="add-entry do_action_new_entry">&nbsp;</i>
<span class="to-section">Cron</span>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> dns domain(s)</span>
</dd>
</dl>
</div>
<i class="section-devider"></i>
</li>
<li class="section" id="IP">
<div class="section-inner">
<dl class="users-nav-item">
<dt class="section-title cc">
<span class="to-section">IP</span>
<i class="add-entry do_action_new_entry">&nbsp;</i>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> ip address(es)</span>
<span class="def"><span class="num-total">0</span> cron job(s)</span>
<span class="def"><span class="num-blocked">0</span> suspended</span>
</dd>
</dl>
</div>
<i class="section-devider"></i>
</li>
<li class="section last-section" id="CRON">
<li class="section last-section" id="IP">
<div class="section-inner">
<dl class="users-nav-item">
<dt class="section-title cc">
<span class="to-section">Cron</span>
<i class="add-entry do_action_new_entry">&nbsp;</i>
<span class="to-section">IP</span>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> cron job(s)</span>
<span class="def"><span class="num-total">0</span> ip address(es)</span>
<span class="def"><span class="num-blocked">0</span> suspended</span>
</dd>
</dl>

View file

@ -11,9 +11,9 @@ $('document').ready(function() {
App.Utils.detectBrowser();
App.Ref.init();
App.Env.world = 'USER';
//App.Env.world = 'USER';
// Disabled cookie tab restoring. Enable if needed
/*if ('undefined' != typeof App.Tmp.loadTAB) {
if ('undefined' != typeof App.Tmp.loadTAB) {
App.Env.world = App.Tmp.loadTAB;
}
@ -25,7 +25,7 @@ $('document').ready(function() {
else {
App.Env.world = App.Constants.TABS[0];
}
}*/
}
App.Pages.init();
App.Core.listen();

View file

@ -61,9 +61,10 @@ App.Messages.get = function(key, plural) {
// Imutable
App.Settings.Imutable = {};
App.Settings.Imutable.USER = ['LOGIN_NAME'];
App.Settings.Imutable.DB = ['DB', 'TYPE', 'USER'];
App.Settings.Imutable.WEB_DOMAIN = ['DOMAIN'];
App.Settings.Imutable.DB = ['DB', 'TYPE', 'USER', 'CHARSET', 'HOST'];
App.Settings.Imutable.DNS = ['DNS_DOMAIN'];
App.Settings.Imutable.IP = ['INTERFACE'];
App.Settings.Imutable.IP = ['IP_ADDRESS', 'NETMASK', 'INTERFACE'];
// Empty

View file

@ -87,7 +87,7 @@ App.Actions.update_cs_value = function(evt)
if (App.Tmp[App.Env.world + '_selected_records'] > 0) {
var confirm_message_key = App.Tmp[App.Env.world + '_selected_records'] == 1 ? 1 + ' record' : App.Tmp[App.Env.world + '_selected_records'] + ' records';
var confirmed = confirm('This action will ' + val.toLowerCase() + ' ' + confirm_message_key + '. Do you want to proceede?');
var confirmed = confirm('This action will ' + val.toLowerCase() + ' ' + confirm_message_key + '. Do you want to proceed?');
if (confirmed) {
fb.log('mass_' + val);
var func_name = val.toLowerCase();

View file

@ -110,7 +110,7 @@ App.HTML.Build.user_form = function (options, id) {
ns[ns.length++] = App.Templates.get('PLUS_ONE_NS', 'user').finalize();
tpl.set(':NS', ns.done());
} else {
// tpl.set(':NS', '');
tpl.set(':NS', '');
}
tpl = App.HTML.setTplKeys(tpl, options, true);
tpl = App.HTML.Build.user_selects(tpl, options);
@ -664,27 +664,14 @@ App.HTML.Build.db_selects = function (tpl, options) {
});
tpl.set(':TYPE_OPTIONS', acc.done());
acc = [];
var items = App.Env.initialParams.DB.HOST;
$.each(items, function (val) {
var tpl = App.Templates.get('select_option', 'general');
tpl.set(':VALUE', val);
tpl.set(':TEXT', items[val]);
tpl.set(':SELECTED', val == options.HOST ? 'selected="selected"' : '');
acc[acc.length++] = tpl.finalize();
});
tpl.set(':HOST_OPTIONS', acc.done());
var obj = App.Env.initialParams.DB.HOST;
var opts = App.HTML.Build.options(obj, options.HOST);
tpl.set(':HOST_OPTIONS', opts);
acc = [];
var items = App.Env.initialParams.DB.ENCODING;
$.each(items, function (val) {
var tpl = App.Templates.get('select_option', 'general');
tpl.set(':VALUE', val);
tpl.set(':TEXT', items[val]);
tpl.set(':SELECTED', val == options.ENCODING ? 'selected="selected"' : '');
acc[acc.length++] = tpl.finalize();
});
tpl.set(':ENCODING_OPTIONS', acc.done());
var obj = App.Env.initialParams.DB.CHARSET;
var opts = App.HTML.Build.options(obj, options.CHARSET);
tpl.set(':CHARSET_OPTIONS', opts);
return tpl;
}

View file

@ -25,7 +25,7 @@ Visit http://ryanfait.com/ for more information.
var checkboxHeight = "25";
var radioHeight = "25";
var selectWidth = "210";
var selectWidth = "230";
/* No need to change anything after this */
@ -47,6 +47,9 @@ var Custom = {
if ($(inputs[a]).attr('class').indexOf('do_action_toggle_batch_selector') != -1) {
span[a].className += ' do_action_toggle_batch_selector'; // save toggle functionality
}
if ($(inputs[a]).attr('class').indexOf('do_action_toggle_ssl_support') != -1) {
span[a].className += ' do_action_toggle_ssl_support'; // save toggle functionality
}
if(inputs[a].checked == true) {

View file

@ -70,7 +70,8 @@ App.Pages.USER.new_entry = function(evt)
$(box).find('.suspended').addClass('hidden');
App.Ref.CONTENT.prepend($(box).html());
App.Helpers.updateScreen();
$('#'+form_id).find('.ns-entry, .additional-ns-add').addClass('hidden');
$('#'+form_id).find('.ns-entry, .additional-ns-add').addClass('hidden').find('.rule-required').removeClass('rule-required');
$('#'+form_id).find('.shell-entry').addClass('hidden');
}
App.Pages.WEB_DOMAIN.new_entry = function(evt)

View file

@ -144,14 +144,14 @@ App.Templates.html = {
</select>\
<span class="context-settings do_action_view_dns_template_settings">View template settings</span>\
</div>\
<div class="form-row cc">\
<!-- div class="form-row cc">\
<label for="#" class="field-label">TTL:</label>\
<input type="text" value="~!:TTL~!" name="TTL" class="text-field ttl-field rule-required rule-numeric">\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">SOA:</label>\
<input type="text" value="~!:SOA~!" name="SOA" class="text-field rule-required rule-ns">\
</div>\
</div -->\
<div class="form-row suspended cc">\
<label for="#" class="field-label">Suspended:</label>\
<input type="checkbox" ~!:SUSPENDED_CHECKED~! value="~!:SUSPENDED_VALUE~!" class="styled do_action_toggle_suspend" name="SUSPEND" />\
@ -241,7 +241,7 @@ App.Templates.html = {
<label for="#" class="field-label">value:</label>\
<input type="text" value="~!:RECORD_VALUE~!" name="RECORD_VALUE" class="text-field">\
</div>\
<div class="delete-record do_action_delete_subentry"></div>\
<!-- div class="delete-record do_action_delete_subentry"></div -->\
</div>']
},
ip: {
@ -403,12 +403,12 @@ App.Templates.html = {
~!:PACKAGE_OPTIONS~!\
</select>\
</div>\
<!-- div class="form-row cc">\
<div class="form-row shell-entry cc">\
<label for="#" class="field-label">Shell:</label>\
<select class="styled disabled" name="SHELL">\
~!:SHELL_OPTIONS~!\
</select>\
</div -->\
</div>\
<!-- div class="form-row cc">\
<label for="#" class="field-label">role:</label>\
<select class="styled" name="ROLE">\
@ -641,10 +641,10 @@ App.Templates.html = {
<label for="#" class="field-label">Domain Aliases:</label>\
<textarea name="ALIAS" class="textarea rule-alias">~!:ALIAS~!</textarea>\
</div>\
<div class="form-row cc">\
<!-- div class="form-row cc">\
<label for="#" class="field-label">Nginx extensions:</label>\
<textarea name="NGINX_EXT" class="textarea rule-list">~!:NGINX_EXT~!</textarea>\
</div>\
</div -->\
<div class="form-row cc">\
<label for="#" class="field-label">Statistics:</label>\
<select name="STAT" class="styled">~!:STAT_OPTIONS~!</select>\
@ -860,14 +860,14 @@ App.Templates.html = {
<span class="generate-pwd do_action_generate_pass">Generate</span>\
</div>\
</div>\
<!--div class="form-row hidden cc">\
<div class="form-row cc">\
<label for="#" class="field-label">Host:</label>\
<select name="HOST" class="styled">~!:HOST_OPTIONS~!</select>\
</div -->\
<!-- div class="form-row cc">\
<label for="#" class="field-label">Encoding:</label>\
<select name="ENCODING" class="styled">~!:ENCODING_OPTIONS~!</select>\
</div -->\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">Character Set:</label>\
<select name="CHARSET" class="styled">~!:CHARSET_OPTIONS~!</select>\
</div>\
<div class="form-row suspended cc">\
<label for="#" class="field-label">Suspended:</label>\
<input type="checkbox" ~!:SUSPENDED_CHECKED~! value="~!:SUSPENDED_VALUE~!" class="styled do_action_toggle_suspend" name="SUSPEND" />\
@ -912,10 +912,10 @@ App.Templates.html = {
</div>\
<div class="props-ext">\
<!-- span class="backup-db do_action_backup_db">backup</span-->\
<!-- span class="prop-box">\
<span class="prop-title">encoding:</span>\
<span class="prop-value">~!:ENCODING~!</span>\
</span -->\
<span class="prop-box">\
<span class="prop-title">Character Set:</span>\
<span class="prop-value">~!:CHARSET~!</span>\
</span>\
<!-- disk usage block -->\
<div class="b-usage-box disk-usage cc">\
<div class="usage-box">\

1151
web/js/templates_admin.js Normal file

File diff suppressed because it is too large Load diff

1151
web/js/user_templates.js Normal file

File diff suppressed because it is too large Load diff

View file

@ -38,8 +38,7 @@ class DB extends AjaxHandler
'TYPE' => $record['TYPE'],
'U_DISK' => $record['U_DISK'],
'DISK' => 2024,
'ENCODING' => "utf-8",//$record['ENCODING'],
// 'ENCODING' => $record['ENCODING'],
'CHARSET' => strtolower($record['CHARSET']),
'SUSPEND' => $record['SUSPEND'],
'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
);
@ -68,8 +67,8 @@ class DB extends AjaxHandler
'DB_USER' => $_s['USER'],
'DB_PASSWORD' => $_s['PASSWORD'],
'TYPE' => $_s['TYPE'],
'HOST' => ''
// 'ENCODING' => $_s['ENCODING']
'HOST' => $_s['HOST'],
'CHARSET' => $_s['CHARSET']
);
$result = Vesta::execute(Vesta::V_ADD_DB_BASE, $params);

View file

@ -102,7 +102,7 @@ class DNS extends AjaxHandler
'TPL' => $_s['TPL'],
'EXP' => $_s['EXP'],
'SOA' => $_s['SOA'],
'TTL' => $_s['TTL'],
'TTL' => $_s['TTL']
);
$result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN, $params);

View file

@ -370,13 +370,14 @@ MAIL;
public function getDbParams($data = array())
{
$db_types = $this->getDBTypes();
$db_hosts = $this->getDBHosts();
$result = Vesta::execute(Vesta::V_LIST_DNS_TEMPLATES, null, self::JSON);
return array(
'TYPE' => $db_types,
'HOST' => array('vestacp.com' => 'vestacp.com', 'askcow.org' => 'askcow.org'),
'ENCODING' => array(
'utf8' => 'utf8', 'latin1' => 'latin1', 'cp1251' => 'cp1251',
'HOST' => $db_hosts,
'CHARSET' => array(
'utf8' => 'utf8', 'latin1' => 'latin1', 'cp1251' => 'cp1251'
/*
'' => '',
'big5' => 'Big5 — Traditional Chinese ',
@ -415,13 +416,30 @@ MAIL;
'geostd8' => 'geostd8 — GEOSTD8 Georgian',
'cp932' => 'cp932 — SJIS for Windows Japanese',
'eucjpms' => 'eucjpms — UJIS for Windows Japanese'
*/
)
);
}
public function getDBTypes()
{
return array('mysql' => 'mysql', 'postgre' => 'postgre');
return array('mysql' => 'MySQL', 'pgsql' => 'PostgreSQL');
}
public function getDBHosts()
{
return array('localhost' => 'localhost');
foreach($this->getDBTypes() as $type => $type_name){
$result = Vesta::execute(Vesta::V_LIST_DB_HOSTS, $type, self::JSON);
foreach ($result['data'] as $host_name => $host_data) {
if (Utils::getCheckboxBooleanValue($host_data['ACTIVE'])) {
$hosts[$host_name] = $type_name .' '. $host_name;
}
}
}
return $hosts;
}
/**

View file

@ -51,6 +51,7 @@ class USER extends AjaxHandler
"SUSPEND" => $details['SUSPENDED'],
"CONTACT" => $details['CONTACT'],
"REPORTS" => $details['REPORTS'],
"REPORTS_ENABLED" => $details['REPORTS'],
"IP_OWNED" => $details['IP_OWNED'],
"U_DIR_DISK" => $details['U_DIR_DISK'],
"U_DISK" => $details['U_DISK'],
@ -132,33 +133,42 @@ class USER extends AjaxHandler
*/
public function addExecute(Request $request)
{
$spell = $request->getParameter('spell');
$_s = $request->getParameter('spell');
$user = $this->getLoggedUser();
$params = array(
'USER' => $spell['LOGIN_NAME'],
'PASSWORD' => $spell['PASSWORD'],
'EMAIL' => $spell['CONTACT'],
'PACKAGE' => $spell['PACKAGE'],
'FNAME' => $spell['FNAME'],
'LNAME' => $spell['LNAME']
'USER' => $_s['LOGIN_NAME'],
'PASSWORD' => $_s['PASSWORD'],
'EMAIL' => $_s['CONTACT'],
'PACKAGE' => $_s['PACKAGE'],
'FNAME' => $_s['FNAME'],
'LNAME' => $_s['LNAME']
);
$result = Vesta::execute(Vesta::V_ADD_SYS_USER, $params);
// Reports
$enable_reports = Utils::getCheckboxBooleanValue($spell['REPORTS_ENABLED']);
$reports_result = $this->setUserReports($spell['LOGIN_NAME'], $spell['REPORTS_ENABLED']);
// $enable_reports = Utils::getCheckboxBooleanValue($spell['REPORTS_ENABLED']);
// $reports_result = $this->setUserReports($spell['LOGIN_NAME'], $spell['REPORTS_ENABLED']);
// Set SHELL
$this->setShell($spell['LOGIN_NAME'], $spell['SHELL']);
// $this->setShell($_s['LOGIN_NAME'], $_s['SHELL']);
if (!$result['status']) {
$this->errors[] = array($result['error_code'] => $result['error_message']);
}
if(@Utils::getCheckboxBooleanValue($_s['REPORTS_ENABLED'])){
$result = Vesta::execute(Vesta::V_ADD_SYS_USER_REPORTS, array('USER' => $_USER));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['REPORTS'] = array($result['error_code'] => $result['error_message']);
}
}
if ($_s['SUSPEND'] == 'on') {
if($result['status']){
$result = array();
$result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $user['uid'], 'USER' => $spell['LOGIN_NAME']));
$result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $user['uid'], 'USER' => $_s['LOGIN_NAME']));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']);
@ -249,6 +259,20 @@ class USER extends AjaxHandler
}
}
if ($_old['REPORTS_ENABLED'] != $_new['REPORTS_ENABLED']) {
$result = array();
if(@Utils::getCheckboxBooleanValue($_new['REPORTS_ENABLED'])){
$result = Vesta::execute(Vesta::V_ADD_SYS_USER_REPORTS, array('USER' => $_USER));
}
else{
$result = Vesta::execute(Vesta::V_ADD_SYS_USER_REPORTS, array('USER' => $_USER));
}
if (!$result['status']) {
$this->status = FALSE;
$this->errors['REPORTS'] = array($result['error_code'] => $result['error_message']);
}
}
// Set SHELL
$this->setShell($_USER, $_new['SHELL']);

View file

@ -29,6 +29,7 @@ class Vesta
const V_LIST_SYS_USER = 'v_list_user';
const V_LIST_USER_PACKAGES = 'v_list_user_packages';
const V_ADD_SYS_USER = 'v_add_user';
const V_ADD_SYS_USER_REPORTS = 'v_add_user_reports';
const V_CHANGE_SYS_USER_CONTACT = 'v_change_user_contact';
const V_CHANGE_SYS_USER_NS = 'v_change_user_ns';
const V_CHANGE_SYS_USER_PACKAGE = 'v_change_user_package';
@ -39,6 +40,7 @@ class Vesta
const V_SUSPEND_SYS_USER = 'v_suspend_user';
const V_UNSUSPEND_SYS_USER = 'v_unsuspend_user';
const V_DEL_SYS_USER = 'v_delete_user';
const V_DEL_SYS_USER_REPORTS = 'v_delete_user_reports';
// WEB_DOMAIN
const V_LIST_WEB_DOMAINS = 'v_list_web_domains';
const V_LIST_WEB_DOMAINS_ALIAS = 'v_list_web_domains_alias';
@ -122,14 +124,14 @@ class Vesta
// CRON
const V_LIST_CRON_JOBS = 'v_list_cron_jobs';
const V_ADD_CRON_JOB = 'v_add_cron_job';
const V_ADD_SYS_USER_REPORTS = 'v_add_user_reports';
// const V_ADD_SYS_USER_REPORTS = 'v_add_user_reports';
const V_CHANGE_CRON_JOB = 'v_change_cron_job';
const V_SUSPEND_CRON_JOB = 'v_suspend_cron_job';
const V_SUSPEND_CRON_JOBS = 'v_suspend_cron_jobs';
const V_UNSUSPEND_CRON_JOB = 'v_unsuspend_cron_job';
const V_UNSUSPEND_CRON_JOBS = 'v_unsuspend_cron_jobs';
const V_DEL_CRON_JOB = 'v_delete_cron_job';
const V_DEL_SYS_USER_REPORTS = 'v_delete_user_reports';
// const V_DEL_SYS_USER_REPORTS = 'v_delete_user_reports';
// STATS
const V_LIST_SYS_RRD = 'v_list_sys_rrd json';
const V_UPDATE_SYS_RRD = 'v_update_sys_rrd';

View file

@ -77,19 +77,19 @@ class VestaSession
public function loginAs($login)
{
// TODO checkrights for login as
// if(Vesta::hasRights(self::getUserRole();, 'login_as')){
if(!$_SESSION['real_user'])
if(Vesta::hasRights(self::getUserRole(), 'login_as')){
if(!$_SESSION['real_user']){
$_SESSION['real_user'] = $_SESSION['user'];
}
}
$_SESSION['user'] = $login;
// }
}
public function logoutAs()
{
$_SESSION['user'] = $_SESSION['real_user'];
$_SESSION['real_user'] = false;
}
}
?>

View file

@ -59,7 +59,7 @@ function handleUpload()
function show_form()
{
$type = $_GET['type'];
if (!in_array($type, array('key', 'cert'))) {
if (!in_array($type, array('key', 'cert', 'ca'))) {
exit;
}