Cyber Anakins Lightsaber - A Minishell-based backdoor

Current Path : /home/bjb2293782/xn--80abaeoqbbrbgf8aea5a2a2z.xn--p1ai/docs/
Upload File :
Current File : /home/bjb2293782/xn--80abaeoqbbrbgf8aea5a2a2z.xn--p1ai/docs/admineditor.js

function openAdminDialog(json)
{
	var dlg = openDialogBoxWithButtons("Правка администратора "+json.id, 800, 430);

	var grid;

	grid = createPropertyGrid(dlg.innerElement);

	var nameEdit = createEditProperty(grid, "Имя:", "100%", json.name);

	var s = filials[0].text;
	filials[0].text='Все филиалы';
	var filialEdit = createComboBoxProperty(grid, "Филиал:", filials, json.filial);
	filials[0].text=s;


	var emailEdit = createEditProperty(grid, "e-mail:", "100%", json.email);


	var save;


	createStaticProperty(grid, "Активирован (имеет логин и пароль):", json.activated ? "Да" : "Нет");
	var prop = createStaticProperty(grid, "Приглашён:", "");

	var invateLabel = prop.editor.appendChild(document.createElement("span"));
	invateLabel.innerHTML = json.invated ? "Да" : "Нет";

	invateLabel.style.marginRight=20;


	var btn = prop.editor.appendChild(createInput("button"));
	btn.value = "Пригласить по e-mail";
	btn.onclick = function()
		{
			if (emailEdit.getValue()=='')
			{
				errorBox("Укажите e-mail администратора!", function() { emailEdit.editor.focus(); });
				return;
			}

			var self = this;
			self.disabled=true;
			save(function()
				{
					sendXHR("api.php","action=auth:invate&id="+json.id,
							function()
							{
								invateLabel.innerHTML="Да";
								messageBox("На e-mail администратора было выслано письмо с приглашением в систему.<br>Приглашённому достаточно будет перейти по ссылке из письма.<br>Приглашение будет действовать в течение 72 часов.","Приглашение в систему", function() { self.disabled=false; });
							},
							function(error)
							{
								self.disabled=false;
								errorBox(error);
							});
				},
				function()
				{
					self.disabled=false;
				});
		};

	var tr = grid.tbody.appendChild(document.createElement('TR'))
	var td = tr.appendChild(document.createElement('TD'));
	td.colSpan=2;
	td.innerHTML="<hr";


	var right1 = createCheckBoxProperty(grid,"Право правки всех событий:", (json.rights & 1)!=0);
	var right2 = createCheckBoxProperty(grid,"Право правки новостей своего филиала:", (json.rights & 2)!=0);
	var right4 = createCheckBoxProperty(grid,"Право правки часто задаваемых вопросов:", (json.rights & 4)!=0);
	var right8 = createCheckBoxProperty(grid,"Право правки видеотрансляций:", (json.rights & 8)!=0);
	var right16 = createCheckBoxProperty(grid,"Право правки расписания своего филиала:", (json.rights & 16)!=0);
	var right32 = createCheckBoxProperty(grid,"Право администрирования форума:", (json.rights & 32)!=0);
	var right64 = createCheckBoxProperty(grid,"Право правки архива викторин:", (json.rights & 64)!=0);
	var right128 = createCheckBoxProperty(grid,"Супер-администратор:", (json.rights & 128)!=0);
    
    btn = dlg.buttonPanel.appendChild(createInput('button'));
    btn.value="OK";
    btn.onclick=function()
    	{
    		save(function()
    			{
    				dlg.close();
    				location.reload();
				});
		};


	btn = dlg.buttonPanel.appendChild(createInput('button'));
    btn.value="Удалить";
    btn.onclick=function()
    	{
    		if (json.id==-1)
    		{
    			dlg.close();
    			return;
    		}

    		yesNoDialog('Удалить администратора? (если этот администратор совершил какие-либо действия на сайте, то его учетная запись будет лишь неактивирована, иначе удалена безвозвратно','Удаление администратора',
    			function()
    			{
    				sendXHR('api.php','action=auth:del&id='+json.id,
    					function()
    					{
    						dlg.close();
    						location.reload();
						});
				});
		};

	

	btn = dlg.buttonPanel.appendChild(createInput('button'));
    btn.value="Закрыть";
    btn.onclick=function()
    	{
    		dlg.close();
    	};

    	

	save = function(onOK, onError)
	{
		if (nameEdit.getValue()=='')
		{
			errorBox("Укажите имя администратора!", function() { nameEdit.editor.focus(); });
			if (onError) onError();
			return;
		}

		var email = emailEdit.getValue();
		if (email!='' && !validateEmail(email))
		{
			errorBox("Неверно указан e-mail администратора!", function() { emailEdit.editor.focus(); });
			if (onError) onError();
			return;
		}


		var post = 'action=auth:set';
		post+='&id='+json.id;
		post+='&name='+encodeURIComponent(nameEdit.getValue());
		post+='&email='+encodeURIComponent(email);
		post+='&filial='+filialEdit.getValue();


		var rights = 0;
		if (right1.getValue()) rights|=1;
		if (right2.getValue()) rights|=2;
		if (right4.getValue()) rights|=4;
		if (right8.getValue()) rights|=8;
		if (right16.getValue()) rights|=16;
		if (right32.getValue()) rights|=32;
		if (right64.getValue()) rights|=64;
		if (right128.getValue()) rights|=128;

		post+='&rights='+rights;


		sendXHR('api.php',post,
			function(response)
			{
				json.id = parseInt(response);
				if (onOK) onOK();
			},
			function(error)
			{
				errorBox(error);
				if (onError) onError();
			});	
	}
	nameEdit.editor.focus();

	dlg.alignInScreenCenter();
}


function showAdminDialog(json)
{
	var dlg = openDialogBoxWithButtons("Сведения об администраторе "+json.id, 800, 420);

	var grid;

	grid = createPropertyGrid(dlg.innerElement);

	createStaticProperty(grid, "Имя:", json.name);


	var s = '';
	for(var i=0; i < filials.length; i++)
	{
		if (filials[i].id == json.filial)
		{
			if (i==0) s = 'Все филиалы';
			else
				s = filials[i].text;
			break;
		}
	}

	createStaticProperty(grid, "Филиал:", s);
	createStaticProperty(grid, "e-mail:", json.email);
	createStaticProperty(grid, "Активирован:", json.activated ? "Да" : "Нет");
	createStaticProperty(grid, "Приглашён:", json.invated ? "Да" : "Нет");


	var tr = grid.tbody.appendChild(document.createElement('TR'))
	var td = tr.appendChild(document.createElement('TD'));
	td.colSpan=2;
	td.innerHTML="<hr";

	createStaticProperty(grid,"Право правки всех событий:", (json.rights & 1)!=0 ? "Да":"Нет");
	createStaticProperty(grid,"Право правки новостей своего филиала:", (json.rights & 2)!=0 ? "Да":"Нет");
	createStaticProperty(grid,"Право правки часто задаваемых вопросов:", (json.rights & 4)!=0 ? "Да":"Нет");
	createStaticProperty(grid,"Право правки видеотрансляций:", (json.rights & 8)!=0 ? "Да":"Нет");
	createStaticProperty(grid,"Право правки расписания своего филиала:", (json.rights & 16)!=0 ? "Да":"Нет");
	createStaticProperty(grid,"Право администрирования форума:", (json.rights & 32)!=0 ? "Да":"Нет");
	createStaticProperty(grid,"Право правки архива викторин:", (json.rights & 64)!=0 ? "Да":"Нет");
	createStaticProperty(grid,"Супер-администратор:", (json.rights & 128)!=0 ? "Да":"Нет");

    
	btn = dlg.buttonPanel.appendChild(createInput('button'));
    btn.value="OK";
    btn.onclick=function()
    	{
    		dlg.close();
    	};
	dlg.alignInScreenCenter();
}



function editAdmin(id)
{
	sendXHR('api.php','action=auth:get&id='+id,
		function(response)
		{
			var json = JSON.parse(response);
			if (adminId == json.id) showAdminDialog(json); else openAdminDialog(json);
		},
		function(error)
		{
			errorBox(error);
		});	
}

May the force be with you, always.