如何在客户端的网页中访问服务器端终端?

时间:2013-02-06 04:29:18

标签: javascript jquery java-compiler-api terminal-emulator

终端模拟器必须嵌入到网页中,用户必须通过网页访问来编译和运行在服务器上创建的java程序。我想在终端编译并运行程序。客户端不需要安装任何应用程序软件。

2 个答案:

答案 0 :(得分:2)

我会推荐以下内容:

  • 制作文本可编辑div(将contentEditable属性设置为true)并将其设置为看起来像控制台。
  • 然后绑定到其keypress事件以监视一个输入,在该输入上,ajax请求一个执行您输入的任何内容的服务器端脚本。例如。使用php的exec()并输出它的返回值。
  • 将服务器端脚本的响应附加到div,然后重复..

虽然打开控制台给用户时应该非常小心。您可以通过明确地将功能添加到所有终端命令来进一步限制终端的能力,例如, <?php echo exec('git '.$_GET['cmdtxt']); ?>是确保调用git的一种方法,但它仍然容易受到攻击,因为你可能会执行第二个命令。我相信你可以弄清楚你的安全需求是什么,并正确验证它们。

如果这看起来很模糊,那只是因为你的问题并不是太具体。这是你正在寻找的答案吗?让我知道:))

答案 1 :(得分:0)

首先,您可以创建一个用于显示结果的div和一个用于命令的textarea。检查textarea的按键,并在用户按Enter键时使用AJAX将命令发送到服务器。您可以将它们设计为看起来更像终端。

请注意,向用户公开控制台很容易被黑客入侵。始终检查用户输入以确保无法执行危险命令。

如何过滤命令的示例代码:

<?php
$cmd = $_POST['cmd'];
$allowed = array('ls','git','grep','...');//The allowed commands

foreach($allowed as $part){
    if(strpos($cmd,$part) === false){
        echo 'Command not recognized!';
    }
}

ob_start();
passthru($cmd);
$result = ob_end_clean();

echo json_encode(array('result'=>$result));

希望这可以帮到你。