]> git.proxmox.com Git - pmg-api.git/blob - PMG/NoVncIndex.pm
use 'die' instead of 'carp'
[pmg-api.git] / PMG / NoVncIndex.pm
1 package PMG::NoVncIndex;
2
3 use strict;
4 use warnings;
5
6 sub get_index {
7 my ($lang, $username, $csrftoken, $console, $nodename) = @_;
8
9 my $page = <<_EOD;
10 <!DOCTYPE html>
11 <html>
12 <head>
13 <title>$nodename - Proxmox Console</title>
14 <meta charset="utf-8">
15 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
16 <!-- Apple iOS Safari settings -->
17 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
18 <!-- Stylesheets -->
19 <link rel="stylesheet" href="/novnc/include/base.css"/>
20 _EOD
21
22 # fixme
23 $page .= '<script type="text/javascript">function gettext(buf) { return buf; }</script>';
24
25 $page .= <<_EOD;
26 <script type="text/javascript">
27 if (typeof(PVE) === 'undefined') PVE = {};
28 PVE.UserName = '$username';
29 PVE.CSRFPreventionToken = '$csrftoken';
30 INCLUDE_URI='/novnc/include/';
31 </script>
32 </head>
33 <body>
34 <div id="noVNC-control-bar">
35 <!--noVNC Mobile Device only Buttons-->
36 <div class="noVNC-buttons-left">
37 <input type="image" alt="viewport drag" src="/novnc/images/drag.png"
38 id="noVNC_view_drag_button" class="noVNC_status_button"
39 title="Move/Drag Viewport">
40 <div id="noVNC_mobile_buttons">
41 <input type="image" alt="No mousebutton" src="/novnc/images/mouse_none.png"
42 id="noVNC_mouse_button0" class="noVNC_status_button">
43 <input type="image" alt="Left mousebutton" src="/novnc/images/mouse_left.png"
44 id="noVNC_mouse_button1" class="noVNC_status_button">
45 <input type="image" alt="Middle mousebutton" src="/novnc/images/mouse_middle.png"
46 id="noVNC_mouse_button2" class="noVNC_status_button">
47 <input type="image" alt="Right mousebutton" src="/novnc/images/mouse_right.png"
48 id="noVNC_mouse_button4" class="noVNC_status_button">
49 <input type="image" alt="Keyboard" src="/novnc/images/keyboard.png"
50 id="showKeyboard" class="noVNC_status_button"
51 value="Keyboard" title="Show Keyboard"/>
52 <!-- Note that Google Chrome on Android doesn't respect any of these,
53 html attributes which attempt to disable text suggestions on the
54 on-screen keyboard. Let's hope Chrome implements the ime-mode
55 style for example -->
56 <textarea id="keyboardinput" autocapitalize="off"
57 autocorrect="off" autocomplete="off" spellcheck="false"
58 mozactionhint="Enter" onsubmit="return false;"
59 style="ime-mode: disabled;"></textarea>
60 <div id="noVNC_extra_keys">
61 <input type="image" alt="Extra keys" src="/novnc/images/showextrakeys.png"
62 id="showExtraKeysButton" class="noVNC_status_button">
63 <input type="image" alt="Ctrl" src="/novnc/images/ctrl.png"
64 id="toggleCtrlButton" class="noVNC_status_button">
65 <input type="image" alt="Alt" src="/novnc/images/alt.png"
66 id="toggleAltButton" class="noVNC_status_button">
67 <input type="image" alt="Tab" src="/novnc/images/tab.png"
68 id="sendTabButton" class="noVNC_status_button">
69 <input type="image" alt="Esc" src="/novnc/images/esc.png"
70 id="sendEscButton" class="noVNC_status_button">
71 <input type="image" alt="Ctrl+Alt+Del" src="/novnc/images/ctrlaltdel.png"
72 id="sendCtrlAltDelButton" class="noVNC_status_button">
73 </div>
74 </div>
75 </div>
76
77 <div id="noVNC_status">Loading</div>
78
79 <!--noVNC Buttons-->
80 <div class="noVNC-buttons-right">
81 <input type="image" alt="Send keys" src="/novnc/images/showextrakeys.png"
82 id="showSendKeysButton" class="noVNC_status_button"
83 title="Send keys" />
84 <input type="image" alt="Clipboard" src="/novnc/images/clipboard.png"
85 id="clipboardButton" class="noVNC_status_button"
86 title="Clipboard" />
87 <input type="image" alt="Fullscreen" src="/novnc/images/fullscreen.png"
88 id="fullscreenButton" class="noVNC_status_button"
89 title="Fullscreen" />
90 <input type="image" alt="Commands" src="/novnc/images/power.png"
91 id="pveCommandsButton" class="noVNC_status_button"
92 title="Commands" />
93 </div>
94
95 <div id="noVNC_description" class="">
96 </div>
97
98 <!-- Popup Status Panel -->
99 <div id="noVNC_popup_status" class="">
100 </div>
101
102 <!-- Clipboard Panel -->
103 <div id="noVNC_clipboard" class="triangle-right top">
104 <textarea id="noVNC_clipboard_text" rows=5>
105 </textarea>
106 <br />
107 <input id="noVNC_clipboard_clear_button" type="button"
108 value="Clear">
109 </div>
110
111 <!-- PVE command Panel -->
112 <div id="noVNC_pve_commands" class="triangle-right top">
113 <span id="noVNC_pve_command_menu">
114 </span>
115 </div>
116
117 <!-- Settings Panel -->
118 <div id="noVNC_settings" class="triangle-right top">
119 <span id="noVNC_settings_menu">
120 <ul>
121 <li><input id="noVNC_encrypt" type="checkbox"> Encrypt</li>
122 <li><input id="noVNC_true_color" type="checkbox" checked> True Color</li>
123 <li><input id="noVNC_cursor" type="checkbox"> Local Cursor</li>
124 <li><input id="noVNC_clip" type="checkbox" value="true"> Clip to Window</li>
125 <li><input id="noVNC_shared" type="checkbox"> Shared Mode</li>
126 <li><input id="noVNC_view_only" type="checkbox"> View Only</li>
127 <li><input id="noVNC_path" type="input" value="websockify"> Path</li>
128 <li><input id="noVNC_repeaterID" type="input" value=""> Repeater ID</li>
129 <li><input id="noVNC_stylesheet" type="input" value=""> Stylesheet</li>
130 <li><input id="noVNC_resize" type="input" value=""> Resize</li>
131 <li><input id="noVNC_logging" type="input" value=""> Logging</li>
132
133 </ul>
134 </span>
135 </div>
136
137 <!-- PVE Send Key Panel -->
138 <div id="noVNC_send_keys" class="triangle-right top">
139 <span id="noVNC_send_keys_panel">
140 </span>
141 </div>
142
143 <!-- Connection Panel -->
144 <div id="noVNC_controls" class="triangle-right top">
145 <ul>
146 <li><label><strong>Host: </strong><input id="noVNC_host" /></label></li>
147 <li><label><strong>Port: </strong><input id="noVNC_port" /></label></li>
148 <li><label><strong>Password: </strong><input id="noVNC_password" type="password" /></label></li>
149 <li><input id="noVNC_connect_button" type="button" value="Connect"></li>
150 </ul>
151 </div>
152
153 </div> <!-- End of noVNC-control-bar -->
154
155 <div id="noVNC_screen">
156 <div id="noVNC_screen_pad"></div>
157
158 <h1 id="noVNC_logo"><span>no</span><br />VNC</h1>
159
160 <!-- HTML5 Canvas -->
161 <div id="noVNC_container">
162 <canvas id="noVNC_canvas" width="640" height="400">
163 Canvas not supported.
164 </canvas>
165 </div>
166
167 </div>
168 <script src="/novnc/include/util.js"></script>
169 <script src="/novnc/include/pveui.js"></script>
170 </body>
171 </html>
172 _EOD
173
174 return $page;
175 }
176
177 1;