1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package com.hack23.cia.web.impl.ui.page.admin;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.io.InputStreamReader;
24
25 import org.vaadin.console.Console;
26 import org.vaadin.console.Console.Command;
27 import org.vaadin.navigator7.Page;
28
29 import com.vaadin.ui.VerticalLayout;
30
31
32
33
34 @Page(uriName = "console",crawlable=true)
35 @SuppressWarnings("serial")
36 public final class ConsolePage extends AbstractAdminPage {
37
38
39 private final VerticalLayout content = new VerticalLayout();
40
41
42
43
44 public ConsolePage() {
45 super();
46 content.setSizeFull();
47 content.setMargin(true);
48 content.setSpacing(true);
49 setCompositionRoot(content);
50
51
52 final Console console = new Console();
53 content.addComponent(console);
54 console.setPs("}> ");
55 console.setCols(68);
56 console.setRows(20);
57 console.setMaxBufferSize(20);
58 console.setGreeting("Welcome.");
59 console.reset();
60 console.focus();
61
62 final Command systemCommand = new Command() {
63 private static final long serialVersionUID = -5733237166568671987L;
64
65 @Override
66 public Object execute(final Console console, final String[] argv)
67 throws Exception {
68 final Process p = Runtime.getRuntime().exec(argv);
69 final InputStream in = p.getInputStream();
70 final StringBuilder o = new StringBuilder();
71 final InputStreamReader r = new InputStreamReader(in);
72 int c = -1;
73 try {
74 while ((c = r.read()) != -1) {
75 o.append((char) c);
76 }
77 } catch (final IOException e) {
78 o.append("[truncated]");
79 }
80 return o.toString();
81 }
82
83 @Override
84 public String getUsage(final Console console, final String[] argv) {
85 return null;
86 }
87 };
88
89 console.addCommand("free", systemCommand);
90
91
92 setHeight(getScreenHeight());
93 }
94
95
96
97
98 @Override
99 public String getPageTitle() {
100 return "";
101 }
102
103 }