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