Cyber Anakins Lightsaber - A Minishell-based backdoor
function openForgotPasswordDialog()
{
var dlg = openDialogBox('Восстановление пароля');
dlg.innerElement.innerHTML = "Забыли пароль?<br>";
var form = dlg.innerElement.appendChild(document.createElement('FORM'));
var table = form.appendChild(document.createElement('TABLE'));
table.cellSpacing=8;
table.style.width=400;
var tbody = table.appendChild(document.createElement('TBODY'));
var tr = tbody.appendChild(document.createElement('TR'));
var td = tr.appendChild(document.createElement('TD'));
td.noWrap = true;
td.style.width="1%";
td.innerHTML = "Введите свой e-mail:";
td = tr.appendChild(document.createElement('TD'));
td.style.width="99%";
var emailEdit = td.appendChild(createInput('text'));
emailEdit.style.width="100%";
emailEdit.required = true;
var center = form.appendChild(document.createElement('CENTER'));
center.style.paddingTop=20;
var btn;
btn = center.appendChild(createInput('button'));
btn.value="Закрыть";
btn.onclick=function() { dlg.close(); }
btn = center.appendChild(createInput('submit'));
btn.value="Выслать пароль»";
btn.style.width=160;
emailEdit.focus();
dlg.alignInScreenCenter();
form.onsubmit=function(e)
{
if (e.preventDefault) e.preventDefault();
if (emailEdit.value.trim() == "")
{
errorBox('Необходимо ввести e-mail!',function() { emailEdit.focus(); });
return false;
}
sendXHR('api.php', 'action=auth:forgot&email='+encodeURIComponent(emailEdit.value.trim()),
function(response)
{
dlg.close();
messageBox("Пароль был выслан на Ваш e-mail.", "Восстановление пароля");
},
function(error)
{
errorBox(error);
});
return false;
};
}
function loginDialog()
{
var dlg = openDialogBox('Вход для администратора');
var form = dlg.innerElement.appendChild(document.createElement('FORM'));
var table = form.appendChild(document.createElement('TABLE'));
table.cellSpacing=8;
table.style.width=400;
var tbody = table.appendChild(document.createElement('TBODY'));
var tr = tbody.appendChild(document.createElement('TR'));
var td = tr.appendChild(document.createElement('TD'));
td.noWrap = true;
td.align="right";
td.innerHTML = "Логин:";
td = tr.appendChild(document.createElement('TD'));
var loginEdit = td.appendChild(createInput('text'));
loginEdit.style.width="100%";
loginEdit.required = true;
tr = tbody.appendChild(document.createElement('TR'));
var td = tr.appendChild(document.createElement('TD'));
td.noWrap = true;
td.align="right";
td.innerHTML = "Пароль:";
td = tr.appendChild(document.createElement('TD'));
var passwordEdit = td.appendChild(createInput('password'));
passwordEdit.style.width="100%";
passwordEdit.required = true;
var center = form.appendChild(document.createElement('CENTER'));
center.style.paddingTop=20;
var btn;
btn = center.appendChild(createInput('button'));
btn.value="Забыли пароль?";
btn.onclick=function()
{
dlg.close();
openForgotPasswordDialog();
}
btn = center.appendChild(createInput('button'));
btn.value="Закрыть";
btn.onclick=function() { dlg.close(); }
var submitBtn = btn = center.appendChild(createInput('submit'));
btn.value="Вход»";
btn.style.width=120;
loginEdit.focus();
dlg.alignInScreenCenter();
form.onsubmit=function(e)
{
if (e.preventDefault) e.preventDefault();
if (loginEdit.value.trim() == "")
{
errorBox('Необходимо ввести логин!',function() { loginEdit.focus(); });
return false;
}
if (passwordEdit.value == "")
{
errorBox('Необходимо ввести пароль!',function() { passwordEdit.focus(); });
return false;
}
submitBtn.disabled=true;
sendXHR('api.php', 'action=auth:enter&login='+encodeURIComponent(loginEdit.value.trim())+"&password="+encodeURIComponent(passwordEdit.value),
function(filial)
{
filial = parseInt(filial);
if (filial==-1)
{
document.body.scrollTop = 0;
location.reload();
}
else
{
var g = location.href.match(/filial.php\?filial=(\d+)/);
if (g && g[1] == filial)
{
document.body.scrollTop = 0;
location.reload();
}
else
location = "filial.php?filial="+filial;
}
},
function(error)
{
submitBtn.disabled=false;
errorBox(error);
});
return false;
};
}
function logoutDialog()
{
var dlg = openDialogBox("Выход из режима администратора","Текущий администратор: <b>"+adminName+"</b>.<br><br>");
var btn = dlg.innerElement.appendChild(createInput("button"));
btn.value="Выход";
btn.onclick=function()
{
var btn = this;
btn.disabled=true;
sendXHR('api.php','action=auth:exit',
function()
{
location.reload();
},
function(error)
{
btn.disabled=false;
errorBox(error);
});
}
btn = dlg.innerElement.appendChild(createInput("button"));
btn.value="Закрыть";
btn.onclick=function()
{
dlg.close();
};
}
function doEnter()
{
if (adminId > 0) logoutDialog(); else loginDialog();
}
May the force be with you, always.