123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- <%#
- Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
- Licensed to the public under the Apache License 2.0.
- -%>
- <% css = [[
- .commandbox {
- height: 12em;
- width: 30%;
- float: left;
- height: 12em;
- margin: 5px;
- position: relative;
- }
- .commandbox h3 {
- font-size: 1.5em !important;
- line-height: 2em !important;
- margin: 0 !important;
- }
- .commandbox input[type="text"] {
- width: 50% !important;
- }
- .commandbox div {
- position: absolute;
- left: 0;
- bottom: 1.5em;
- }
- ]] -%>
- <%+header%>
- <script type="text/javascript" src="<%=resource%>/cbi.js"></script>
- <script type="text/javascript">//<![CDATA[
- var stxhr = new XHR();
- function command_run(id)
- {
- var args;
- var field = document.getElementById(id);
- if (field)
- args = encodeURIComponent(field.value);
- var legend = document.getElementById('command-rc-legend');
- var output = document.getElementById('command-rc-output');
- if (legend && output)
- {
- output.innerHTML =
- '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' +
- '<%:Waiting for command to complete...%>'
- ;
- legend.parentNode.style.display = 'block';
- legend.style.display = 'inline';
- stxhr.get('<%=luci.dispatcher.build_url("admin", "system", "commands", "run")%>/' + id + (args ? '/' + args : ''), null,
- function(x, st)
- {
- if (st)
- {
- if (st.binary)
- st.stdout = '[<%:Binary data not displayed, download instead.%>]';
- legend.style.display = 'none';
- output.innerHTML = String.format(
- '<pre><strong># %h\n</strong>%h<span style="color:red">%h</span></pre>' +
- '<div class="alert-message warning">%s (<%:Code:%> %d)</div>',
- st.command, st.stdout, st.stderr,
- (st.exitcode == 0) ? '<%:Command successful%>' : '<%:Command failed%>',
- st.exitcode);
- }
- else
- {
- legend.style.display = 'none';
- output.innerHTML = '<span class="error"><%:Failed to execute command!%></span>';
- }
- location.hash = '#output';
- }
- );
- }
- }
- function command_download(id)
- {
- var args;
- var field = document.getElementById(id);
- if (field)
- args = encodeURIComponent(field.value);
- location.href = '<%=luci.dispatcher.build_url("admin", "system", "commands", "download")%>/' + id + (args ? '/' + args : '');
- }
- function command_link(id)
- {
- var legend = document.getElementById('command-rc-legend');
- var output = document.getElementById('command-rc-output');
- var args;
- var field = document.getElementById(id);
- if (field)
- args = encodeURIComponent(field.value);
- if (legend && output)
- {
- var link = location.protocol + '//' + location.hostname +
- (location.port ? ':' + location.port : '') +
- location.pathname.split(';')[0] + 'command/' +
- id + (args ? '/' + args : '');
- legend.style.display = 'none';
- output.parentNode.style.display = 'block';
- output.innerHTML = String.format(
- '<div class="alert-message"><%:Access command with%> <a href="%s">%s</a></div>',
- link, link
- );
- location.hash = '#output';
- }
- }
- //]]></script>
- <%
- local uci = require "luci.model.uci".cursor()
- local commands = { }
- uci:foreach("luci", "command", function(s) commands[#commands+1] = s end)
- %>
- <form method="get" action="<%=pcdata(luci.http.getenv("REQUEST_URI"))%>">
- <div class="cbi-map">
- <h2><a id="content" name="content"><%:Custom Commands%></a></h2>
- <fieldset class="cbi-section">
- <% local _, command; for _, command in ipairs(commands) do %>
- <div class="commandbox">
- <h3><%=pcdata(command.name)%></h3>
- <p><%:Command:%> <code><%=pcdata(command.command)%></code></p>
- <% if command.param == "1" then %>
- <p><%:Arguments:%> <input type="text" id="<%=command['.name']%>" /></p>
- <% end %>
- <div>
- <input type="button" value="<%:Run%>" class="cbi-button cbi-button-apply" onclick="command_run('<%=command['.name']%>')" />
- <input type="button" value="<%:Download%>" class="cbi-button cbi-button-download" onclick="command_download('<%=command['.name']%>')" />
- <% if command.public == "1" then %>
- <input type="button" value="<%:Link%>" class="cbi-button cbi-button-link" onclick="command_link('<%=command['.name']%>')" />
- <% end %>
- </div>
- </div>
- <% end %>
- <br style="clear:both" /><br />
- <a name="output"></a>
- </fieldset>
- </div>
- <fieldset class="cbi-section" style="display:none">
- <legend id="command-rc-legend"><%:Collecting data...%></legend>
- <span id="command-rc-output"></span>
- </fieldset>
- </form>
- <%+footer%>
|