Diskussion zu diesem Addon: AddOn: Uptime (PDA Admin-Bereich)
Hier kommt es nun: Mein erstes PDA AddOn !
Funktion: Anzeige einer "top"-Ausgabe innerhalb der Administrationsoberfläche von PDA, unter Beachtung der aktuellen Session und des eingestellten Farbschemas.
Um den Code besser diskutieren zu können, binde ich ihn hier als Text ein. Für weitere "Kreationen" werden es dann wohl *.zip-Files sein. Sonst sprengt das den Rahmen.
<Teaser> So sieht die Sache aus:
Installation
- Erzeuge Directory /opt/pdadmin/www/addons (drwxr-xr-x root root)
- Erzeuge Datei addons.uptime.main.html (-rw-r--r-- root root) im addons-Verzeichnis mit folgendem Inhalt. Wem zu viele Punkte in diesem Dateinamen sind, kann natürlich auch einen anderen wählen. Dann aber unten (in der *.cgi) korrigieren...
ZitatAlles anzeigen<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>pd-admin v3.x - Mainframe</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<link rel="stylesheet" href="/administrator/css/$$color_scheme/styles.css" type="text/css">
</head>
<body>
<table width="90%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td align="right">
<table width="300" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="22"><img src="/administrator/images/$$color_scheme/left_top.gif" alt=""
width="22" height="27"></td>
<td width="22" background="/administrator/images/$$color_scheme/middle_top.gif">
<img src="/administrator/images/$$color_scheme/pfeil.gif" alt="" width="20"
height="22"></td>
<td background="/administrator/images/$$color_scheme/middle_top.gif" align="left"
valign="middle" class="header">AddOn: uptime</td>
<td align="right" width="22"><img src=
"/administrator/images/$$color_scheme/right_top.gif" alt="" width="22" height=
"27"></td>
</tr>
</table>
</td>
</tr>
</table>
<table width="90%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td width="25" height="25"><img src="/administrator/images/$$color_scheme/top_left.gif" alt=""
width="25" height="25"></td>
<td background="/administrator/images/$$color_scheme/top_middle.gif" align="center"><img src=
"/administrator/images/$$color_scheme/top_middle.gif" alt="" width="25" height="25"></td>
<td width="25" height="25" align="right"><img src=
"/administrator/images/$$color_scheme/top_right.gif" alt="" width="25" height="25"></td>
</tr>
<tr>
<td bgcolor="#FFFFFF" width="25"> </td>
<td bgcolor="#FFFFFF" align="center" valign="top">
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td bgcolor="#FFFFFF" align="left">
<pre>$$addon_data1</pre>
</td>
</tr>
</table>
</td>
<td bgcolor="#FFFFFF" width="25" rowspan="2"> </td>
</tr>
</table>
</body>
</html>
- Erzeuge /opt/pdadmin/www/administrator/addon_uptime.cgi (-rwsr-xr-x root root - man beachte das suid-Bit !) mit folgendem Inhalt.
ZitatAlles anzeigen#!/usr/local/bin/perl -w
####
#### PD-Admin Add-On: Show Uptime
#### miko 3/2005
####
use CGI ':standard';
use DBI;
use strict;
use vars qw($dsn $user $password $color_scheme $color_scheme_administrator);
do "/opt/pdadmin/etc/pdadmin.conf" or die "Can't read configuration: $!";
####
#### Korrekte Session ueberpruefen
####
unless (defined $ENV{REQUEST_URI}) {die "no request url available!"};
$ENV{REQUEST_URI} =~ m/\S*\/(\w*)\/addon_uptime.cgi$/;
my $SessionID = $1;
my $dbh = DBI->connect($dsn,$user,$password) or die "can't connect!";
my $query = "select time from sessions where session='$SessionID' limit 1";
my $sth = $dbh->prepare($query) or die "cannot prepare query '$query'";
my $rv = $sth->execute or die "cannot execute query '$query'";
my $myTime = $sth->fetchrow;
$sth->finish();
$dbh->disconnect();
$myTime or die "session not found!";
####
#### Html-Template parsen und die eigentlichen Daten ausgeben
####
my $addon_data1 = `/usr/bin/top b n 1`;
my $html_data = `cat /opt/pdadmin/www/addons/addons.uptime.main.html`;
my $Color = 'blue';
if (defined $color_scheme and length $color_scheme)
{$Color = $color_scheme;}
elsif (defined $color_scheme_administrator and length $color_scheme_administrator )
{$Color = $color_scheme_administrator};
$html_data =~ s/\$\$color_scheme/$Color/g;
$html_data =~ s/\$\$addon_data1/$addon_data1/g;
print header;
print $html_data;
exit
- Erzeuge (oder ändere) /opt/pdadmin/etc/administrator_menu_individual.conf (-rw-r--r-- root root) mit folgendem Inhalt.
Zitat$links{610}{name}{de} = 'Add-Ons';
$links{610}{name}{en} = 'Add-Ons';
$links{610}{sublinks}{100}{name}{de} = 'Uptime';
$links{610}{sublinks}{100}{name}{en} = 'Uptime';
$links{610}{sublinks}{100}{url} = 'addon_uptime.cgi';
$links{610}{sublinks}{100}{target} = 'mainFrame';
Und das sollte es gewesen sein... :wink: