annotate src/luan/modules/http/tools/Shell_mod.luan @ 1152:21d157b153fe

change http parameters interface
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 04 Feb 2018 19:25:12 -0700
parents bae2d0c2576c
children 3ef883468fd0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 609
diff changeset
1 local Luan = require "luan:Luan.luan"
554
18504c41b0be move debug() to Io and remove Debug module;
Franklin Schmidt <fschmidt@gmail.com>
parents: 506
diff changeset
2 local error = Luan.error
18504c41b0be move debug() to Io and remove Debug module;
Franklin Schmidt <fschmidt@gmail.com>
parents: 506
diff changeset
3 local ipairs = Luan.ipairs or error()
18504c41b0be move debug() to Io and remove Debug module;
Franklin Schmidt <fschmidt@gmail.com>
parents: 506
diff changeset
4 local load = Luan.load or error()
18504c41b0be move debug() to Io and remove Debug module;
Franklin Schmidt <fschmidt@gmail.com>
parents: 506
diff changeset
5 local try = Luan.try or error()
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 609
diff changeset
6 local Io = require "luan:Io.luan"
554
18504c41b0be move debug() to Io and remove Debug module;
Franklin Schmidt <fschmidt@gmail.com>
parents: 506
diff changeset
7 local print = Io.print or error()
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 609
diff changeset
8 local Http = require "luan:http/Http.luan"
560
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
9
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
10
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 789
diff changeset
11 local Shell_mod = {}
503
92c3d22745b8 make _ENV optional
Franklin Schmidt <fschmidt@gmail.com>
parents: 497
diff changeset
12
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
13 local history = {}
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 789
diff changeset
14 Shell_mod.env = {}
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
15
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 789
diff changeset
16 function Shell_mod.respond()
1152
21d157b153fe change http parameters interface
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
17 if Http.request.parameters.clear ~= nil then
609
24b05963ba62 shell "clear" button now clears the session
Franklin Schmidt <fschmidt@gmail.com>
parents: 560
diff changeset
18 Http.clear_session()
24b05963ba62 shell "clear" button now clears the session
Franklin Schmidt <fschmidt@gmail.com>
parents: 560
diff changeset
19 Http.response.send_redirect(Http.request.path) -- reload page
24b05963ba62 shell "clear" button now clears the session
Franklin Schmidt <fschmidt@gmail.com>
parents: 560
diff changeset
20 return
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
21 else
1152
21d157b153fe change http parameters interface
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
22 local cmd = Http.request.parameters.cmd
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
23 if cmd ~= nil then
325
78a6a71afbfd use SimplyHTML
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 321
diff changeset
24 Io.stdout = {}
78a6a71afbfd use SimplyHTML
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 321
diff changeset
25 function Io.stdout.write(...)
402
62b457c50594 add stripe;
Franklin Schmidt <fschmidt@gmail.com>
parents: 399
diff changeset
26 for v in Luan.values(...) do
325
78a6a71afbfd use SimplyHTML
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 321
diff changeset
27 history[#history+1] = v
78a6a71afbfd use SimplyHTML
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 321
diff changeset
28 end
78a6a71afbfd use SimplyHTML
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 321
diff changeset
29 end
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
30 print( "% "..cmd )
326
db37d6aee4db remove try-catch statement;
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 325
diff changeset
31 try {
db37d6aee4db remove try-catch statement;
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 325
diff changeset
32 function()
694
b620b8e1010f remove Luan.load() allow_expression param and add Luan.eval()
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
33 local line
b620b8e1010f remove Luan.load() allow_expression param and add Luan.eval()
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
34 try {
b620b8e1010f remove Luan.load() allow_expression param and add Luan.eval()
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
35 function()
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 789
diff changeset
36 line = load("return "..cmd,"<web_shell>",Shell_mod.env)
694
b620b8e1010f remove Luan.load() allow_expression param and add Luan.eval()
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
37 end
b620b8e1010f remove Luan.load() allow_expression param and add Luan.eval()
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
38 catch = function(e)
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 789
diff changeset
39 line = load(cmd,"<web_shell>",Shell_mod.env)
694
b620b8e1010f remove Luan.load() allow_expression param and add Luan.eval()
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
40 end
b620b8e1010f remove Luan.load() allow_expression param and add Luan.eval()
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
41 }
554
18504c41b0be move debug() to Io and remove Debug module;
Franklin Schmidt <fschmidt@gmail.com>
parents: 506
diff changeset
42 print( line() )
694
b620b8e1010f remove Luan.load() allow_expression param and add Luan.eval()
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
43 end
326
db37d6aee4db remove try-catch statement;
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 325
diff changeset
44 catch = function(e)
db37d6aee4db remove try-catch statement;
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 325
diff changeset
45 Io.print_to(Io.stderr,e)
db37d6aee4db remove try-catch statement;
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 325
diff changeset
46 print(e)
694
b620b8e1010f remove Luan.load() allow_expression param and add Luan.eval()
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
47 end
326
db37d6aee4db remove try-catch statement;
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 325
diff changeset
48 }
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
49 end
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
50 end
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
51
325
78a6a71afbfd use SimplyHTML
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 321
diff changeset
52 Io.stdout = Http.response.text_writer()
391
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
53 %>
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
54 <html>
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
55 <head>
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
56 <title>Luan Shell</title>
560
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
57 <style>
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
58 body {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
59 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
60 margin: 2em 5% 0 5%;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
61 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
62 pre {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
63 font: inherit;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
64 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
65 input[type="text"] {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
66 font: inherit;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
67 padding: .5em .8em;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
68 border-radius: 8px;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
69 border-style: groove;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
70 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
71 input[type="text"]:focus {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
72 border-color: #66afe9;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
73 outline: none;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
74 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
75 input[type="submit"] {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
76 color: white;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
77 background: #337ab7;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
78 border-color: #337ab7;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
79 font: inherit;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
80 padding: .5em;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
81 border-radius: 4px;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
82 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
83 input[type="submit"]:hover {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
84 background: #236aa7 !important;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
85 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
86 </style>
391
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
87 </head>
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
88 <body>
560
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
89 <h2>Luan Shell</h2>
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
90 <p>This is a command shell. Enter commands below.</p>
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
91 <pre><%
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
92 for _,v in ipairs(history) do
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
93 Io.stdout.write(v)
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
94 end
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
95 %></pre>
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
96 <form name='form0' method='post'>
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
97 % <input type="text" name='cmd' size="80" autofocus>
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
98 <input type="submit" value="run">
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
99 <input type="submit" name="clear" value="clear">
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
100 </form>
391
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
101 </body>
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
102 </html>
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
103 <%
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
104 end
503
92c3d22745b8 make _ENV optional
Franklin Schmidt <fschmidt@gmail.com>
parents: 497
diff changeset
105
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 789
diff changeset
106 Http.per_session(Shell_mod.respond)
505
7bc63886d4f2 web page modules now return a function
Franklin Schmidt <fschmidt@gmail.com>
parents: 504
diff changeset
107
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 789
diff changeset
108 return Shell_mod