From cdaae64a7431af2bf6cb3c916f0e6bfbdd3fd93b Mon Sep 17 00:00:00 2001 From: vogelor <vogelor@ispconfig3> Date: Sat, 01 May 2010 07:11:31 -0400 Subject: [PATCH] The Interface now supports the first remote-action : do OS-Update --- interface/web/admin/lib/lang/en_remote_action.lng | 8 ++ interface/web/admin/templates/remote_action_osupdate.htm | 25 ++++++++ interface/web/admin/lib/lang/de.lng | 2 interface/web/admin/remote_action_osupdate.php | 99 +++++++++++++++++++++++++++++++++ interface/web/admin/lib/lang/de_remote_action.lng | 8 ++ interface/web/admin/lib/module.conf.php | 9 +++ interface/web/admin/lib/lang/en.lng | 2 7 files changed, 153 insertions(+), 0 deletions(-) diff --git a/interface/web/admin/lib/lang/de.lng b/interface/web/admin/lib/lang/de.lng index c5fd284..e339bc6 100644 --- a/interface/web/admin/lib/lang/de.lng +++ b/interface/web/admin/lib/lang/de.lng @@ -37,4 +37,6 @@ $wb['Updates'] = 'Updates'; $wb['Merge'] = 'Merge'; $wb['Remote Users'] = 'Remote Benutzer'; +$wb['Remote Actions'] = 'Remote Aktionen'; +$wb['Do OS-Update'] = 'Betriebssystem Update ausführen'; ?> diff --git a/interface/web/admin/lib/lang/de_remote_action.lng b/interface/web/admin/lib/lang/de_remote_action.lng new file mode 100644 index 0000000..dcaa104 --- /dev/null +++ b/interface/web/admin/lib/lang/de_remote_action.lng @@ -0,0 +1,8 @@ +<?php +$wb['select_server_txt'] = 'Server auswählen'; +$wb['btn_do_txt'] = 'Aktion ausführen'; +$wb['do_osupdate_caption'] = 'Betriebssystem-Update auf entferntem Server ausführen'; +$wb['do_osupdate_desc'] = "Diese Aktion wird ein 'aptitude -y upgrade' auf Ihrem ausgewählten Server ausführen.<br><br><strong>DIES GESCHIEHT AUF IHRE EIGENE VERANTWORTUNG!</strong>"; +$wb['action_scheduled'] = "Die Aktion wurde zur Ausführung vorgemerkt"; +$wb['select_all_server'] = "Alle Server"; +?> diff --git a/interface/web/admin/lib/lang/en.lng b/interface/web/admin/lib/lang/en.lng index 06a3b45..6090602 100644 --- a/interface/web/admin/lib/lang/en.lng +++ b/interface/web/admin/lib/lang/en.lng @@ -39,4 +39,6 @@ $wb['Updates'] = 'Updates'; $wb['Merge'] = 'Merge'; $wb['Remote Users'] = 'Remote Users'; +$wb['Remote Actions'] = 'Remote Actions'; +$wb['Do OS-Update'] = 'Do OS-Update'; ?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_remote_action.lng b/interface/web/admin/lib/lang/en_remote_action.lng new file mode 100644 index 0000000..1742d61 --- /dev/null +++ b/interface/web/admin/lib/lang/en_remote_action.lng @@ -0,0 +1,8 @@ +<?php +$wb['select_server_txt'] = 'Select Server'; +$wb['btn_do_txt'] = 'Execute action'; +$wb['do_osupdate_caption'] = 'Do OS-Update at remote server'; +$wb['do_osupdate_desc'] = "This Action does a 'aptitude -y upgrade' at your selected Server.<br><br><strong>USE THIS AT YOUR OWN RISK!</strong>"; +$wb['action_scheduled'] = "The action is scheduled for execution"; +$wb['select_all_server'] = "All server"; +?> diff --git a/interface/web/admin/lib/module.conf.php b/interface/web/admin/lib/module.conf.php index 0d153bd..a9802e7 100644 --- a/interface/web/admin/lib/module.conf.php +++ b/interface/web/admin/lib/module.conf.php @@ -155,6 +155,15 @@ // cleanup unset($items); +$items[] = array( 'title' => 'Do OS-Update', + 'target' => 'content', + 'link' => 'admin/remote_action_osupdate.php'); + +$module['nav'][] = array( 'title' => 'Remote Actions', + 'open' => 1, + 'items' => $items); + + // Getting the admin options from other modules $modules = explode(',', $_SESSION['s']['user']['modules']); if(is_array($modules)) { diff --git a/interface/web/admin/remote_action_osupdate.php b/interface/web/admin/remote_action_osupdate.php new file mode 100644 index 0000000..afa0ec6 --- /dev/null +++ b/interface/web/admin/remote_action_osupdate.php @@ -0,0 +1,99 @@ +<?php +/* +Copyright (c) 2010, Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of ISPConfig nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +require_once('../../lib/config.inc.php'); +require_once('../../lib/app.inc.php'); + +//* Check permissions for module +$app->auth->check_module_permissions('admin'); + +//* This is only allowed for administrators +if(!$app->auth->is_admin()) die('only allowed for administrators.'); + +$app->uses('tpl'); + +$app->tpl->newTemplate('form.tpl.htm'); +$app->tpl->setInclude('content_tpl', 'templates/remote_action_osupdate.htm'); + +//* load language file +$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_remote_action.lng'; +include($lng_file); + +/* + * We need a list of all Servers + */ +$sysServers = $app->db->queryAllRecords("SELECT server_id, server_name FROM server order by server_name"); +$dropDown = "<option value='*'>" . $wb['select_all_server'] . "</option>"; +foreach ($sysServers as $server) { + $dropDown .= "<option value='" . $server['server_id'] . "'>" . $server['server_name'] . "</option>"; +} +$app->tpl->setVar('server_option', $dropDown); + +$msg = ''; + +/* + * If the user wants to do the action, write this to our db +*/ +if (isset($_POST['server_select'])) { + $server = $_POST['server_select']; + $servers = array(); + if ($server == '*') { + /* We need ALL Servers */ + foreach ($sysServers as $server) { + $servers[] = $server['server_id']; + } + } + else { + /* We need only the selected Server */ + $servers[] = $_POST['server_select']; + } + foreach ($servers as $serverId) { + $sql = "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_status, response) " . + "VALUES (". + (int)$serverId . ", " . + time() . ", " . + "'os_update', " . + "'', " . + "'pending', " . + "''" . + ")"; + $app->db->query($sql); + } + $msg = $wb['action_scheduled']; +} + +$app->tpl->setVar('msg',$msg); + +$app->tpl->setVar($wb); + +$app->tpl_defaults(); +$app->tpl->pparse(); + + +?> \ No newline at end of file diff --git a/interface/web/admin/templates/remote_action_osupdate.htm b/interface/web/admin/templates/remote_action_osupdate.htm new file mode 100644 index 0000000..27dc8e9 --- /dev/null +++ b/interface/web/admin/templates/remote_action_osupdate.htm @@ -0,0 +1,25 @@ +<h2><tmpl_var name="do_osupdate_caption"></h2> +<p><tmpl_var name="do_osupdate_desc"></p> + +<div class="panel panel_language_add"> + + <div class="pnl_formsarea"> + <fieldset class="inlineLabels"><legend>{tmpl_var name='do_osupdate_caption'}</legend> + <div class="ctrlHolder"> + <label for="server_select">{tmpl_var name='select_server_txt'}</label> + <select name="server_select" id="server" class="selectInput" onchange="document.getElementById('OKMsg').style.visibility = 'hidden'; "> + {tmpl_var name='server_option'} + </select> + </div> + </fieldset> + + <tmpl_if name="msg"> + <div id="OKMsg"><p><tmpl_var name="msg"></p></div> + </tmpl_if> + + <div class="buttonHolder buttons"> + <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_do_txt'}" onClick="submitForm('pageForm','admin/remote_action_osupdate.php');"><span>{tmpl_var name='btn_do_txt'}</span></button> + </div> + </div> + +</div> -- Gitblit v1.9.1