Mercurial Hosting > luan
view http/src/luan/modules/http/shell.luan @ 503:92c3d22745b8
make _ENV optional
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 20 May 2015 23:24:46 -0600 |
parents | 55f9f74f1e55 |
children | dbdf4b8193a8 |
line wrap: on
line source
local Luan = require "luan:Luan" local ipairs = Luan.ipairs local load = Luan.load local try = Luan.try local Io = require "luan:Io" local print = Io.print local Debug = require "luan:Debug" local Http = require "luan:http/Http" local Html = require "luan:Html" local M = {} M.per_session = true local history = {} M.env = {} function M.respond() if Http.request.parameter.clear ~= nil then history = {} else local cmd = Http.request.parameter.cmd if cmd ~= nil then Io.stdout = {} function Io.stdout.write(...) for v in Luan.values(...) do history[#history+1] = v end end print( "% "..cmd ) try { function() local line = load(cmd,"<web_shell>",M.env,true) Debug.print_if_something( line() ) end; catch = function(e) Io.print_to(Io.stderr,e) print(e) end; } end end Io.stdout = Http.response.text_writer() %> <html> <head> <% Html.simply_html_head() %> <title>Luan Shell</title> </head> <body> <div container> <h3>Luan Shell</h3> <p>This is a command shell. Enter commands below.</p> <pre><% for _,v in ipairs(history) do Io.stdout.write(v) end %></pre> <form name='form0' method='post'> % <input name='cmd' size="80" autofocus> <input type="submit" value="run" textcolor="white" bgcolor="#337ab7"> <input type="submit" name="clear" value="clear" textcolor="white" bgcolor="#337ab7"> </form> </div> <% Html.simply_html_body_bottom() %> </body> </html> <% end return M