Session handling

This commit is contained in:
Dima Malishev 2011-09-11 02:57:00 +03:00
parent e1011048bd
commit b1ea8b2726
10 changed files with 243 additions and 91 deletions

View file

@ -1,3 +1,26 @@
App.Actions.authorize = function()
{
if ($('#authorize-form').length > 0) {
return;
}
App.View.popup('login');
}
App.Actions.do_authorise = function()
{
$('#authorize-error').text('');
App.Ajax.request('MAIN.signin', {'login':$('#authorize-login').val(), 'password':$('#authorize-login'.val())}, function(reply)
{
if (reply.result) {
location.href = '';
}
else {
$('#authorize-error').text(reply.message);
}
});
}
App.Actions.delete_entry = function(evt) App.Actions.delete_entry = function(evt)
{ {
var confirmed = confirm(App.i18n.getMessage('confirm')); var confirmed = confirm(App.i18n.getMessage('confirm'));
@ -351,3 +374,14 @@ App.Actions.view_template_info = function(evt)
} }
}); });
} }
App.Actions.toggle_stats_block = function(evt)
{
var elm = $(evt.target);
if (!!elm.attr('checked')) {
elm.parents('.stats-settings').find('.stats-block').removeClass('hidden');
}
else {
elm.parents('.stats-settings').find('.stats-block').addClass('hidden');
}
}

View file

@ -191,8 +191,9 @@ App.Ajax.request = function(jedi_method, data, callback)
reply = jsonParse(reply); reply = jsonParse(reply);
if (reply.result == 'NOT_AUTHORISED') { if (reply.result == 'NOT_AUTHORISED') {
$('#content').html('<center><h1 style="font-size: 18px;color:red;">Not Authorized</h1></center>');
return alert('NOT AUTH'); App.Helpers.afterAjax();
return App.Actions.authorize();
} }
//timer.start(); //timer.start();

View file

@ -296,6 +296,13 @@ App.HTML.Build.web_domain_entry = function(o, key)
} }
tpl.set(':SUSPENDED_TPL', sub_tpl.finalize()); tpl.set(':SUSPENDED_TPL', sub_tpl.finalize());
if (o.STATS_LOGIN.trim() != '') {
tpl.set(':STATS_AUTH', '+auth');
}
else {
tpl.set(':STATS_AUTH', '');
}
return tpl.finalize(); return tpl.finalize();
} }
@ -304,6 +311,12 @@ App.HTML.Build.web_domain_form = function(options, id)
if('undefined' == typeof App.Env.initialParams) { if('undefined' == typeof App.Env.initialParams) {
return alert('PLease wait a bit. Some background processes are not yet executed. Thank you for patience.'); return alert('PLease wait a bit. Some background processes are not yet executed. Thank you for patience.');
} }
var in_edit = false;
if (!App.Helpers.isEmpty(options)) {
in_edit = true;
}
var tpl = App.Templates.get('FORM', 'web_domain'); var tpl = App.Templates.get('FORM', 'web_domain');
tpl.set(':source', options); tpl.set(':source', options);
tpl.set(':id', id || ''); tpl.set(':id', id || '');
@ -318,10 +331,32 @@ App.HTML.Build.web_domain_form = function(options, id)
} }
options = !App.Helpers.isEmpty(options) ? options : App.Empty.WEB_DOMAIN; options = !App.Helpers.isEmpty(options) ? options : App.Empty.WEB_DOMAIN;
if (in_edit == true) {
options.STATS_PASSWORD = options.STATS_LOGIN.trim() != '' ? App.Settings.PASSWORD_IMMUTE : '';
}
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);
if (options.CGI == 'yes') {
tpl.set(':CHECKED_CGI', 'checked="checked"');
}
if (options.ELOG == 'yes') {
tpl.set(':CHECKED_ELOG', 'checked="checked"');
}
if (options.STATS_LOGIN.trim() != '') {
tpl.set(':STAT_AUTH', 'checked="checked"');
tpl.set(':ACTIVE_LOGIN', '');
tpl.set(':ACTIVE_PASSWORD', '');
tpl.set(':stats_auth_checked', 'checked="checked"');
}
else {
tpl.set(':ACTIVE_LOGIN', 'hidden');
tpl.set(':ACTIVE_PASSWORD', 'hidden');
tpl.set(':stats_auth_checked', '');
}
return tpl.finalize(); return tpl.finalize();
} }
@ -601,6 +636,14 @@ App.HTML.Build.web_domain_selects = function(tpl, options)
var obj = App.Env.initialParams.WEB_DOMAIN.TPL; var obj = App.Env.initialParams.WEB_DOMAIN.TPL;
var opts = App.HTML.Build.options(obj, options.TPL); var opts = App.HTML.Build.options(obj, options.TPL);
tpl.set(':TPL_OPTIONS', opts); tpl.set(':TPL_OPTIONS', opts);
// TPL
var obj = App.Env.initialParams.WEB_DOMAIN.STAT;
var opts = App.HTML.Build.options(obj, options.STAT);
tpl.set(':STAT_OPTIONS', opts);
//<input type="checkbox" name="STATS" ~!:stats_checked~!="" value="~!:STATS~!" class="not-styled">\
} }
catch (e) { catch (e) {
return tpl; return tpl;

View file

@ -35,7 +35,8 @@ App.Templates.html = {
SUSPENDED_TPL_SUSPENDED : ['<span class="ip-status-info ip-suspended-status do_action_unsuspend"><span class="ip-status-text do_action_unsuspend">suspended</span></span>'] SUSPENDED_TPL_SUSPENDED : ['<span class="ip-status-info ip-suspended-status do_action_unsuspend"><span class="ip-status-text do_action_unsuspend">suspended</span></span>']
}, },
popup: { popup: {
error: ['<div class="error"><center><h1 style="color: red;">Important: An Error Has Occured.</h1><hr></center>&nbsp;&nbsp;&nbsp;&nbsp;Something went wrong and some of your actions can be not saved in system. Mostly, it happens when you have network connection errors.<br>,&nbsp;&nbsp;&nbsp;&nbsp;However, please notify us about the situation. It would be helpfull if you will write us approximate time the error occured and last actions you were performing. You send your petition on <a href="mail_to">this email: BLABLA</a>,<br><br><center><span style="color: rgb(92, 92, 92);">Sorry for inconvinience. (We recommend you to reload the page)</span></center></div>'] error: ['<div class="error"><center><h1 style="color: red;">Important: An Error Has Occured.</h1><hr></center>&nbsp;&nbsp;&nbsp;&nbsp;Something went wrong and some of your actions can be not saved in system. Mostly, it happens when you have network connection errors.<br>,&nbsp;&nbsp;&nbsp;&nbsp;However, please notify us about the situation. It would be helpfull if you will write us approximate time the error occured and last actions you were performing. You send your petition on <a href="mail_to">this email: BLABLA</a>,<br><br><center><span style="color: rgb(92, 92, 92);">Sorry for inconvinience. (We recommend you to reload the page)</span></center></div>'],
login: ['<div class="error" id="authorize-form"><center><h1 style="color: red;">Please authorize.</h1><hr><div id="auth-error" style="color:red"></div>Login: <input type="text" id="authorize-login" / ><br/>Password: <input type="password" id="authorize-password"/><br /><button class="do_action_do_authorize">Log in</button></center></center></div>']
}, },
dates: { dates: {
'lock_plan_date' : ['<button class="do.savePlanDate(~!:task_id~!)">Lock plan dates</button><button class="do.lockPlanDate(~!:task_id~!)">Lock plan dates</button>'], 'lock_plan_date' : ['<button class="do.savePlanDate(~!:task_id~!)">Lock plan dates</button><button class="do.lockPlanDate(~!:task_id~!)">Lock plan dates</button>'],
@ -511,13 +512,11 @@ App.Templates.html = {
</select>\ </select>\
</div>\ </div>\
</div>\ </div>\
<div class="form-row cc">\ <div class="form-row cc adv_opts">\
<label for="#" class="field-label">CGI:</label>\ <label for="#" class="field-label">template:</label>\
<input type="checkbox" value="~!:CGI~!" ~!:CHECKED_CGI~! name="CGI" class="not-styled">\ <select class="not-styled" name="TPL">\
</div>\ ~!:TPL_OPTIONS~!\
<div class="form-row cc">\ </select>\
<label for="#" class="field-label">ELOG:</label>\
<input type="checkbox" value="~!:ELOG~!" ~!:CHECKED_ELOG~! name="ELOG" class="not-styled">\
</div>\ </div>\
<!-- advanced options -->\ <!-- advanced options -->\
<div class="form-options-group">\ <div class="form-options-group">\
@ -527,30 +526,32 @@ App.Templates.html = {
</span> \ </span> \
</div>\ </div>\
<div class="sub_section hidden">\ <div class="sub_section hidden">\
<div class="form-row cc adv_opts">\
<label for="#" class="field-label">template:</label>\
<select class="not-styled" name="TPL">\
~!:TPL_OPTIONS~!\
</select>\
</div>\
<div class="form-row cc">\ <div class="form-row cc">\
<label for="#" class="field-label">CGI:</label>\
<input type="checkbox" value="~!:CGI~!" ~!:CHECKED_CGI~! name="CGI" class="not-styled">\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">ELOG:</label>\
<input type="checkbox" value="~!:ELOG~!" ~!:CHECKED_ELOG~! name="ELOG" class="not-styled">\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">alias list:</label>\ <label for="#" class="field-label">alias list:</label>\
<textarea name="ALIAS" class="textarea">~!:ALIAS~!</textarea>\ <textarea name="ALIAS" class="textarea">~!:ALIAS~!</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>\
<input type="checkbox" name="STATS" ~!:stats_checked~!="" value="~!:STATS~!" class="not-styled">\ <select name="STAT">~!:STAT_OPTIONS~!</select>\
</div>\ </div>\
<div class="stats-settings">\ <div class="stats-settings">\
<div class="form-row cc">\ <div class="form-row cc">\
<label for="#" class="field-label">stats auth:</label>\ <label for="#" class="field-label">stats auth:</label>\
<input id="stats-auth-enable" type="checkbox" name="STATS_AUTH" ~!:stats_auth_checked~!="" value="~!:STATS_AUTH~!" class="not-styled">\ <input id="stats-auth-enable" type="checkbox" name="STATS_AUTH" ~!:stats_auth_checked~!="" value="~!:STATS_AUTH~!" class="not-styled do_action_toggle_stats_block">\
</div>\ </div>\
<div class="form-row cc">\ <div class="form-row stats-block ~!:ACTIVE_LOGIN~! cc">\
<label for="#" class="field-label">stats login:</label>\ <label for="#" class="field-label">stats login:</label>\
<input type="text" class="text-field rule-statslogin" name="STATS_LOGIN" value="~!:STATS_LOGIN~!">\ <input type="text" class="text-field rule-statslogin" name="STATS_LOGIN" value="~!:STATS_LOGIN~!">\
</div>\ </div>\
<div class="form-row pwd-box cc">\ <div class="form-row pwd-box ~!:ACTIVE_PASSWORD~! stats-block cc">\
<label for="#" class="field-label">password:</label>\ <label for="#" class="field-label">password:</label>\
<input type="text" value="~!:STATS_PASSWORD~!" name="STATS_PASSWORD" class="text-field rule-statspassword password">\ <input type="text" value="~!:STATS_PASSWORD~!" name="STATS_PASSWORD" class="text-field rule-statspassword password">\
<span class="generate-pwd do_action_generate_pass">Generate</span>\ <span class="generate-pwd do_action_generate_pass">Generate</span>\
@ -576,7 +577,7 @@ App.Templates.html = {
</div>\ </div>\
</div><!-- // advanced options -->\ </div><!-- // advanced options -->\
</div>\ </div>\
<div class="form-options-group">\ <div class="form-options-group hidden">\
<div class="group-header cc collapsed">\ <div class="group-header cc collapsed">\
<span class="group-title-outer do_action_toggle_section">\ <span class="group-title-outer do_action_toggle_section">\
<span class="group-title do_action_toggle_section">DNS options</span>\ <span class="group-title do_action_toggle_section">DNS options</span>\
@ -588,7 +589,7 @@ App.Templates.html = {
<input type="checkbox" value="~!:DNS~!" ~!:CHECKED_DNS~! name="DNS" class="not-styled">\ <input type="checkbox" value="~!:DNS~!" ~!:CHECKED_DNS~! name="DNS" class="not-styled">\
</div>\ </div>\
</div><!-- DNS options -->\ </div><!-- DNS options -->\
<div class="form-options-group">\ <div class="form-options-group hidden">\
<div class="group-header cc collapsed">\ <div class="group-header cc collapsed">\
<span class="group-title-outer do_action_toggle_section">\ <span class="group-title-outer do_action_toggle_section">\
<span class="group-title do_action_toggle_section">Mail options</span>\ <span class="group-title do_action_toggle_section">Mail options</span>\
@ -678,7 +679,7 @@ App.Templates.html = {
</span>\ </span>\
<span class="prop-box stats-box">\ <span class="prop-box stats-box">\
<span class="prop-title">stats:</span>\ <span class="prop-title">stats:</span>\
<span class="prop-value">~!:STATS~!</span>\ <span class="prop-value">~!:STAT~!</span>\
<span class="stats-auth stats-auth-on">\ <span class="stats-auth stats-auth-on">\
<span class="stats-auth-text">~!:STATS_AUTH~!</span>\ <span class="stats-auth-text">~!:STATS_AUTH~!</span>\
</span>\ </span>\

View file

@ -30,7 +30,7 @@ App.Validate.Rule = {
if ($(elm).val().trim() == '' || $(elm).val().search(/[^a-zA-Z_]+/) != -1) { if ($(elm).val().trim() == '' || $(elm).val().search(/[^a-zA-Z_]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is invalid'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is invalid'};
} }
if ($(elm).val().trim() != '' || $(elm).val().length > App.Settings.FIELD_MAX_LEN) { if ($(elm).val().trim() != '' && $(elm).val().length > App.Settings.FIELD_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'};
} }
} }
@ -41,7 +41,7 @@ App.Validate.Rule = {
if ($(elm).val().trim() == '') { if ($(elm).val().trim() == '') {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is required'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is required'};
} }
if ($(elm).val().trim() != '' || $(elm).val().length > App.Settings.FIELD_MAX_LEN) { if ($(elm).val().trim() != '' && $(elm).val().length > App.Settings.FIELD_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'};
} }
} }
@ -51,7 +51,7 @@ App.Validate.Rule = {
if ($(elm).val().trim() != '' && $(elm).val().search(/[^a-zA-Z_]+/) != -1) { if ($(elm).val().trim() != '' && $(elm).val().search(/[^a-zA-Z_]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is invalid'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is invalid'};
} }
if ($(elm).val().trim() != '' || $(elm).val().length > App.Settings.FIELD_MAX_LEN) { if ($(elm).val().trim() != '' && $(elm).val().length > App.Settings.FIELD_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'};
} }
return {VALID: true}; return {VALID: true};
@ -78,7 +78,7 @@ App.Validate.Rule = {
if ($(elm).val().trim() != '' && $(elm).val().search(/[^a-zA-Z]+/) != -1) { if ($(elm).val().trim() != '' && $(elm).val().search(/[^a-zA-Z]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' must contain only letters without spaces or other symbols'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' must contain only letters without spaces or other symbols'};
} }
if ($(elm).val().trim() != '' || $(elm).val().length > App.Settings.FIELD_MAX_LEN) { if ($(elm).val().trim() != '' && $(elm).val().length > App.Settings.FIELD_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'};
} }
return {VALID: true}; return {VALID: true};
@ -87,7 +87,7 @@ App.Validate.Rule = {
if ($(elm).val().search(/^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/) == -1) { if ($(elm).val().search(/^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/) == -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' not a valid email'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' not a valid email'};
} }
if ($(elm).val().trim() == '' || $(elm).val().length > App.Settings.FIELD_MAX_LEN) { if ($(elm).val().trim() == '' && $(elm).val().length > App.Settings.FIELD_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'};
} }
return {VALID: true}; return {VALID: true};
@ -109,7 +109,7 @@ App.Validate.Rule = {
if ($(elm).val().trim() != '' && (/^([a-z0-9\.])*[a-z0-9][a-z0-9\-]+[a-z0-9](\.[a-z]{2,4})+$/).test($(elm).val()) == false) { if ($(elm).val().trim() != '' && (/^([a-z0-9\.])*[a-z0-9][a-z0-9\-]+[a-z0-9](\.[a-z]{2,4})+$/).test($(elm).val()) == false) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' not a valid NS name'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' not a valid NS name'};
} }
if ($(elm).val().trim() == '' || $(elm).val().length > App.Settings.FIELD_MAX_LEN) { if ($(elm).val().trim() == '' && $(elm).val().length > App.Settings.FIELD_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'};
} }
return {VALID: true}; return {VALID: true};
@ -118,7 +118,7 @@ App.Validate.Rule = {
if ($(elm).val().trim() != '' && $(elm).val().search(/[^0-9\/\*-,]+/) != -1) { if ($(elm).val().trim() != '' && $(elm).val().search(/[^0-9\/\*-,]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' wrong minute value'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' wrong minute value'};
} }
if ($(elm).val().trim() == '' || $(elm).val().length > App.Settings.MINUTE_MAX_LEN) { if ($(elm).val().trim() == '' && $(elm).val().length > App.Settings.MINUTE_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' invalid'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' invalid'};
} }
return {VALID: true}; return {VALID: true};
@ -130,7 +130,7 @@ App.Validate.Rule = {
if ($(elm).val().trim() != '' && $(elm).val().search(/[^0-9\/\*-,]+/) != -1) { if ($(elm).val().trim() != '' && $(elm).val().search(/[^0-9\/\*-,]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' wrong hour value'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' wrong hour value'};
} }
if ($(elm).val().trim() == '' || $(elm).val().length > App.Settings.HOURS_MAX_LEN) { if ($(elm).val().trim() == '' && $(elm).val().length > App.Settings.HOURS_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' invalid'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' invalid'};
} }
return {VALID: true}; return {VALID: true};
@ -142,7 +142,7 @@ App.Validate.Rule = {
if ($(elm).val().trim() != '' && $(elm).val().search(/[^123456\/\*-,]+/) != -1) { if ($(elm).val().trim() != '' && $(elm).val().search(/[^123456\/\*-,]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' wrong week day value'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' wrong week day value'};
} }
if ($(elm).val().trim() == '' || $(elm).val().length > App.Settings.WDAY_MAX_LEN) { if ($(elm).val().trim() == '' && $(elm).val().length > App.Settings.WDAY_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' invalid'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' invalid'};
} }
return {VALID: true}; return {VALID: true};
@ -154,7 +154,7 @@ App.Validate.Rule = {
if ($(elm).val().trim() != '' && $(elm).val().search(/[^0-9\/\*-,]+/) != -1) { if ($(elm).val().trim() != '' && $(elm).val().search(/[^0-9\/\*-,]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' wrong month value'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' wrong month value'};
} }
if ($(elm).val().trim() == '' || $(elm).val().length > App.Settings.MONTH_MAX_LEN) { if ($(elm).val().trim() == '' && $(elm).val().length > App.Settings.MONTH_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' invalid'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' invalid'};
} }
return {VALID: true}; return {VALID: true};
@ -166,7 +166,7 @@ App.Validate.Rule = {
if ($(elm).val().trim() != '' && $(elm).val().search(/[^0-9\/\*-,]+/) != -1) { if ($(elm).val().trim() != '' && $(elm).val().search(/[^0-9\/\*-,]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' wrong day value'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' wrong day value'};
} }
if ($(elm).val().trim() == '' || $(elm).val().length > App.Settings.DAY_MAX_LEN) { if ($(elm).val().trim() == '' && $(elm).val().length > App.Settings.DAY_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' invalid'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' invalid'};
} }
return {VALID: true}; return {VALID: true};

View file

@ -42,13 +42,14 @@ class AjaxHandler {
public function dispatch(Request $request) public function dispatch(Request $request)
{ {
$method = Request::parseAjaxMethod($request); $method = Request::parseAjaxMethod($request);
if (!in_array($method['namespace'].'.'.$method['function'], array('MAIN.signin', 'MAIN.logout'))) {
$user = $this->getLoggedUser();
}
$inc_file = V_ROOT_DIR . 'api' . DIRECTORY_SEPARATOR . $method['namespace'] . '.class.php'; $inc_file = V_ROOT_DIR . 'api' . DIRECTORY_SEPARATOR . $method['namespace'] . '.class.php';
if (!is_readable($inc_file)) { if (!is_readable($inc_file)) {
throw new SystemException(Message::INVALID_METHOD); throw new SystemException(Message::INVALID_METHOD);
} }
// return $this->reply('NOT_AUTHORISED');
require $inc_file; require $inc_file;
$space = new $method['namespace']; $space = new $method['namespace'];

View file

@ -17,6 +17,8 @@
class MAIN extends AjaxHandler class MAIN extends AjaxHandler
{ {
protected $templates = null;
/** /**
* Get Version * Get Version
* *
@ -34,6 +36,20 @@ class MAIN extends AjaxHandler
return $this->reply(true, $result); return $this->reply(true, $result);
} }
public function signinExecute($request)
{
$login = $request->getParameter('login');
$password = $request->getParameter('password');
$result = Vesta::execute('v_check_sys_user_password', array('USER' => $login, 'PASSWORD' => $password));
if ($result['status'] == true) {
return $this->reply(VestaSession::authorize($login));
}
else {
return $this->reply(false, 'Incorrect login / password');
}
}
/** /**
* Get Initial params. * Get Initial params.
* Global constants / variables / configs * Global constants / variables / configs
@ -43,26 +59,6 @@ class MAIN extends AjaxHandler
*/ */
public function getInitialExecute(Request $request) public function getInitialExecute(Request $request)
{ {
/*require_once V_ROOT_DIR . 'api/IP.class.php';
require_once V_ROOT_DIR . 'api/USER.class.php';
// IP
$ip_obj = new IP();
$user_ips = json_decode($ip_obj->getListUserIpsExecute($request), TRUE);
foreach ($user_ips['data'] as $ip) {
$ips[$ip['IP_ADDRESS']] = $ip['IP_ADDRESS'];
}
// USER
$user_obj = new USER();
$users = json_decode($user_obj->getListExecute($request), TRUE);
$user_names = array_keys($users['data']);
$interfaces_arr = json_decode($ip_obj->getSysInterfacesExecute($request), TRUE);
$interfaces = $interfaces_arr['data'];
$data_web_domain = array('ips' => $ips);
$data_ip = array('user_names' => $user_names, 'interfaces' => $interfaces);
$data_dns = array('ips' => $ips);
$data_db = array('db_types' => $this->getDBTypes());
$data_users = array('user_names' => $user_names);*/
$user = VestaSession::getInstance()->getUser(); $user = VestaSession::getInstance()->getUser();
$global_data = array(); $global_data = array();
$totals = array( $totals = array(
@ -135,6 +131,25 @@ class MAIN extends AjaxHandler
return $this->reply(true, $reply); return $this->reply(true, $reply);
} }
protected function getTemplates()
{
if (null != $this->templates) {
return $this->templates;
}
else {
$user = $this->getLoggedUser();
$this->templates = array();
//v_list_web_templates vesta json
$result = Vesta::execute('v_list_web_templates', array('USER' => $user['uid']), self::JSON);
// TODO: handle errors!
foreach ($result['data'] as $tpl => $description) {
$this->templates[$tpl] = $tpl;
}
return $this->templates;
}
}
/** /**
* WEB DOMAIN initial params * WEB DOMAIN initial params
@ -146,7 +161,6 @@ class MAIN extends AjaxHandler
{ {
$user = $this->getLoggedUser(); $user = $this->getLoggedUser();
$ips = array(); $ips = array();
//v_list_sys_user_ips vesta
$result = Vesta::execute(Vesta::V_LIST_SYS_USER_IPS, array('USER' => $user['uid']), self::JSON); $result = Vesta::execute(Vesta::V_LIST_SYS_USER_IPS, array('USER' => $user['uid']), self::JSON);
foreach ($result['data'] as $sys_ip => $ip_data) { foreach ($result['data'] as $sys_ip => $ip_data) {
$ips[$sys_ip] = $sys_ip; $ips[$sys_ip] = $sys_ip;
@ -157,11 +171,12 @@ class MAIN extends AjaxHandler
} }
return array( return array(
'TPL' => array('default' => 'default'), 'TPL' => $this->getTemplates(),
'ALIAS' => array(), 'ALIAS' => array(),
'STAT' => array( 'STAT' => array(
'none' => 'none',
'webalizer' => 'webalizer', 'webalizer' => 'webalizer',
'awstats' => 'awstats' 'awstats' => 'awstats'
), ),
'IP' => $ips 'IP' => $ips
); );
@ -224,7 +239,7 @@ class MAIN extends AjaxHandler
{ {
return array( return array(
'IP' => @$data['ips'], 'IP' => @$data['ips'],
'TPL' => array('default' => 'default'), 'TPL' => $this->getTemplates(),
'EXP' => array(), 'EXP' => array(),
'SOA' => array(), 'SOA' => array(),
'TTL' => array(), 'TTL' => array(),

View file

@ -17,10 +17,15 @@ class WEB_DOMAIN extends AjaxHandler
$result = Vesta::execute(Vesta::V_LIST_WEB_DOMAINS, array('USER' => $user['uid']), self::JSON); $result = Vesta::execute(Vesta::V_LIST_WEB_DOMAINS, array('USER' => $user['uid']), self::JSON);
$stat = array();
$result_stat = Vesta::execute('v_list_web_domains_stats', array('USER' => $user['uid']), self::JSON);
foreach ($result_stat['data'] as $w_d => $w_d_details) {
$stat[$w_d] = $w_d_details;
}
foreach($result['data'] as $web_domain => $record) foreach($result['data'] as $web_domain => $record)
{ {
//print '<pre>';var_dump($record);die(); $web_details = array(
$reply[$web_domain] = array(
'IP' => $record['IP'], 'IP' => $record['IP'],
'U_DISK' => $record['U_DISK'], 'U_DISK' => $record['U_DISK'],
'U_BANDWIDTH' => $record['U_BANDWIDTH'], 'U_BANDWIDTH' => $record['U_BANDWIDTH'],
@ -29,8 +34,8 @@ class WEB_DOMAIN extends AjaxHandler
'PHP' => $record['PHP'], 'PHP' => $record['PHP'],
'CGI' => $record['CGI'], 'CGI' => $record['CGI'],
'ELOG' => $record['ELOG'], 'ELOG' => $record['ELOG'],
'STATS' => $record['STATS'], 'STAT' => $record['STATS'],
'STATS_AUTH' => $record['STATS_AUTH'], 'STATS_LOGIN' => $record['STATS_AUTH'],
'SSL' => $record['SSL'], 'SSL' => $record['SSL'],
'SSL_HOME' => $record['SSL_HOME'], 'SSL_HOME' => $record['SSL_HOME'],
'SSL_CERT' => $record['SSL_CERT'], 'SSL_CERT' => $record['SSL_CERT'],
@ -39,6 +44,8 @@ class WEB_DOMAIN extends AjaxHandler
'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'])))
); );
$web_details['STAT'] == '' ? $web_details['STAT'] = 'none' : true;
$reply[$web_domain] = $web_details;
} }
if (!$result['status']) { if (!$result['status']) {
@ -101,11 +108,11 @@ class WEB_DOMAIN extends AjaxHandler
} }
} }
if (!empty($_s['STATS'])) { if (!empty($_s['STATS']) && @$_s['STATS'] != 'none') {
$params = array( $params = array(
'USER' => $user['uid'], 'USER' => $user['uid'],
'DOMAIN' => $_s['DOMAIN'], 'DOMAIN' => $_s['DOMAIN'],
'STAT' => $_s['STATS'] == 'off' ? false : true); 'STAT' => $_s['STAT']);
$result = 0; $result = 0;
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, $params); $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, $params);
@ -114,7 +121,7 @@ class WEB_DOMAIN extends AjaxHandler
} }
} }
if (!empty($_s['STAT_AUTH'])) { if (!empty($_s['STAT_AUTH']) && @Utils::getCheckboxBooleanValue($_s['STATS_AUTH'])) {
$params = array( $params = array(
'USER' => $user['uid'], 'USER' => $user['uid'],
'DOMAIN' => $_s['DOMAIN'], 'DOMAIN' => $_s['DOMAIN'],
@ -128,7 +135,29 @@ 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 ($_s['SSL']) { if (!empty($_new['CGI'])) {
if (Utils::getCheckboxBooleanValue($_new['CGI'])) {
$result = array();
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_CGI, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['ADD_CGI'] = array($result['error_code'] => $result['error_message']);
}
}
}
if (!empty($_new['ELOG'])) {
if (Utils::getCheckboxBooleanValue($_new['ELOG'])) {
$result = array();
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ELOG, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['ADD_ELOG'] = array($result['error_code'] => $result['error_message']);
}
}
}
/*if ($_s['SSL']) {
$params = array( $params = array(
'USER' => $user[''], 'USER' => $user[''],
'DOMAIN' => $_s['DOMAIN'], 'DOMAIN' => $_s['DOMAIN'],
@ -139,10 +168,6 @@ class WEB_DOMAIN extends AjaxHandler
$params['SSL_HOME'] = $_s['SSL_HOME']; $params['SSL_HOME'] = $_s['SSL_HOME'];
} }
if ($_s['SSL_TEXT']) {
// TODO: implement
}
$result = 0; $result = 0;
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params); $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params);
@ -150,7 +175,9 @@ class WEB_DOMAIN extends AjaxHandler
$this->errors['SSL'] = array($result['error_code'] => $result['error_message']); $this->errors['SSL'] = array($result['error_code'] => $result['error_message']);
} }
} }
*/ if ($_s['SSL_HOME']) {
}*/
/*if (!empty($_s['DNS'])) { /*if (!empty($_s['DNS'])) {
$params = array( $params = array(
@ -221,6 +248,11 @@ class WEB_DOMAIN extends AjaxHandler
$_old = $request->getParameter('old'); $_old = $request->getParameter('old');
$_new = $request->getParameter('new'); $_new = $request->getParameter('new');
$_old['ELOG'] = $_old['ELOG'] == 'yes' ? 'on' : 'off';
$_old['CGI'] = $_old['CGI'] == 'yes' ? 'on' : 'off';
$_old['AUTH'] = $_old['AUTH'] == 'yes' ? 'on' : 'off';
$_old['SSL'] = $_old['SSL'] == 'yes' ? 'on' : 'off';
$user = $this->getLoggedUser(); $user = $this->getLoggedUser();
$_DOMAIN = $_new['DOMAIN']; $_DOMAIN = $_new['DOMAIN'];
@ -269,17 +301,31 @@ class WEB_DOMAIN extends AjaxHandler
} }
if (!empty($_new['STAT'])) { if (($_old['STATH_AUTH'] != $_new['STAT_AUTH']) && !empty($_s['STAT_AUTH']) && @Utils::getCheckboxBooleanValue($_s['STATS_AUTH'])) {
if ($_new['STAT'] == true) { $params = array(
'USER' => $user['uid'],
'DOMAIN' => $_DOMAIN,
'STAT_USER' => $_new['STAT_USER'],
'STAT_PASSWORS' => $_new['STAT_PASSWORD']
);
$result = 0;
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT_AUTH, $params);
if(!$result['status']) {
$this->errors['STAT_AUTH'] = array($result['error_code'] => $result['error_message']);
}
}
if (($_old['STAT'] != $_new['STAT'])) {
if ($_new['STAT'] != 'none') {
$result = array(); $result = array();
$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN, 'STAT' => ($_new['STAT'] == 'off' ? false : true))); $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN, 'STAT' => $_new['STAT']));
if (!$result['status']) { if (!$result['status']) {
$this->status = FALSE; $this->status = FALSE;
$this->errors['ADD_STAT'] = array($result['error_code'] => $result['error_message']); $this->errors['ADD_STAT'] = array($result['error_code'] => $result['error_message']);
} }
} }
else {
if ($_new['STAT'] == 'off') {
$result = array(); $result = array();
$result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
if (!$result['status']) { if (!$result['status']) {
@ -296,8 +342,8 @@ class WEB_DOMAIN extends AjaxHandler
} }
} }
if ($_old['CGI'] != $_new['CGI']) { if (($_old['CGI'] != $_new['CGI'])) {
if ($_new['CGI'] == true) { if (Utils::getCheckboxBooleanValue($_new['CGI'])) {
$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' => $_DOMAIN));
if (!$result['status']) { if (!$result['status']) {
@ -305,8 +351,7 @@ class WEB_DOMAIN extends AjaxHandler
$this->errors['ADD_CGI'] = array($result['error_code'] => $result['error_message']); $this->errors['ADD_CGI'] = array($result['error_code'] => $result['error_message']);
} }
} }
else {
if ($_new['CGI'] == false) {
$result = array(); $result = array();
$result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_CGI, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_CGI, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
if (!$result['status']) { if (!$result['status']) {
@ -316,8 +361,8 @@ class WEB_DOMAIN extends AjaxHandler
} }
} }
if ($_old['ELOG'] != $_new['ELOG']) { if (($_old['ELOG'] != $_new['ELOG'])) {
if ($_new['ELOG'] == true) { if (Utils::getCheckboxBooleanValue($_new['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' => $_DOMAIN));
if (!$result['status']) { if (!$result['status']) {
@ -325,8 +370,7 @@ class WEB_DOMAIN extends AjaxHandler
$this->errors['ADD_ELOG'] = array($result['error_code'] => $result['error_message']); $this->errors['ADD_ELOG'] = array($result['error_code'] => $result['error_message']);
} }
} }
else {
if ($_new['ELOG'] == false) {
$result = array(); $result = array();
$result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ELOG, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ELOG, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
if (!$result['status']) { if (!$result['status']) {

View file

@ -12,6 +12,8 @@ require_once V_ROOT_DIR . 'core/utils/Message.class.php';
require_once V_ROOT_DIR . 'core/Request.class.php'; require_once V_ROOT_DIR . 'core/Request.class.php';
require_once V_ROOT_DIR . 'api/AjaxHandler.php'; require_once V_ROOT_DIR . 'api/AjaxHandler.php';
VestaSession::start();
/** /**
* App execution * App execution
* *

View file

@ -5,9 +5,9 @@ class VestaSession
static public $instance = null; static public $instance = null;
public function __construct() static function start()
{ {
//session_start(); session_start();
} }
/** /**
@ -20,10 +20,21 @@ class VestaSession
return null == self::$instance ? self::$instance = new self() : self::$instance; return null == self::$instance ? self::$instance = new self() : self::$instance;
} }
static function authorize($username)
{
$_SESSION['user'] = $username;
return true;
}
public function getUser() public function getUser()
{ {
//var_dump($_SESSION);die(); //var_dump($_SESSION);die();
return array('uid' => 'vesta'); if (isset($_SESSION['user'])) {
return array('uid' => $_SESSION['user']);
}
print '{"result": "NOT_AUTHORISED"}';
exit;
} }
} }