Merge branch 'master' of github.com:serghey-rodin/vesta

This commit is contained in:
Serghey Rodin 2012-01-18 17:38:19 +02:00
commit 8f5b68b011
25 changed files with 6030 additions and 3562 deletions

File diff suppressed because it is too large Load diff

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.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

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

View file

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

View file

@ -87,7 +87,7 @@ App.Actions.update_cs_value = function(evt)
if (App.Tmp[App.Env.world + '_selected_records'] > 0) { 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 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) { if (confirmed) {
fb.log('mass_' + val); fb.log('mass_' + val);
var func_name = val.toLowerCase(); var func_name = val.toLowerCase();
@ -366,14 +366,13 @@ App.Actions.save_form = function(evt) {
if (!confirmed) { if (!confirmed) {
return true; return true;
} }
else { }
var values = App.Helpers.getFormValues(elm);
if(App.Validate.form(values, $('#'+elm_id))) { var values = App.Helpers.getFormValues(elm);
App.Model.add(values, source); if(App.Validate.form(values, $('#'+elm_id))) {
var form_id = App.Constants[App.Env.world + '_FORM_ID']; App.Model.add(values, source);
$('#'+form_id).remove(); var form_id = App.Constants[App.Env.world + '_FORM_ID'];
} $('#'+form_id).remove();
}
} }
} }
else { // OLD ITEM, UPDATING IT else { // OLD ITEM, UPDATING IT

View file

@ -95,6 +95,7 @@ App.HTML.Build.user_form = function (options, id) {
tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize()); tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize());
} }
options = !App.Helpers.isEmpty(options) ? options : App.Empty.USER; options = !App.Helpers.isEmpty(options) ? options : App.Empty.USER;
if (in_edit == true) { if (in_edit == true) {
options.PASSWORD = App.Settings.PASSWORD_IMMUTE; options.PASSWORD = App.Settings.PASSWORD_IMMUTE;
var ns = []; var ns = [];
@ -146,6 +147,15 @@ App.HTML.Build.web_domain_form = function (options, id) {
tpl.set(':title', 'Edit WEB domain'); tpl.set(':title', 'Edit WEB domain');
tpl.set(':save_button', 'SAVE'); tpl.set(':save_button', 'SAVE');
tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize()); tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize());
if(options.SSL_CRT == '' || options.SSL_KEY == ''){
options.SSL = '';
options.SSL_HOME = '';
options.SSL_CRT = '';
options.SSL_KEY = '';
options.SSL_CA = '';
}
if (options.SSL == 'on') { if (options.SSL == 'on') {
tpl.set(':ssl_checked', 'checked="checked"'); tpl.set(':ssl_checked', 'checked="checked"');
} }
@ -167,7 +177,7 @@ App.HTML.Build.web_domain_form = function (options, id) {
tpl = App.HTML.setTplKeys(tpl, options, true); tpl = App.HTML.setTplKeys(tpl, options, true);
tpl = App.HTML.Build.web_domain_selects(tpl, options); tpl = App.HTML.Build.web_domain_selects(tpl, options);
tpl = App.HTML.toggle_suspended_form(tpl, options); tpl = App.HTML.toggle_suspended_form(tpl, options);
if (options.CGI == 'yes') { if (options.CGI == 'yes' || !in_edit) {
tpl.set(':CHECKED_CGI', 'checked="checked"'); tpl.set(':CHECKED_CGI', 'checked="checked"');
} }
if (options.ELOG == 'yes') { if (options.ELOG == 'yes') {
@ -384,8 +394,11 @@ App.HTML.Build.web_domain_entry = function (o, key) {
'DISK_QUOTA_MEASURE': App.Helpers.getMbHumanMeasure(App.Env.initialParams.user_data.DISK_QUOTA), 'DISK_QUOTA_MEASURE': App.Helpers.getMbHumanMeasure(App.Env.initialParams.user_data.DISK_QUOTA),
'BANDWIDTH_MEASURE': App.Helpers.getMbHumanMeasure(App.Env.initialParams.user_data.BANDWIDTH), 'BANDWIDTH_MEASURE': App.Helpers.getMbHumanMeasure(App.Env.initialParams.user_data.BANDWIDTH),
'BANDWIDTH': App.Helpers.getMbHuman(App.Env.initialParams.user_data.BANDWIDTH), 'BANDWIDTH': App.Helpers.getMbHuman(App.Env.initialParams.user_data.BANDWIDTH),
'DISK_QUOTA': App.Helpers.getMbHuman(App.Env.initialParams.user_data.DISK_QUOTA) 'DISK_QUOTA': App.Helpers.getMbHuman(App.Env.initialParams.user_data.DISK_QUOTA),
'SSL': (o.SSL_CRT == '' || o.SSL_KEY == '' || o.SSL != 'on') ? 'off' : 'on'
}; };
var o = $.extend(o, processed_data); var o = $.extend(o, processed_data);
o.U_DISK_PERCENTAGE_2 = o.U_DISK_PERCENTAGE; o.U_DISK_PERCENTAGE_2 = o.U_DISK_PERCENTAGE;
o.U_DISK_PERCENTAGE_3 = o.U_DISK_PERCENTAGE; o.U_DISK_PERCENTAGE_3 = o.U_DISK_PERCENTAGE;
@ -651,27 +664,14 @@ App.HTML.Build.db_selects = function (tpl, options) {
}); });
tpl.set(':TYPE_OPTIONS', acc.done()); tpl.set(':TYPE_OPTIONS', acc.done());
acc = []; var obj = App.Env.initialParams.DB.HOST;
var items = App.Env.initialParams.DB.HOST; var opts = App.HTML.Build.options(obj, options.HOST);
$.each(items, function (val) { tpl.set(':HOST_OPTIONS', opts);
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());
acc = [];
var items = App.Env.initialParams.DB.ENCODING; var obj = App.Env.initialParams.DB.CHARSET;
$.each(items, function (val) { var opts = App.HTML.Build.options(obj, options.CHARSET);
var tpl = App.Templates.get('select_option', 'general'); tpl.set(':CHARSET_OPTIONS', opts);
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());
return tpl; return tpl;
} }
@ -691,9 +691,11 @@ App.HTML.Build.dns_selects = function (tpl, options) {
$.each(App.Env.initialParams.DNS.TPL, function (key) { $.each(App.Env.initialParams.DNS.TPL, function (key) {
obj[key] = key; obj[key] = key;
}); });
var opts = App.HTML.Build.options(obj, options.PACKAGE);
var opts = App.HTML.Build.options(obj, options.TPL);
tpl.set(':TPL', opts); tpl.set(':TPL', opts);
tpl.set(':TPL_DEFAULT_VALUE', options.TPL || App.Helpers.getFirstKey(obj)); // tpl.set(':TPL_DEFAULT_VALUE', options.TPL || App.Helpers.getFirstKey(obj));
} catch (e) { } catch (e) {
return tpl; return tpl;
} }

View file

@ -1,164 +1,164 @@
/* /*
CUSTOM FORM ELEMENTS CUSTOM FORM ELEMENTS
Created by Ryan Fait Created by Ryan Fait
www.ryanfait.com www.ryanfait.com
The only things you may need to change in this file are the following The only things you may need to change in this file are the following
variables: checkboxHeight, radioHeight and selectWidth (lines 24, 25, 26) variables: checkboxHeight, radioHeight and selectWidth (lines 24, 25, 26)
The numbers you set for checkboxHeight and radioHeight should be one quarter The numbers you set for checkboxHeight and radioHeight should be one quarter
of the total height of the image want to use for checkboxes and radio of the total height of the image want to use for checkboxes and radio
buttons. Both images should contain the four stages of both inputs stacked buttons. Both images should contain the four stages of both inputs stacked
on top of each other in this order: unchecked, unchecked-clicked, checked, on top of each other in this order: unchecked, unchecked-clicked, checked,
checked-clicked. checked-clicked.
You may need to adjust your images a bit if there is a slight vertical You may need to adjust your images a bit if there is a slight vertical
movement during the different stages of the button activation. movement during the different stages of the button activation.
The value of selectWidth should be the width of your select list image. The value of selectWidth should be the width of your select list image.
Visit http://ryanfait.com/ for more information. Visit http://ryanfait.com/ for more information.
*/ */
var checkboxHeight = "25"; var checkboxHeight = "25";
var radioHeight = "25"; var radioHeight = "25";
var selectWidth = "230"; var selectWidth = "230";
/* No need to change anything after this */ /* No need to change anything after this */
document.write('<style type="text/css">input.styled { display: none; } select.styled { position: relative; width: ' + selectWidth + 'px; opacity: 0; filter: alpha(opacity=0); z-index: 5; } .disabled { opacity: 0.5; filter: alpha(opacity=50); }</style>'); document.write('<style type="text/css">input.styled { display: none; } select.styled { position: relative; width: ' + selectWidth + 'px; opacity: 0; filter: alpha(opacity=0); z-index: 5; } .disabled { opacity: 0.5; filter: alpha(opacity=50); }</style>');
var Custom = { var Custom = {
init: function() { init: function() {
var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active; var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active;
for(a = 0; a < inputs.length; a++) { for(a = 0; a < inputs.length; a++) {
if((inputs[a].type == "checkbox" || inputs[a].type == "radio") && $(inputs[a]).hasClass("styled") && !$(inputs[a]).hasClass("style-applied")) { if((inputs[a].type == "checkbox" || inputs[a].type == "radio") && $(inputs[a]).hasClass("styled") && !$(inputs[a]).hasClass("style-applied")) {
$(inputs[a]).addClass('style-applied'); $(inputs[a]).addClass('style-applied');
span[a] = document.createElement("span"); span[a] = document.createElement("span");
span[a].className = inputs[a].type; span[a].className = inputs[a].type;
if ($(inputs[a]).attr('class').indexOf('do_action_toggle_suspend') != -1) { if ($(inputs[a]).attr('class').indexOf('do_action_toggle_suspend') != -1) {
span[a].className += ' do_action_toggle_suspend'; // save toggle functionality span[a].className += ' do_action_toggle_suspend'; // save toggle functionality
} }
if ($(inputs[a]).attr('class').indexOf('do_action_toggle_batch_selector') != -1) { if ($(inputs[a]).attr('class').indexOf('do_action_toggle_batch_selector') != -1) {
span[a].className += ' do_action_toggle_batch_selector'; // save toggle functionality span[a].className += ' do_action_toggle_batch_selector'; // save toggle functionality
} }
if ($(inputs[a]).attr('class').indexOf('do_action_toggle_ssl_support') != -1) { if ($(inputs[a]).attr('class').indexOf('do_action_toggle_ssl_support') != -1) {
span[a].className += ' do_action_toggle_ssl_support'; // save toggle functionality span[a].className += ' do_action_toggle_ssl_support'; // save toggle functionality
} }
if(inputs[a].checked == true) { if(inputs[a].checked == true) {
if(inputs[a].type == "checkbox") { if(inputs[a].type == "checkbox") {
position = "0 -" + (checkboxHeight*2) + "px"; position = "0 -" + (checkboxHeight*2) + "px";
span[a].style.backgroundPosition = position; span[a].style.backgroundPosition = position;
} else { } else {
position = "0 -" + (radioHeight*2) + "px"; position = "0 -" + (radioHeight*2) + "px";
span[a].style.backgroundPosition = position; span[a].style.backgroundPosition = position;
} }
} }
inputs[a].parentNode.insertBefore(span[a], inputs[a]); inputs[a].parentNode.insertBefore(span[a], inputs[a]);
inputs[a].onchange = Custom.clear; inputs[a].onchange = Custom.clear;
if(!inputs[a].getAttribute("disabled")) { if(!inputs[a].getAttribute("disabled")) {
span[a].onmousedown = Custom.pushed; span[a].onmousedown = Custom.pushed;
span[a].onmouseup = Custom.check; span[a].onmouseup = Custom.check;
} else { } else {
span[a].className = span[a].className += " disabled"; span[a].className = span[a].className += " disabled";
} }
} }
} }
inputs = document.getElementsByTagName("select"); inputs = document.getElementsByTagName("select");
try { try {
for(a = 0; a < inputs.length; a++) { for(a = 0; a < inputs.length; a++) {
if($(inputs[a]).hasClass("styled")) { if($(inputs[a]).hasClass("styled")) {
option = inputs[a].getElementsByTagName("option"); option = inputs[a].getElementsByTagName("option");
active = option[0].childNodes[0].nodeValue; active = option[0].childNodes[0].nodeValue;
textnode = document.createTextNode(active); textnode = document.createTextNode(active);
for(b = 0; b < option.length; b++) { for(b = 0; b < option.length; b++) {
if(option[b].selected == true) { if(option[b].selected == true) {
textnode = document.createTextNode(option[b].childNodes[0].nodeValue); textnode = document.createTextNode(option[b].childNodes[0].nodeValue);
} }
} }
span[a] = document.createElement("span"); span[a] = document.createElement("span");
span[a].className = "select"; span[a].className = "select";
span[a].id = "select-" + inputs[a].name + a; span[a].id = "select-" + inputs[a].name + a;
span[a].appendChild(textnode); span[a].appendChild(textnode);
inputs[a].parentNode.insertBefore(span[a], inputs[a]); inputs[a].parentNode.insertBefore(span[a], inputs[a]);
inputs[a].id = inputs[a].name + a; inputs[a].id = inputs[a].name + a;
if(!inputs[a].getAttribute("disabled")) { if(!inputs[a].getAttribute("disabled")) {
inputs[a].onchange = Custom.choose; inputs[a].onchange = Custom.choose;
} else { } else {
inputs[a].previousSibling.className = inputs[a].previousSibling.className += " disabled"; inputs[a].previousSibling.className = inputs[a].previousSibling.className += " disabled";
} }
} }
} }
document.onmouseup = Custom.clear; document.onmouseup = Custom.clear;
} }
catch(e){ /* */ } catch(e){ /* */ }
}, },
pushed: function() { pushed: function() {
element = this.nextSibling; element = this.nextSibling;
if(element.checked == true && element.type == "checkbox") { if(element.checked == true && element.type == "checkbox") {
this.style.backgroundPosition = "0 -" + checkboxHeight*3 + "px"; this.style.backgroundPosition = "0 -" + checkboxHeight*3 + "px";
} else if(element.checked == true && element.type == "radio") { } else if(element.checked == true && element.type == "radio") {
this.style.backgroundPosition = "0 -" + radioHeight*3 + "px"; this.style.backgroundPosition = "0 -" + radioHeight*3 + "px";
} else if(element.checked != true && element.type == "checkbox") { } else if(element.checked != true && element.type == "checkbox") {
this.style.backgroundPosition = "0 -" + checkboxHeight + "px"; this.style.backgroundPosition = "0 -" + checkboxHeight + "px";
} else { } else {
this.style.backgroundPosition = "0 -" + radioHeight + "px"; this.style.backgroundPosition = "0 -" + radioHeight + "px";
} }
}, },
check: function() { check: function() {
element = this.nextSibling; element = this.nextSibling;
if(element.checked == true && element.type == "checkbox") { if(element.checked == true && element.type == "checkbox") {
this.style.backgroundPosition = "0 0"; this.style.backgroundPosition = "0 0";
element.checked = false; element.checked = false;
} else { } else {
if(element.type == "checkbox") { if(element.type == "checkbox") {
this.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px"; this.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
} else { } else {
this.style.backgroundPosition = "0 -" + radioHeight*2 + "px"; this.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
group = this.nextSibling.name; group = this.nextSibling.name;
inputs = document.getElementsByTagName("input"); inputs = document.getElementsByTagName("input");
for(a = 0; a < inputs.length; a++) { for(a = 0; a < inputs.length; a++) {
if(inputs[a].name == group && inputs[a] != this.nextSibling) { if(inputs[a].name == group && inputs[a] != this.nextSibling) {
inputs[a].previousSibling.style.backgroundPosition = "0 0"; inputs[a].previousSibling.style.backgroundPosition = "0 0";
} }
} }
} }
element.checked = true; element.checked = true;
} }
}, },
clear: function() { clear: function() {
inputs = document.getElementsByTagName("input"); inputs = document.getElementsByTagName("input");
for(var b = 0; b < inputs.length; b++) { for(var b = 0; b < inputs.length; b++) {
if(inputs[b].type == "checkbox" && inputs[b].checked == true && inputs[b].className == "styled") { if(inputs[b].type == "checkbox" && inputs[b].checked == true && inputs[b].className == "styled") {
inputs[b].previousSibling.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px"; inputs[b].previousSibling.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
} else if(inputs[b].type == "checkbox" && inputs[b].className == "styled") { } else if(inputs[b].type == "checkbox" && inputs[b].className == "styled") {
inputs[b].previousSibling.style.backgroundPosition = "0 0"; inputs[b].previousSibling.style.backgroundPosition = "0 0";
} else if(inputs[b].type == "radio" && inputs[b].checked == true && inputs[b].className == "styled") { } else if(inputs[b].type == "radio" && inputs[b].checked == true && inputs[b].className == "styled") {
inputs[b].previousSibling.style.backgroundPosition = "0 -" + radioHeight*2 + "px"; inputs[b].previousSibling.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
} else if(inputs[b].type == "radio" && inputs[b].className == "styled") { } else if(inputs[b].type == "radio" && inputs[b].className == "styled") {
inputs[b].previousSibling.style.backgroundPosition = "0 0"; inputs[b].previousSibling.style.backgroundPosition = "0 0";
} }
} }
}, },
choose: function() { choose: function() {
option = this.getElementsByTagName("option"); option = this.getElementsByTagName("option");
for(d = 0; d < option.length; d++) { for(d = 0; d < option.length; d++) {
if(option[d].selected == true) { if(option[d].selected == true) {
// //
var expr = '#select-' + this.id; var expr = '#select-' + this.id;
fb.log(expr); fb.log(expr);
$(expr).text(option[d].childNodes[0].nodeValue); $(expr).text(option[d].childNodes[0].nodeValue);
// bad! // bad!
//document.getElementById("select" + this.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue; //document.getElementById("select" + this.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue;
} }
} }
} }
} }
window.onload = Custom.init; window.onload = Custom.init;

View file

@ -70,7 +70,8 @@ App.Pages.USER.new_entry = function(evt)
$(box).find('.suspended').addClass('hidden'); $(box).find('.suspended').addClass('hidden');
App.Ref.CONTENT.prepend($(box).html()); App.Ref.CONTENT.prepend($(box).html());
App.Helpers.updateScreen(); 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) App.Pages.WEB_DOMAIN.new_entry = function(evt)

View file

@ -138,20 +138,20 @@ App.Templates.html = {
</div>\ </div>\
<div class="form-row dns-template-box cc">\ <div class="form-row dns-template-box cc">\
<label for="#" class="field-label">Template:</label>\ <label for="#" class="field-label">Template:</label>\
<span class="select" id="selecttemplate">~!:TPL_DEFAULT_VALUE~!</span>\ <span class="select" id="selecttemplate">~!:TPL_DEFAULT_VALUE~! t </span>\
<select name="TPL" class="styled tpl-item">\ <select name="TPL" class="styled tpl-item">\
~!:TPL~!\ ~!:TPL~!\
</select>\ </select>\
<span class="context-settings do_action_view_dns_template_settings">View template settings</span>\ <span class="context-settings do_action_view_dns_template_settings">View template settings</span>\
</div>\ </div>\
<div class="form-row cc">\ <!-- div class="form-row cc">\
<label for="#" class="field-label">TTL:</label>\ <label for="#" class="field-label">TTL:</label>\
<input type="text" value="~!:TTL~!" name="TTL" class="text-field ttl-field rule-required rule-numeric">\ <input type="text" value="~!:TTL~!" name="TTL" class="text-field ttl-field rule-required rule-numeric">\
</div>\ </div>\
<div class="form-row cc">\ <div class="form-row cc">\
<label for="#" class="field-label">SOA:</label>\ <label for="#" class="field-label">SOA:</label>\
<input type="text" value="~!:SOA~!" name="SOA" class="text-field rule-required rule-ns">\ <input type="text" value="~!:SOA~!" name="SOA" class="text-field rule-required rule-ns">\
</div>\ </div -->\
<div class="form-row suspended cc">\ <div class="form-row suspended cc">\
<label for="#" class="field-label">Suspended:</label>\ <label for="#" class="field-label">Suspended:</label>\
<input type="checkbox" ~!:SUSPENDED_CHECKED~! value="~!:SUSPENDED_VALUE~!" class="styled do_action_toggle_suspend" name="SUSPEND" />\ <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>\ <label for="#" class="field-label">value:</label>\
<input type="text" value="~!:RECORD_VALUE~!" name="RECORD_VALUE" class="text-field">\ <input type="text" value="~!:RECORD_VALUE~!" name="RECORD_VALUE" class="text-field">\
</div>\ </div>\
<div class="delete-record do_action_delete_subentry"></div>\ <!-- div class="delete-record do_action_delete_subentry"></div -->\
</div>'] </div>']
}, },
ip: { ip: {
@ -286,10 +286,10 @@ App.Templates.html = {
<label for="#" class="field-label">Associated DNS Name:</label>\ <label for="#" class="field-label">Associated DNS Name:</label>\
<input type="text" name="NAME" value="~!:NAME~!" class="text-field rule-domain">\ <input type="text" name="NAME" value="~!:NAME~!" class="text-field rule-domain">\
</div>\ </div>\
<div class="form-row suspended cc">\ <!-- div class="form-row suspended cc">\
<label for="#" class="field-label">Suspended:</label>\ <label for="#" class="field-label">Suspended:</label>\
<input type="checkbox" ~!:SUSPENDED_CHECKED~! value="~!:SUSPENDED_VALUE~!" class="styled do_action_toggle_suspend" name="SUSPEND"/>\ <input type="checkbox" ~!:SUSPENDED_CHECKED~! value="~!:SUSPENDED_VALUE~!" class="styled do_action_toggle_suspend" name="SUSPEND"/>\
</div>\ </div -->\
<div class="form-row buttons-row cc">\ <div class="form-row buttons-row cc">\
<input class="add-entry-btn do_action_save_form" type="submit" value="~!:save_button~!"/>\ <input class="add-entry-btn do_action_save_form" type="submit" value="~!:save_button~!"/>\
<span class="cancel-btn do_action_cancel_form">Cancel</span>\ <span class="cancel-btn do_action_cancel_form">Cancel</span>\
@ -403,7 +403,7 @@ App.Templates.html = {
~!:PACKAGE_OPTIONS~!\ ~!:PACKAGE_OPTIONS~!\
</select>\ </select>\
</div>\ </div>\
<div class="form-row cc">\ <div class="form-row shell-entry cc">\
<label for="#" class="field-label">Shell:</label>\ <label for="#" class="field-label">Shell:</label>\
<select class="styled disabled" name="SHELL">\ <select class="styled disabled" name="SHELL">\
~!:SHELL_OPTIONS~!\ ~!:SHELL_OPTIONS~!\
@ -474,9 +474,9 @@ App.Templates.html = {
<span class="prop-value">~!:FULLNAME~!</span>\ <span class="prop-value">~!:FULLNAME~!</span>\
</span>\ </div>\ </span>\ </div>\
<div class="user-details-box">\ <div class="user-details-box">\
<span class="prop-box prop-box_group-values cc user-details do_action_login_as">\ <!-- span class="prop-box prop-box_group-values cc user-details do_action_login_as">\
<span class="prop-value login-as do_action_login_as">login as</span>\ <span class="prop-value login-as do_action_login_as">login as</span>\
</span>\ </span -->\
<span class="prop-box prop-box_group-values cc user-details">\ <span class="prop-box prop-box_group-values cc user-details">\
<span class="prop-title">email:</span>\ <span class="prop-title">email:</span>\
<span class="group-values">\ <span class="group-values">\
@ -641,10 +641,10 @@ App.Templates.html = {
<label for="#" class="field-label">Domain Aliases:</label>\ <label for="#" class="field-label">Domain Aliases:</label>\
<textarea name="ALIAS" class="textarea rule-alias">~!:ALIAS~!</textarea>\ <textarea name="ALIAS" class="textarea rule-alias">~!:ALIAS~!</textarea>\
</div>\ </div>\
<div class="form-row cc">\ <!-- div class="form-row cc">\
<label for="#" class="field-label">Nginx extensions:</label>\ <label for="#" class="field-label">Nginx extensions:</label>\
<textarea name="NGINX_EXT" class="textarea rule-list">~!:NGINX_EXT~!</textarea>\ <textarea name="NGINX_EXT" class="textarea rule-list">~!:NGINX_EXT~!</textarea>\
</div>\ </div -->\
<div class="form-row cc">\ <div class="form-row cc">\
<label for="#" class="field-label">Statistics:</label>\ <label for="#" class="field-label">Statistics:</label>\
<select name="STAT" class="styled">~!:STAT_OPTIONS~!</select>\ <select name="STAT" class="styled">~!:STAT_OPTIONS~!</select>\
@ -716,7 +716,7 @@ App.Templates.html = {
</div>\ </div>\
</div><!-- Mail options -->\ </div><!-- Mail options -->\
<div class="form-row cc">\ <div class="form-row cc">\
<label for="#" class="field-label">create DNS domain:</label>\ <label for="#" class="field-label">Create DNS domain also:</label>\
<input type="checkbox" value="" name="DNS_DOMAIN" class="styled">\ <input type="checkbox" value="" name="DNS_DOMAIN" class="styled">\
</div>\ </div>\
<div class="form-row buttons-row cc">\ <div class="form-row buttons-row cc">\
@ -846,7 +846,7 @@ App.Templates.html = {
<select name="TYPE" class="styled">~!:TYPE_OPTIONS~!</select>\ <select name="TYPE" class="styled">~!:TYPE_OPTIONS~!</select>\
</div>\ </div>\
<div class="form-row cc">\ <div class="form-row cc">\
<label for="#" class="field-label">Name:</label>\ <label for="#" class="field-label">DB name:</label>\
<input type="text" class="text-field" name="DB" value="~!:DB~!">\ <input type="text" class="text-field" name="DB" value="~!:DB~!">\
</div>\ </div>\
<div class="db-credentials ">\ <div class="db-credentials ">\
@ -860,13 +860,13 @@ App.Templates.html = {
<span class="generate-pwd do_action_generate_pass">Generate</span>\ <span class="generate-pwd do_action_generate_pass">Generate</span>\
</div>\ </div>\
</div>\ </div>\
<!--div class="form-row hidden cc">\ <div class="form-row cc">\
<label for="#" class="field-label">Host:</label>\ <label for="#" class="field-label">Host:</label>\
<select name="HOST" class="styled">~!:HOST_OPTIONS~!</select>\ <select name="HOST" class="styled">~!:HOST_OPTIONS~!</select>\
</div -->\ </div>\
<div class="form-row cc">\ <div class="form-row cc">\
<label for="#" class="field-label">Encoding:</label>\ <label for="#" class="field-label">Character Set:</label>\
<select name="ENCODING" class="styled">~!:ENCODING_OPTIONS~!</select>\ <select name="CHARSET" class="styled">~!:CHARSET_OPTIONS~!</select>\
</div>\ </div>\
<div class="form-row suspended cc">\ <div class="form-row suspended cc">\
<label for="#" class="field-label">Suspended:</label>\ <label for="#" class="field-label">Suspended:</label>\
@ -913,8 +913,8 @@ App.Templates.html = {
<div class="props-ext">\ <div class="props-ext">\
<!-- span class="backup-db do_action_backup_db">backup</span-->\ <!-- span class="backup-db do_action_backup_db">backup</span-->\
<span class="prop-box">\ <span class="prop-box">\
<span class="prop-title">encoding:</span>\ <span class="prop-title">Character Set:</span>\
<span class="prop-value">~!:ENCODING~!</span>\ <span class="prop-value">~!:CHARSET~!</span>\
</span>\ </span>\
<!-- disk usage block -->\ <!-- disk usage block -->\
<div class="b-usage-box disk-usage cc">\ <div class="b-usage-box disk-usage cc">\
@ -1075,13 +1075,13 @@ App.Templates.html = {
<a class="backup-url" href="return alert(\'Not available at the time\');">download</a>\ <a class="backup-url" href="return alert(\'Not available at the time\');">download</a>\
</div>\ </div>\
<div class="props-ext">\ <div class="props-ext">\
<div class="backup-actions">\ <!-- div class="backup-actions">\
<a class="backup-actions-url restore-url" href="return alert(\'Not available at the time\');">restore</a>\ <a class="backup-actions-url restore-url" href="return alert(\'Not available at the time\');">restore</a>\
<a class="backup-actions-url detailed-restore-url" href="return alert(\'Not available at the time\');">\ <a class="backup-actions-url detailed-restore-url" href="return alert(\'Not available at the time\');">\
<span class="detailed-restore-title">detailed</span>\ <span class="detailed-restore-title">detailed</span>\
<span class="detailed-restore-ext">restore</span>\ <span class="detailed-restore-ext">restore</span>\
</a>\ </a>\
</div>\ </div -->\
</div> \ </div> \
</div><!-- // .row-details -->\ </div><!-- // .row-details -->\
</div><!-- // .row 1 -->'] </div><!-- // .row 1 -->']

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

@ -132,18 +132,20 @@ class CRON extends AjaxHandler
$_new = $request->getParameter('new'); $_new = $request->getParameter('new');
$result = array(); $result = array();
if($_new['SUSPEND'] == 'on') {
$result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOB, array('USER' => $user['uid'], 'JOB' => $_new['CMD']));
return $this->reply($result['status']);
}
else {
$result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOB, array('USER' => $user['uid'], 'JOB' => $_new['CMD']));
}
if (!$result['status']) { $result = array();
$this->status = FALSE; if(@Utils::getCheckboxBooleanValue($_new['SUSPEND'])){
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']); $result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOB, array('USER' => $user['uid'], 'JOB' => $_old['JOB']));
} return $this->reply($result['status'], $result['error_message']);
}
elseif(@Utils::getCheckboxBooleanValue($_old['SUSPEND'])){
$result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOB, array('USER' => $user['uid'], 'JOB' => $_old['JOB']));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']);
return $this->reply($result['status'], $result['error_message']);
}
}
$params = array( $params = array(
'USER' => $user['uid'], 'USER' => $user['uid'],

View file

@ -38,6 +38,7 @@ class DB extends AjaxHandler
'TYPE' => $record['TYPE'], 'TYPE' => $record['TYPE'],
'U_DISK' => $record['U_DISK'], 'U_DISK' => $record['U_DISK'],
'DISK' => 2024, 'DISK' => 2024,
'CHARSET' => strtolower($record['CHARSET']),
'SUSPEND' => $record['SUSPEND'], 'SUSPEND' => $record['SUSPEND'],
'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE']))) 'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
); );
@ -65,7 +66,9 @@ class DB extends AjaxHandler
'DB' => $_s['DB'], 'DB' => $_s['DB'],
'DB_USER' => $_s['USER'], 'DB_USER' => $_s['USER'],
'DB_PASSWORD' => $_s['PASSWORD'], 'DB_PASSWORD' => $_s['PASSWORD'],
'TYPE' => $_s['TYPE'] 'TYPE' => $_s['TYPE'],
'HOST' => $_s['HOST'],
'CHARSET' => $_s['CHARSET']
); );
$result = Vesta::execute(Vesta::V_ADD_DB_BASE, $params); $result = Vesta::execute(Vesta::V_ADD_DB_BASE, $params);
@ -74,7 +77,7 @@ class DB extends AjaxHandler
$this->errors[] = array($result['error_code'] => $result['error_message']); $this->errors[] = array($result['error_code'] => $result['error_message']);
} }
if ($_s['SUSPEND'] == 'on') { if (Utils::getCheckboxBooleanValue($_s['SUSPEND'])) {
if($result['status']){ if($result['status']){
$result = array(); $result = array();
@ -86,7 +89,6 @@ class DB extends AjaxHandler
} }
} }
return $this->reply($result['status'], $result['data']); return $this->reply($result['status'], $result['data']);
} }
@ -128,16 +130,19 @@ class DB extends AjaxHandler
$user = $this->getLoggedUser(); $user = $this->getLoggedUser();
$result = array(); $result = array();
if($_new['SUSPEND'] == 'on'){
$result = Vesta::execute(Vesta::V_SUSPEND_DB_BASE, array('USER' => $user['uid'], 'DB' => $_new['DB']));
}
else{
$result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASE, array('USER' => $user['uid'], 'DB' => $_new['DB']));
}
if (!$result['status']) { $result = array();
$this->status = FALSE; if(@Utils::getCheckboxBooleanValue($_new['SUSPEND'])){
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']); $result = Vesta::execute(Vesta::V_SUSPEND_DB_BASE, array('USER' => $user['uid'], 'DB' => $_new['DB']));
return $this->reply($result['status'], $result['error_message']);
}
elseif(@Utils::getCheckboxBooleanValue($_old['SUSPEND'])){
$result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASE, array('USER' => $user['uid'], 'DB' => $_new['DB']));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']);
return $this->reply($result['status'], $result['error_message']);
}
} }
if ($_new['PASSWORD'] != Vesta::SAME_PASSWORD && $_new['PASSWORD'] != $_old['PASSWORD']) { if ($_new['PASSWORD'] != Vesta::SAME_PASSWORD && $_new['PASSWORD'] != $_old['PASSWORD']) {

View file

@ -97,22 +97,13 @@ class DNS extends AjaxHandler
$_s = $request->getParameter('spell'); $_s = $request->getParameter('spell');
$params = array( $params = array(
'USER' => $user['uid'], /// OWNER ??? 'USER' => $user['uid'], /// OWNER ???
'DNS_DOMAIN' => $_s['DNS_DOMAIN'], 'DNS_DOMAIN' => $_s['DNS_DOMAIN'],
'IP' => $_s['IP'] 'IP' => $_s['IP'],
); 'TPL' => $_s['TPL'],
// TODO: rewrite this block. Get away from if/if/if/if 'EXP' => $_s['EXP'],
if ($_s['TPL']) { 'SOA' => $_s['SOA'],
$params['TPL'] = $_s['TPL']; 'TTL' => $_s['TTL']
} );
if ($_s['EXP']) {
$params['EXP'] = $_s['EXP'];
}
if ($_s['SOA']) {
$params['SOA'] = $_s['SOA'];
}
if ($_s['TTL']) {
$params['TTL'] = $_s['TTL'];
}
$result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN, $params); $result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN, $params);
if (!$result['status']) { if (!$result['status']) {
@ -120,7 +111,7 @@ class DNS extends AjaxHandler
} }
if ($_s['SUSPEND'] == 'on') { if (@Utils::getCheckboxBooleanValue($_s['SUSPEND'])) {
if($result['status']){ if($result['status']){
$result = array(); $result = array();
@ -242,19 +233,19 @@ class DNS extends AjaxHandler
$_DNS_DOMAIN = $_old['DNS_DOMAIN']; $_DNS_DOMAIN = $_old['DNS_DOMAIN'];
$result = array(); $result = array();
if($_new['SUSPEND'] == 'on'){ if(@Utils::getCheckboxBooleanValue($_new['SUSPEND'])){
$result = Vesta::execute(Vesta::V_SUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN)); $result = Vesta::execute(Vesta::V_SUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN));
return $this->reply($result['status']); return $this->reply($result['status'], $result['error_message']);
} }
else{ elseif(@Utils::getCheckboxBooleanValue($_old['SUSPEND'])){
$result = Vesta::execute(Vesta::V_UNSUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN)); $result = Vesta::execute(Vesta::V_UNSUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']);
return $this->reply($result['status'], $result['error_message']);
}
} }
if (!$result['status']) {
$this->status = FALSE;
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']);
}
if ($_old['IP'] != $_new['IP']) { if ($_old['IP'] != $_new['IP']) {
$result = array(); $result = array();
@ -267,7 +258,7 @@ class DNS extends AjaxHandler
if ($_old['TPL'] != $_new['TPL']) { if ($_old['TPL'] != $_new['TPL']) {
$result = array(); $result = array();
$result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TPL, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['TPL'])); $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TPL, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'TPL' => $_new['TPL']));
if (!$result['status']) { if (!$result['status']) {
$this->status = FALSE; $this->status = FALSE;
$this->errors['TPL'] = array($result['error_code'] => $result['error_message']); $this->errors['TPL'] = array($result['error_code'] => $result['error_message']);
@ -275,8 +266,9 @@ class DNS extends AjaxHandler
} }
if ($_old['TTL'] != $_new['TTL']) { if ($_old['TTL'] != $_new['TTL']) {
echo 'changing ttl';
$result = array(); $result = array();
$result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['TTL'])); $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'TTL' => $_new['TTL']));
if (!$result['status']) { if (!$result['status']) {
$this->status = FALSE; $this->status = FALSE;
$this->errors['TTL'] = array($result['error_code'] => $result['error_message']); $this->errors['TTL'] = array($result['error_code'] => $result['error_message']);
@ -285,7 +277,7 @@ class DNS extends AjaxHandler
if ($_old['EXP'] != $_new['EXP']) { if ($_old['EXP'] != $_new['EXP']) {
$result = array(); $result = array();
$result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['EXP'])); $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'EXP' => $_new['EXP']));
if (!$result['status']) { if (!$result['status']) {
$this->status = FALSE; $this->status = FALSE;
$this->errors['EXP'] = array($result['error_code'] => $result['error_message']); $this->errors['EXP'] = array($result['error_code'] => $result['error_message']);
@ -294,7 +286,7 @@ class DNS extends AjaxHandler
if ($_old['SOA'] != $_new['SOA']) { if ($_old['SOA'] != $_new['SOA']) {
$result = array(); $result = array();
$result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'IP' => $_new['SOA'])); $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'SOA' => $_new['SOA']));
if (!$result['status']) { if (!$result['status']) {
$this->status = FALSE; $this->status = FALSE;
$this->errors['SOA'] = array($result['error_code'] => $result['error_message']); $this->errors['SOA'] = array($result['error_code'] => $result['error_message']);
@ -307,13 +299,6 @@ class DNS extends AjaxHandler
Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['TTL'])); Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['TTL']));
Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['EXP'])); Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['EXP']));
Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'IP' => $_old['SOA'])); Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'IP' => $_old['SOA']));
if($_old['SUSPEND'] == 'on'){
$result = Vesta::execute(Vesta::V_SUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN));
}
else{
$result = Vesta::execute(Vesta::V_UNSUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN));
}
} }
return $this->reply($this->status, ''); return $this->reply($this->status, '');
@ -432,7 +417,7 @@ class DNS extends AjaxHandler
$_entities = $request->getParameter('entities'); $_entities = $request->getParameter('entities');
foreach($_entities as $entity){ foreach($_entities as $entity){
$result = Vesta::execute(Vesta::V_UNUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], $entity['DNS_DOMAIN'])); $result = Vesta::execute(Vesta::V_UNSUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], $entity['DNS_DOMAIN']));
} }
return $this->reply($result['status'], $result['data']); return $this->reply($result['status'], $result['data']);

View file

@ -19,6 +19,10 @@ class IP extends AjaxHandler
*/ */
public function getListExecute(Request $request) public function getListExecute(Request $request)
{ {
if(!VestaSession::getUserRole()){
return self::getListUserIpsExecute($request);
}
$reply = array(); $reply = array();
$result = Vesta::execute(Vesta::V_LIST_SYS_IPS, array(Config::get('response_type'))); $result = Vesta::execute(Vesta::V_LIST_SYS_IPS, array(Config::get('response_type')));
foreach ($result['data'] as $ip => $details) { foreach ($result['data'] as $ip => $details) {
@ -44,8 +48,10 @@ class IP extends AjaxHandler
*/ */
public function getListUserIpsExecute(Request $request) public function getListUserIpsExecute(Request $request)
{ {
$user = $this->getLoggedUser();
$reply = array(); $reply = array();
$result = Vesta::execute(Vesta::V_LIST_USER_IPS, array(Config::get('response_type'))); $result = Vesta::execute(Vesta::V_LIST_USER_IPS, array($user['uid'], Config::get('response_type')));
foreach ($result['data'] as $ip => $details) { foreach ($result['data'] as $ip => $details) {
$reply[] = array_merge( $reply[] = array_merge(
array( array(

View file

@ -218,7 +218,7 @@ MAIL;
$disk_quota = $rs['data']; $disk_quota = $rs['data'];
$reply = array( $reply = array(
'auth_user' => array('uid' => $this->getLoggedUser()), 'auth_user' => array('uid' => $this->getLoggedUser(), 'admin' => !!VestaSession::getUserRole()),
'user_data' => array('BANDWIDTH' => (int)$bandwidth, 'DISK_QUOTA' => (int)$disk_quota), 'user_data' => array('BANDWIDTH' => (int)$bandwidth, 'DISK_QUOTA' => (int)$disk_quota),
'WEB_DOMAIN' => $this->getWebDomainParams($data_web_domain, $global_data), 'WEB_DOMAIN' => $this->getWebDomainParams($data_web_domain, $global_data),
'CRON' => $this->getCronParams(), 'CRON' => $this->getCronParams(),
@ -370,15 +370,76 @@ MAIL;
public function getDbParams($data = array()) public function getDbParams($data = array())
{ {
$db_types = $this->getDBTypes(); $db_types = $this->getDBTypes();
$db_hosts = $this->getDBHosts();
$result = Vesta::execute(Vesta::V_LIST_DNS_TEMPLATES, null, self::JSON);
return array( return array(
'TYPE' => $db_types, 'TYPE' => $db_types,
'HOST' => array('vestacp.com' => 'vestacp.com', 'askcow.org' => 'askcow.org') 'HOST' => $db_hosts,
'CHARSET' => array(
'utf8' => 'utf8', 'latin1' => 'latin1', 'cp1251' => 'cp1251'
/*
'' => '',
'big5' => 'Big5 — Traditional Chinese ',
'dec8' => 'dec8 — DEC West European ',
'cp850' => 'cp850 — DOS West European',
'hp8' => 'hp8 — HP West European',
'koi8r' => 'koi8r — KOI8-R Relcom Russian',
'latin1' => 'latin1 — cp1252 West European',
'latin2' => 'latin2 — ISO 8859-2 Central European',
'swe7' => 'swe7 — 7bit Swedish',
'ascii' => 'ascii — US ASCII',
'ujis' => 'ujis — EUC-JP Japanese',
'sjis' => 'sjis — Shift-JIS Japanese',
'hebrew' => 'hebrew — ISO 8859-8 Hebrew',
'tis620' => 'tis620 — TIS620 Thai',
'euckr' => 'euckr — EUC-KR Korean',
'koi8u' => 'koi8u — KOI8-U Ukrainian',
'gb2312' => 'gb2312 — GB2312 Simplified Chinese',
'greek' => 'greek — ISO 8859-7 Greek',
'cp1250' => 'cp1250 — Windows Central European',
'gbk' => 'gbk — GBK Simplified Chinese',
'latin5' => 'latin5 — ISO 8859-9 Turkish',
'armscii8' => 'armscii8— ARMSCII-8 Armenian',
'utf8' => 'utf8 — UTF-8 Unicode',
'ucs2' => 'ucs2 — UCS-2 Unicode',
'cp866' => 'cp866 — DOS Russian',
'keybcs2' => 'keybcs2 — DOS Kamenicky Czech-Slovak',
'macce' => 'macce — Mac Central European',
'macroman' => 'macroman— Mac West European',
'cp853' => 'cp852 — DOS Central European',
'latin7' => 'latin7 — ISO 8859-13 Baltic',
'cp1251' => 'cp1251 — Windows Cyrillic',
'cp1256' => 'cp1256 — Windows Arabic',
'cp1257' => 'cp1257 — Windows Baltic',
'binary' => 'binary — Binary pseudo charset',
'geostd8' => 'geostd8 — GEOSTD8 Georgian',
'cp932' => 'cp932 — SJIS for Windows Japanese',
'eucjpms' => 'eucjpms — UJIS for Windows Japanese'
*/
)
); );
} }
public function getDBTypes() 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

@ -45,13 +45,13 @@ class USER extends AjaxHandler
"DNS_DOMAINS" => $details['DNS_DOMAINS'], "DNS_DOMAINS" => $details['DNS_DOMAINS'],
"DISK_QUOTA" => $details['DISK_QUOTA'], "DISK_QUOTA" => $details['DISK_QUOTA'],
"BANDWIDTH" => $details['BANDWIDTH'], "BANDWIDTH" => $details['BANDWIDTH'],
// "NS" => $details['NS'],
"SHELL" => $details['SHELL'], "SHELL" => $details['SHELL'],
"BACKUPS" => $details['BACKUPS'], "BACKUPS" => $details['BACKUPS'],
"WEB_TPL" => $details['WEB_TPL'], "WEB_TPL" => $details['WEB_TPL'],
"SUSPEND" => $details['SUSPENDED'], "SUSPEND" => $details['SUSPENDED'],
"CONTACT" => $details['CONTACT'], "CONTACT" => $details['CONTACT'],
"REPORTS" => $details['REPORTS'], "REPORTS" => $details['REPORTS'],
"REPORTS_ENABLED" => $details['REPORTS'],
"IP_OWNED" => $details['IP_OWNED'], "IP_OWNED" => $details['IP_OWNED'],
"U_DIR_DISK" => $details['U_DIR_DISK'], "U_DIR_DISK" => $details['U_DIR_DISK'],
"U_DISK" => $details['U_DISK'], "U_DISK" => $details['U_DISK'],
@ -65,7 +65,8 @@ class USER extends AjaxHandler
"U_MAIL_FORWARDERS" => '0', "U_MAIL_FORWARDERS" => '0',
"U_MAIL_BOXES" => '0', "U_MAIL_BOXES" => '0',
"U_CRON_JOBS" => $details['U_CRON_JOBS'], "U_CRON_JOBS" => $details['U_CRON_JOBS'],
"IP_OWNED" => $details['IP_OWNED'] "IP_OWNED" => $details['IP_OWNED'],
"NGINX_EXT" => $details['"NGINX_EXT']
); );
$reply[$user] = array_merge($user_details, $nses); $reply[$user] = array_merge($user_details, $nses);
// $reply[$user] = $user_details; // $reply[$user] = $user_details;
@ -132,33 +133,42 @@ class USER extends AjaxHandler
*/ */
public function addExecute(Request $request) public function addExecute(Request $request)
{ {
$spell = $request->getParameter('spell'); $_s = $request->getParameter('spell');
$user = $this->getLoggedUser(); $user = $this->getLoggedUser();
$params = array( $params = array(
'USER' => $spell['LOGIN_NAME'], 'USER' => $_s['LOGIN_NAME'],
'PASSWORD' => $spell['PASSWORD'], 'PASSWORD' => $_s['PASSWORD'],
'EMAIL' => $spell['CONTACT'], 'EMAIL' => $_s['CONTACT'],
'PACKAGE' => $spell['PACKAGE'], 'PACKAGE' => $_s['PACKAGE'],
'FNAME' => $spell['FNAME'], 'FNAME' => $_s['FNAME'],
'LNAME' => $spell['LNAME'] 'LNAME' => $_s['LNAME']
); );
$result = Vesta::execute(Vesta::V_ADD_SYS_USER, $params); $result = Vesta::execute(Vesta::V_ADD_SYS_USER, $params);
// Reports // Reports
$enable_reports = Utils::getCheckboxBooleanValue($spell['REPORTS_ENABLED']); // $enable_reports = Utils::getCheckboxBooleanValue($spell['REPORTS_ENABLED']);
$reports_result = $this->setUserReports($spell['LOGIN_NAME'], $spell['REPORTS_ENABLED']); // $reports_result = $this->setUserReports($spell['LOGIN_NAME'], $spell['REPORTS_ENABLED']);
// Set SHELL // Set SHELL
$this->setShell($spell['LOGIN_NAME'], $spell['SHELL']); // $this->setShell($_s['LOGIN_NAME'], $_s['SHELL']);
if (!$result['status']) { if (!$result['status']) {
$this->errors[] = array($result['error_code'] => $result['error_message']); $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 ($_s['SUSPEND'] == 'on') {
if($result['status']){ if($result['status']){
$result = array(); $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']) { if (!$result['status']) {
$this->status = FALSE; $this->status = FALSE;
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']); $this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']);
@ -204,7 +214,22 @@ class USER extends AjaxHandler
$_old = $request->getParameter('old'); $_old = $request->getParameter('old');
$_USER = $_old['LOGIN_NAME']; $_USER = $_old['LOGIN_NAME'];
$result = array();
if(@Utils::getCheckboxBooleanValue($_new['SUSPEND'])){
$result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $_USER));
return $this->reply($result['status'], $result['error_message']);
}
elseif(@Utils::getCheckboxBooleanValue($_old['SUSPEND'])){
$result = Vesta::execute(Vesta::V_UNSUSPEND_SYS_USER, array('USER' => $_USER));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']);
return $this->reply($result['status'], $result['error_message']);
}
}
$reports_result = $this->setUserReports($_USER, $_new['REPORTS_ENABLED']); $reports_result = $this->setUserReports($_USER, $_new['REPORTS_ENABLED']);
if (!empty($_new['PASSWORD']) && $_new['PASSWORD'] != Vesta::SAME_PASSWORD) { if (!empty($_new['PASSWORD']) && $_new['PASSWORD'] != Vesta::SAME_PASSWORD) {
@ -234,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 // Set SHELL
$this->setShell($_USER, $_new['SHELL']); $this->setShell($_USER, $_new['SHELL']);
@ -251,38 +290,12 @@ class USER extends AjaxHandler
$this->errors['NAMES'] = array($result['error_code'] => $result['error_message']); $this->errors['NAMES'] = array($result['error_code'] => $result['error_message']);
} }
if ($_old['SUSPEND'] != $_new['SUSPEND']) {
$result = array();
if($_new['SUSPEND'] == 'on'){
$result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $_USER));
}
else{
$result = Vesta::execute(Vesta::V_UNSUSPEND_SYS_USER, array('USER' => $_USER));
}
if (!$result['status']) {
$this->status = FALSE;
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']);
}
}
if (!$this->status) { if (!$this->status) {
Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, array('USER' => $_USER, 'PASSWORD' => $_old['PASSWORD'])); Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, array('USER' => $_USER, 'PASSWORD' => $_old['PASSWORD']));
Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_old['PACKAGE'])); Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_old['PACKAGE']));
Vesta::execute(Vesta::V_CHANGE_SYS_USER_CONTACT, array('USER' => $_USER, 'EMAIL' => $_old['EMAIL'])); Vesta::execute(Vesta::V_CHANGE_SYS_USER_CONTACT, array('USER' => $_USER, 'EMAIL' => $_old['EMAIL']));
Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, array('USER' => $_USER, 'NS1' => $_old['NS1'], 'NS2' => $_old['NS2'])); Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, array('USER' => $_USER, 'NS1' => $_old['NS1'], 'NS2' => $_old['NS2']));
Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_old['SHELL'])); Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_old['SHELL']));
if($_old['SUSPEND'] == 'on'){
$result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $_USER));
}
else{
$result = Vesta::execute(Vesta::V_UNSUSPEND_SYS_USER, array('USER' => $_USER));
}
} }
return $this->reply($this->status, ''); return $this->reply($this->status, '');

View file

@ -37,13 +37,13 @@ class WEB_DOMAIN extends AjaxHandler
'STAT' => $record['STATS'], 'STAT' => $record['STATS'],
'STATS_LOGIN' => $record['STATS_AUTH'], 'STATS_LOGIN' => $record['STATS_AUTH'],
'SSL' => $record['SSL'] == 'yes' ? 'on' : 'off', 'SSL' => $record['SSL'] == 'yes' ? 'on' : 'off',
'SSL_HOME' => $record['SSL_HOME'] == 'tsingle' ? 'off' : 'on', 'SSL_HOME' => $record['SSL_HOME'] == 'same' ? 'off' : 'on',
'SSL_CRT' => '', 'SSL_CRT' => '',
'SSL_KEY' => '', 'SSL_KEY' => '',
'SSL_CA' => '', 'SSL_CA' => '',
'NGINX' => $record['NGINX'], 'NGINX' => $record['NGINX'],
'NGINX_EXT' => $record['NGINX_EXT'], 'NGINX_EXT' => $record['NGINX_EXT'],
'SUSPEND' => $record['SUSPEND'] == 'on' ? 'on' : 'off', 'SUSPEND' => $record['SUSPEND'], // == 'yes' ? 'on' : 'off',
'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE']))) 'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
); );
$web_details['STAT'] == '' ? $web_details['STAT'] = 'none' : true; $web_details['STAT'] == '' ? $web_details['STAT'] = 'none' : true;
@ -85,6 +85,7 @@ class WEB_DOMAIN extends AjaxHandler
if (!$result['status']) { if (!$result['status']) {
$this->errors[] = array($result['error_code'] => $result['error_message']); $this->errors[] = array($result['error_code'] => $result['error_message']);
return $this->reply($result['status'], $result['data']);
} }
if (!empty($_s['TPL'])) { if (!empty($_s['TPL'])) {
@ -101,9 +102,9 @@ class WEB_DOMAIN extends AjaxHandler
} }
} }
if (!empty($_s['ALIAS'])) { if (!empty($_s['ALIAS'])) {
$alias = str_replace("\n", "", $_s['ALIAS']); $alias_arr = explode(',', str_replace("\n", "", $_s['ALIAS']));
$alias = str_replace("\n", "", $alias);
foreach ($alias_arr as $alias) { foreach ($alias_arr as $alias) {
$params = array( $params = array(
@ -112,7 +113,6 @@ class WEB_DOMAIN extends AjaxHandler
'ALIAS' => trim($alias) 'ALIAS' => trim($alias)
); );
$result = 0; $result = 0;
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, $params); $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, $params);
if (!$result['status']) { if (!$result['status']) {
@ -121,7 +121,7 @@ class WEB_DOMAIN extends AjaxHandler
} }
} }
if (!empty($_s['STATS']) && @$_s['STATS'] != 'none') { if (!empty($_s['STAT']) && @$_s['STAT'] != 'none') {
$params = array( $params = array(
'USER' => $user['uid'], 'USER' => $user['uid'],
'DOMAIN' => $_s['DOMAIN'], 'DOMAIN' => $_s['DOMAIN'],
@ -148,21 +148,31 @@ class WEB_DOMAIN extends AjaxHandler
$this->errors['STAT_AUTH'] = array($result['error_code'] => $result['error_message']); $this->errors['STAT_AUTH'] = array($result['error_code'] => $result['error_message']);
} }
if (!empty($_new['CGI'])) { if (!empty($_s['CGI'])) {
if (Utils::getCheckboxBooleanValue($_new['CGI'])) { if (Utils::getCheckboxBooleanValue($_s['CGI'])) {
/* removed due to CGI is set by default at WEB DOMAIN creation
$result = array(); $result = array();
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_CGI, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_CGI, array('USER' => $user['uid'], 'DOMAIN' => $_s['DOMAIN']));
if (!$result['status']) { if (!$result['status']) {
$this->status = FALSE; $this->status = FALSE;
$this->errors['ADD_CGI'] = array($result['error_code'] => $result['error_message']); $this->errors['ADD_CGI'] = array($result['error_code'] => $result['error_message']);
} }
*/
}
else{
$result = array();
$result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_CGI, array('USER' => $user['uid'], 'DOMAIN' => $_s['DOMAIN']));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['DEL_CGI'] = array($result['error_code'] => $result['error_message']);
}
} }
} }
if (!empty($_new['ELOG'])) { if (!empty($_s['ELOG'])) {
if (Utils::getCheckboxBooleanValue($_new['ELOG'])) { if (Utils::getCheckboxBooleanValue($_s['ELOG'])) {
$result = array(); $result = array();
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ELOG, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ELOG, array('USER' => $user['uid'], 'DOMAIN' => $_s['DOMAIN']));
if (!$result['status']) { if (!$result['status']) {
$this->status = FALSE; $this->status = FALSE;
$this->errors['ADD_ELOG'] = array($result['error_code'] => $result['error_message']); $this->errors['ADD_ELOG'] = array($result['error_code'] => $result['error_message']);
@ -170,16 +180,12 @@ class WEB_DOMAIN extends AjaxHandler
} }
} }
if (($_s['DNS_DOMAIN']) == 'on') { if (Utils::getCheckboxBooleanValue($_s['DNS_DOMAIN'])) {
echo 'adding dns domain';
echo '<br>';
$params = array(
'USER' => $user['uid'],
'DNS_DOMAIN' => $_s['DOMAIN'],
'IP' => $_s['IP']
);
echo 'adding dns domain';
echo '<br>';
/*
require_once V_ROOT_DIR . 'api/DNS.class.php'; require_once V_ROOT_DIR . 'api/DNS.class.php';
$dns = new DNS(); $dns = new DNS();
@ -188,6 +194,36 @@ class WEB_DOMAIN extends AjaxHandler
if (!$result['status']) { if (!$result['status']) {
$this->errors['DNS_DOMAIN'] = array($result['error_code'] => $result['error_message']); $this->errors['DNS_DOMAIN'] = array($result['error_code'] => $result['error_message']);
} }
*/
$_GET['debug'] = 2;
$params = array(
'USER' => $user['uid'],
'DNS_DOMAIN' => $_s['DOMAIN'],
'IP' => $_s['IP']
);
$result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN, $params);
if (!$result['status']) {
$this->errors[] = array($result['error_code'] => $result['error_message']);
}
if (@Utils::getCheckboxBooleanValue($_s['SUSPEND'])) {
if($result['status']){
$result = array();
$result = Vesta::execute(Vesta::V_SUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_s['DOMAIN']));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['DNS_SUSPEND'] = array($result['error_code'] => $result['error_message']);
}
}
}
} }
@ -209,8 +245,41 @@ class WEB_DOMAIN extends AjaxHandler
}*/ }*/
if ($_s['SUSPEND'] == 'on') { if (!empty($_s['SSL_KEY']) && !empty($_s['SSL_CRT']) && $_s['SSL'] == 'on' ) {
$ssl_dir = sys_get_temp_dir().'/';
$ssl_crt_file = $ssl_dir . $_s['DOMAIN'] . '.crt';
file_put_contents($ssl_crt_file, $_s['SSL_CRT']);
$ssl_key_file = $ssl_dir . $_s['DOMAIN'] . '.key';
file_put_contents($ssl_key_file, $_s['SSL_KEY']);
if (!empty($_s['SSL_CA'])) {
$ssl_ca_file = $ssl_dir . $_s['DOMAIN'] . '.ca';
file_put_contents($ssl_ca_file, $_s['SSL_CA']);
}
// $_GET['debug'] = 2;
$params = array(
'USER' => $user['uid'],
'DOMAIN' => $_s['DOMAIN'],
'SSL_DIR' => $ssl_dir,
'SSL_HOME' => $_s['SSL_HOME'] == 'on' ? 'single' : 'same'
);
$result = 0;
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params);
if (!$result['status']) {
$this->errors['SSL'] = array($result['error_code'] => $result['error_message']);
}
unlink($ssl_crt_file);
unlink($ssl_key_file);
unlink($ssl_ca_file);
}
if (@Utils::getCheckboxBooleanValue($_s['SUSPEND'])) {
if($result['status']){ if($result['status']){
$result = array(); $result = array();
@ -222,6 +291,7 @@ class WEB_DOMAIN extends AjaxHandler
} }
} }
return $this->reply($result['status'], $result['data']); return $this->reply($result['status'], $result['data']);
} }
@ -267,39 +337,20 @@ class WEB_DOMAIN extends AjaxHandler
$result['status'] = TRUE; $result['status'] = TRUE;
if ($_old['SUSPEND'] != $_new['SUSPEND']) {
if ($_new['SUSPEND'] == 'on') { if(@Utils::getCheckboxBooleanValue($_new['SUSPEND'])){
$result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
if (!$result['status']) { return $this->reply($result['status'], $result['error_message']);
$this->status = FALSE; }
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']); elseif(@Utils::getCheckboxBooleanValue($_old['SUSPEND'])){
} $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
// return $this->reply($result['status']); if (!$result['status']) {
} $this->status = FALSE;
else { $this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']);
$result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); return $this->reply($result['status'], $result['error_message']);
if (!$result['status']) { }
$this->status = FALSE; }
$this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']);
}
}
if ($_new['SUSPEND'] == 'on') {
$result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']);
}
// return $this->reply($result['status']);
}
else {
$result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']);
}
}
}
if ($_old['IP'] != $_new['IP']) { if ($_old['IP'] != $_new['IP']) {
$result = array(); $result = array();
$result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_IP, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN, 'IP' => $_new['IP'])); $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_IP, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN, 'IP' => $_new['IP']));
@ -437,7 +488,15 @@ class WEB_DOMAIN extends AjaxHandler
} }
if (( !empty($_new['SSL_KEY']) && !empty($_new['SSL_CRT']) && $_new['SSL'] == 'on') || $_old['SSL_HOME'] != $_new['SSL_HOME']) { if ( ( $_old['SSL_KEY'] != $_new['SSL_KEY']
|| $_old['SSL_CRT'] != $_new['SSL_CRT']
|| $_old['SSL_CA'] != $_new['SSL_CA']
|| $_old['SSL_HOME'] != $_new['SSL_HOME']
)
&& !empty($_new['SSL_KEY'])
&& !empty($_new['SSL_CRT'])
&& $_new['SSL'] == 'on'
) {
$ssl_dir = sys_get_temp_dir().'/'; $ssl_dir = sys_get_temp_dir().'/';
$ssl_crt_file = $ssl_dir . $_new['DOMAIN'] . '.crt'; $ssl_crt_file = $ssl_dir . $_new['DOMAIN'] . '.crt';
@ -455,20 +514,39 @@ class WEB_DOMAIN extends AjaxHandler
'USER' => $user['uid'], 'USER' => $user['uid'],
'DOMAIN' => $_DOMAIN, 'DOMAIN' => $_DOMAIN,
'SSL_DIR' => $ssl_dir, 'SSL_DIR' => $ssl_dir,
'SSL_HOME' => $_new['SSL_HOME'] == 'on' ? 'shared' : 'single' 'SSL_HOME' => $_new['SSL_HOME'] == 'on' ? 'single' : 'same'
); );
$result = 0; $result = 0;
// updating ssl
if($_old['SSL'] == 'on'){ if($_old['SSL'] == 'on'){
$result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_SSL, $params); $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_SSL, $params);
if (!$result['status']) {
$this->errors['SSL'] = array($result['error_code'] => $result['error_message']);
}
// if ssl home dir changed, updating it
if($_old['SSL_HOME'] != $_new['SSL_HOME']){
$params = array(
'USER' => $user['uid'],
'DOMAIN' => $_DOMAIN,
'SSL_HOME' => $_new['SSL_HOME'] == 'on' ? 'single' : 'same'
);
$result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_SSLHOME, $params);
if (!$result['status']) {
$this->errors['SSL_HOME'] = array($result['error_code'] => $result['error_message']);
}
}
} }
// adding new ssl
else{ else{
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params); $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params);
if (!$result['status']) {
$this->errors['SSL'] = array($result['error_code'] => $result['error_message']);
}
} }
if (!$result['status']) {
$this->errors['SSL'] = array($result['error_code'] => $result['error_message']);
}
unlink($ssl_crt_file); unlink($ssl_crt_file);
unlink($ssl_key_file); unlink($ssl_key_file);

View file

@ -29,6 +29,7 @@ class Vesta
const V_LIST_SYS_USER = 'v_list_user'; const V_LIST_SYS_USER = 'v_list_user';
const V_LIST_USER_PACKAGES = 'v_list_user_packages'; const V_LIST_USER_PACKAGES = 'v_list_user_packages';
const V_ADD_SYS_USER = 'v_add_user'; 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_CONTACT = 'v_change_user_contact';
const V_CHANGE_SYS_USER_NS = 'v_change_user_ns'; const V_CHANGE_SYS_USER_NS = 'v_change_user_ns';
const V_CHANGE_SYS_USER_PACKAGE = 'v_change_user_package'; 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_SUSPEND_SYS_USER = 'v_suspend_user';
const V_UNSUSPEND_SYS_USER = 'v_unsuspend_user'; const V_UNSUSPEND_SYS_USER = 'v_unsuspend_user';
const V_DEL_SYS_USER = 'v_delete_user'; const V_DEL_SYS_USER = 'v_delete_user';
const V_DEL_SYS_USER_REPORTS = 'v_delete_user_reports';
// WEB_DOMAIN // WEB_DOMAIN
const V_LIST_WEB_DOMAINS = 'v_list_web_domains'; const V_LIST_WEB_DOMAINS = 'v_list_web_domains';
const V_LIST_WEB_DOMAINS_ALIAS = 'v_list_web_domains_alias'; const V_LIST_WEB_DOMAINS_ALIAS = 'v_list_web_domains_alias';
@ -46,6 +48,7 @@ class Vesta
const V_LIST_WEB_DOMAINS_PROXY = 'v_list_web_domains_proxy'; const V_LIST_WEB_DOMAINS_PROXY = 'v_list_web_domains_proxy';
const V_LIST_WEB_DOMAINS_SSL = 'v_list_web_domains_ssl'; const V_LIST_WEB_DOMAINS_SSL = 'v_list_web_domains_ssl';
const V_LIST_WEB_DOMAINS_STATS = 'v_list_web_domains_stats'; const V_LIST_WEB_DOMAINS_STATS = 'v_list_web_domains_stats';
const V_LIST_WEB_DOMAIN_SSL = 'v_list_web_domain_ssl';
const V_LIST_WEB_TEMPLATES = 'v_list_web_templates'; const V_LIST_WEB_TEMPLATES = 'v_list_web_templates';
const V_ADD_WEB_DOMAIN = 'v_add_web_domain'; const V_ADD_WEB_DOMAIN = 'v_add_web_domain';
const V_ADD_WEB_DOMAIN_ALIAS = 'v_add_web_domain_alias'; const V_ADD_WEB_DOMAIN_ALIAS = 'v_add_web_domain_alias';
@ -55,7 +58,7 @@ class Vesta
const V_ADD_WEB_DOMAIN_ELOG = 'v_add_web_domain_elog'; const V_ADD_WEB_DOMAIN_ELOG = 'v_add_web_domain_elog';
const V_ADD_WEB_DOMAIN_CGI = 'v_add_web_domain_cgi'; const V_ADD_WEB_DOMAIN_CGI = 'v_add_web_domain_cgi';
const V_CHANGE_WEB_DOMAIN_IP = 'v_change_web_domain_ip'; const V_CHANGE_WEB_DOMAIN_IP = 'v_change_web_domain_ip';
const V_CHANGE_WEB_DOMAIN_SSLCERT = 'v_change_web_domain_sslcert'; const V_CHANGE_WEB_DOMAIN_SSL = 'v_change_web_domain_sslcert';
const V_CHANGE_WEB_DOMAIN_SSLHOME = 'v_change_web_domain_sslhome'; const V_CHANGE_WEB_DOMAIN_SSLHOME = 'v_change_web_domain_sslhome';
const V_CHANGE_WEB_DOMAIN_TPL = 'v_change_web_domain_tpl'; const V_CHANGE_WEB_DOMAIN_TPL = 'v_change_web_domain_tpl';
const V_DEL_WEB_DOMAIN_CGI = 'v_delete_web_domain_cgi'; const V_DEL_WEB_DOMAIN_CGI = 'v_delete_web_domain_cgi';
@ -121,14 +124,14 @@ class Vesta
// CRON // CRON
const V_LIST_CRON_JOBS = 'v_list_cron_jobs'; const V_LIST_CRON_JOBS = 'v_list_cron_jobs';
const V_ADD_CRON_JOB = 'v_add_cron_job'; 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_CHANGE_CRON_JOB = 'v_change_cron_job';
const V_SUSPEND_CRON_JOB = 'v_suspend_cron_job'; const V_SUSPEND_CRON_JOB = 'v_suspend_cron_job';
const V_SUSPEND_CRON_JOBS = 'v_suspend_cron_jobs'; const V_SUSPEND_CRON_JOBS = 'v_suspend_cron_jobs';
const V_UNSUSPEND_CRON_JOB = 'v_unsuspend_cron_job'; const V_UNSUSPEND_CRON_JOB = 'v_unsuspend_cron_job';
const V_UNSUSPEND_CRON_JOBS = 'v_unsuspend_cron_jobs'; const V_UNSUSPEND_CRON_JOBS = 'v_unsuspend_cron_jobs';
const V_DEL_CRON_JOB = 'v_delete_cron_job'; 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 // STATS
const V_LIST_SYS_RRD = 'v_list_sys_rrd json'; const V_LIST_SYS_RRD = 'v_list_sys_rrd json';
const V_UPDATE_SYS_RRD = 'v_update_sys_rrd'; const V_UPDATE_SYS_RRD = 'v_update_sys_rrd';

View file

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

View file

@ -5,7 +5,7 @@ class Utils
public static function getCheckboxBooleanValue($checkbox_value) public static function getCheckboxBooleanValue($checkbox_value)
{ {
return $checkbox_value == 'on' ? true : false; return ($checkbox_value == 'on' || $checkbox_value == 'yes' || $checkbox_value === TRUE) ? true : false;
} }
} }

View file

@ -18,7 +18,7 @@ switch ($_GET['action']) {
handleUpload(); handleUpload();
} }
else { else {
show_form(); show_form();
} }
break; break;
} }
@ -59,8 +59,8 @@ function handleUpload()
function show_form() function show_form()
{ {
$type = $_GET['type']; $type = $_GET['type'];
if (!in_array($type, array('key', 'cert'))) { if (!in_array($type, array('key', 'cert', 'ca'))) {
exit; exit;
} }
print <<<HTML print <<<HTML
@ -90,4 +90,4 @@ function show_form()
HTML; HTML;
} }
?> ?>