c48b494c8a1a4cdff8370580d3a48caabffc57e7
[gnucomo.git] / src / web / services.php
1 <?php 
2
3 /**************************************************************************
4 **  (c) Copyright 2003, Andromeda Technology & Automation
5 ** This is free software; you can redistribute it and/or modify it under the
6 ** terms of the GNU General Public License, see the file COPYING.
7 ***************************************************************************
8 ** MODULE INFORMATION *
9 ***********************
10 **      FILE NAME      : services.php
11 **      SYSTEM NAME    : Gnucomo - Gnu Computer Monitoring
12 **      VERSION NUMBER : $Revision: 1.3 $
13 **
14 **  DESCRIPTION      :  Service Administration page.
15 **                      Input parameters: action (POST) : empty, 'Create'
16 **                              servcode (POST) : short name of the service to create or remove
17 **
18 **  EXPORTED OBJECTS : 
19 **  LOCAL    OBJECTS : 
20 **  MODULES  USED    :
21 ***************************************************************************
22 **  ADMINISTRATIVE INFORMATION *
23 ********************************
24 **      ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl
25 **      CREATION DATE   : Aug 04, 2003
26 **      LAST UPDATE     : Aug 28, 2003
27 **      MODIFICATIONS   : 
28 **************************************************************************/
29
30 /*****************************
31    $Log: services.php,v $
32    Revision 1.3  2007-10-19 07:16:44  arjen
33    Improved interface for editing check patterns.
34
35    Revision 1.2  2005/06/04 07:25:59  arjen
36    Added an interface to edit check patterns
37
38    Revision 1.1  2003/09/01 06:53:22  arjen
39    New page to enter and modify services.
40
41 ******************************/
42
43 // RCSID = "$Id: services.php,v 1.3 2007-10-19 07:16:44 arjen Exp $";
44
45 ini_set('include_path', '.:./classes:../phpclasses');
46
47 require_once('page.class.php');
48
49 function clientscripts()
50 {
51
52 ?>
53
54 <script language='JavaScript'>
55
56 function CheckCreate(f)
57 {
58    if (f.servcode.value == "")
59    {
60       alert("You must supply a service code");
61       return false;
62    }
63    return true;
64 }
65
66 function CheckRemove(f)
67 {
68    var message = "Are you sure you want to remove service ";
69    message += f.servcode.value;
70    message += " ?";
71
72    return confirm(message);
73 }
74
75 </script>
76
77 <?php
78 }
79
80 class service_page extends page
81 {
82
83    function Body()
84    {
85
86    clientscripts();
87
88    if (isset($_POST['action']) && $_POST['action'] == 'Create' && !empty($_POST['servcode']))
89    {
90       pg_exec($this->database, "INSERT INTO service
91                        (servicecode, servicename, default_priority, max_priority) VALUES ('"
92                      . $_POST['servcode'] . "','" . $_POST['servname'] . "','"
93                      . $_POST['defprior'] . "','" . $_POST['maxprior'] . "')");
94    }
95
96    if (isset($_POST['action']) && $_POST['action'] == 'Remove' && !empty($_POST['servcode']))
97    {
98       pg_exec($this->database, "DELETE FROM service WHERE servicecode='"
99                                 . $_POST['servcode'] . "'");
100    }
101
102    if (isset($_GET['servcode']))
103    {
104       echo "<h1>Detailed information for service " . $_GET['servcode'] . "</h1><br>\n";
105
106       if (isset($_POST['action']) && $_POST['action'] == 'Save Changes')
107       {
108          $qry = "UPDATE service SET servicename='" . $_POST['servname'] . "'";
109          $qry .= ", default_priority='" . $_POST['defprior'] . "'";
110          $qry .= ", max_priority='" . $_POST['maxprior'] . "'";
111          $qry .= " WHERE servicecode='" . $_GET['servcode'] . "'";
112
113          pg_exec($this->database, $qry);
114       }
115       if (isset($_POST['action']) && $_POST['action'] == 'Add')
116       {
117          $qry = "INSERT INTO service_pattern VALUES ('". $_GET['servcode'] . "'";
118          $qry .= ", '" . $_POST['Rank'] . "'";
119          $qry .= ", '" . $_POST['Pattern'] . "'";
120          $qry .= ", '" . $_POST['Pat_Action'] . "'";
121          $qry .= ", '" . $_POST['Argument'] . "')";
122
123          pg_exec($this->database, $qry);
124       }
125       if (isset($_POST['action']) && $_POST['action'] == 'Change')
126       {
127          $qry = "UPDATE service_pattern SET rank = '" . $_POST['Rank'] . "'";
128          $qry .= ", pattern = '" . $_POST['Pattern'] . "'";
129          $qry .= ", action = '" . $_POST['Pat_Action'] . "'";
130          $qry .= ", argument = '" . $_POST['Argument'] . "'";
131          $qry .= " WHERE service = '" . $_GET['servcode'] . "' AND rank = '" . $_POST['Rank'] . "'";
132
133          pg_exec($this->database, $qry);
134       }
135       if (isset($_POST['action']) && $_POST['action'] == 'Delete')
136       {
137          $qry = "DELETE FROM service_pattern WHERE service = '". $_GET['servcode'] . "'";
138          $qry .= " AND rank =  '" . $_POST['Rank'] . "'";
139
140          pg_exec($this->database, $qry);
141       }
142
143       $res = pg_exec($this->database, "SELECT * FROM service
144                                        WHERE servicecode='" . $_GET['servcode'] . "'");
145       $srv = pg_fetch_object($res, 0);
146
147       echo "<form action='services.php?servcode=" . $srv->servicecode . "' method='POST'>";
148       echo "<table>";
149
150       echo "<tr><td>Service name</td><td><input name='servname' type='text' value='";
151       echo $srv->servicename . "'></td></tr>";
152       echo "<tr><td>Default priority</td><td><select name='defprior'>";
153       for ($prior = 1; $prior < 6; $prior++)
154       {
155          echo "<option value='$prior'";
156          if ($prior == $srv->default_priority)
157          {
158             echo " selected='true'";
159          }
160          echo ">$prior</option>\n";
161       }
162       echo "</select>";
163       echo "<tr><td>Maximum priority</td><td><select name='maxprior'>";
164       for ($prior = 1; $prior < 6; $prior++)
165       {
166          echo "<option value='$prior'";
167          if ($prior == $srv->max_priority)
168          {
169             echo " selected='true'";
170          }
171          echo ">$prior</option>\n";
172       }
173       echo "</select>";
174       echo "</table>";
175       echo "<input type='submit' name='action' value='Save Changes'>";
176       echo "</form>";
177
178       echo "<h1>Patterns to check logs of " . $srv->servicename . "</h1>\n";
179
180       echo "<table>";
181       echo "<tr><th>Rank</th><th>Pattern</th><th>Action</th>";
182       echo "<th>Argument</th><th>&nbsp;</th><th>&nbsp;</th></tr>\n";
183
184       $pat_res = pg_exec($this->database, "SELECT * FROM service_pattern
185                                            WHERE service = '" . $srv->servicecode . "' ORDER BY rank");
186       for ($pat_row = 0; $pat_row < pg_numrows($pat_res); $pat_row++)
187       {
188          $pat = pg_fetch_object($pat_res, $pat_row);
189          echo "<tr><form action='services.php?servcode=" . $srv->servicecode . "' method='POST'><td>";
190          echo "<input type='text' name='Rank' value='" . $pat->rank . "'>";
191          echo "</td><td>";
192          echo "<input type='text' size='80' name='Pattern' value='" . $pat->pattern . "'>";
193          echo "</td><td>";
194          //echo "<input type='text' name='Pat_Action' value='" . $pat->action . "'>";
195          echo "<select name='Pat_Action'>";
196          echo "   <option";
197          if ($pat->action =='ignore') echo ' selected';
198          echo ">ignore</option>";
199          echo "   <option";
200          if ($pat->action =='notify') echo ' selected';
201          echo ">notify</option>";
202          echo "   <option";
203          if ($pat->action =='abuse') echo ' selected';
204          echo ">abuse</option>";
205          echo "   <option";
206          if ($pat->action =='forgive') echo ' selected';
207          echo ">forgive</option>";
208          echo "</select>";
209          echo "</td><td>";
210          echo "<input type='text' name='Argument' value='" . $pat->argument . "'>";
211          echo "</td><td>";
212          echo "<input type='submit' name='action' value='Change'>";
213          echo "</td><td>";
214          echo "<input type='submit' name='action' value='Delete'>";
215          echo "</td></form></tr>";
216       }
217       echo "<tr><form action='services.php?servcode=" . $srv->servicecode . "' method='POST'><td>";
218       echo "<input type='text' name='Rank' value=''>";
219       echo "</td><td>";
220       echo "<input type='text' size='80' name='Pattern' value=''>";
221       echo "</td><td>";
222       //echo "<input type='text' name='Pat_Action' value=''>";
223       echo "<select name='Pat_Action'>";
224       echo "   <option selected>ignore</option>";
225       echo "   <option>notify</option>";
226       echo "   <option>abuse</option>";
227       echo "   <option>forgive</option>";
228       echo "</select>";
229       echo "</td><td>";
230       echo "<input type='text' name='Argument' value=''>";
231       echo "</td><td>";
232       echo "<input type='submit' name='action' value='Add'>";
233       echo "</td><td>&nbsp;";
234       echo "</td></form></tr>";
235       echo "</table>";
236    }
237    else
238    {
239    echo "<h1>Service Administration</h1><hr>";
240
241    $res = pg_exec($this->database, "SELECT * FROM service ORDER BY servicecode");
242
243    echo "<table>";
244    echo "<tr><th>Service code</th><th>Name</th><th>Priority</th><th>Max priority</th><tr>";
245    $srv = 0;
246    while ($srv < pg_numrows($res))
247    {
248       $u = pg_fetch_object($res, $srv);
249       ?>
250       <tr><td align='center'><a href='services.php?servcode=<?php echo $u->servicecode?>'><img src='service.png'></a><br>
251              <b><?php echo $u->servicecode ?></b>
252       </td><td>
253          <?php echo $u->servicename ?>
254       </td><td>
255          <?php echo $u->default_priority ?>
256       </td><td>
257          <?php echo $u->max_priority ?>
258       </td><td>
259           <form action='services.php' method='post' onSubmit='return CheckRemove(this)'>
260               <input type='hidden' name='servcode' value='<?php echo $u->servicecode ?>'>
261               <input type='submit' name='action' value='Remove'>
262           </form>
263       </td></tr>
264       <?php
265       $srv++;
266    }
267    echo "</table>";
268
269 ?>
270
271 <h2>Create new service:</h2>
272 <p>
273
274 <form action='services.php' method='post' onSubmit='return CheckCreate(this)'>
275 Service code: <input name='servcode' type='text'>
276 Service name: <input name='servname' type='text'>
277 Default priority: <select name='defprior'>
278 <option value='1'>1</option>
279 <option value='2'>2</option>
280 <option value='3'>3</option>
281 <option value='4'>4</option>
282 <option value='5'>5</option>
283 </select>
284 Maximum priority: <select name='maxprior'>
285 <option value='1'>1</option>
286 <option value='2'>2</option>
287 <option value='3'>3</option>
288 <option value='4'>4</option>
289 <option value='5' selected='true'>5</option>
290 </select>
291 <br>
292 <input type='submit' name='action' value='Create'>
293 </form>
294 </p>
295
296 <?php
297    }
298    }
299 }
300
301 $page = new service_page("Gnucomo User Administration");
302
303 $page->Showpage();
304
305 ?>