pdadmin-forum

pdadmin-forum » Information » Add-Ons » [Fertiggestellt] Addon: mySql-Check » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Addon: mySql-Check
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
miko93
Moderator


images/avatars/avatar-2.gif

Dabei seit: 08.09.2004
Beiträge: 999
Herkunft: Regensburg, Germany

Addon: mySql-Check Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Keine Diskussion vorhanden. Bei Bedarf bitte erstellen.

Auf Grund der Anregung in einem anderen Thread nun ein AddOn, mit dem man aus PD-Admin heraus die mySql-Datenbank überprüfen und optimieren kann.

Update 11.11. (nein, nicht 11 Uhr 11):
Unser "Mod-Moderator" Michael hat mich auf eine Idee gebracht, um die bisher vorhandene "Tainted"-Warnmeldung von Perl zu verhindern. Das scheint jetzt zu funktionieren. Der Code wurde angepasst.



-rwsr-xr-x 1 root root /opt/pdadmin/www/administrator/addon_mysql.cgi

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
#!/usr/local/bin/perl -w -U

####
#### PD-Admin Add-On: mySql checking
#### miko 10/2005 + 11/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_mysql.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();

$myTime or die "session not found!";

####
#### Session Time aktualisieren
####

my $time = time;

$query  = "Update sessions set time ='$time' where session='$SessionID'";
$sth    = $dbh->prepare($query) or die "cannot prepare query '$query'";
$rv     = $sth->execute or die "cannot execute query '$query'";
$sth->finish;

####
#### Version anzeigen
####

$query = "select version()";
$sth   = $dbh->prepare($query) or die "cannot prepare query '$query'";
$rv    = $sth->execute or die "cannot execute query '$query'";
my $data1 = $sth->fetchrow;
$sth->finish;

$dbh->disconnect();

####
#### Geforderte Aktionen durchführen
####

my $mcg = CGI->new;
my $action = $mcg->param('action') || '';

my $pw = `cat /opt/pdadmin/etc/mysql_rootpw.conf 2>/dev/null`;

# Variable "untainted" machen, um spaetere Fehlermeldungen zu verhindern
$pw =~ m/(.*)$/;
$pw = $1;

# Aktionen ausfuehren
my $data2 = '';
if ($action eq '1')
{ $data2 = `export TERM=dumb; /usr/local/pd-admin2/bin/mysqlcheck -ec -A -uroot -p$pw`; }
elsif ($action eq '2')
{ $data2 = `export TERM=dumb; /usr/local/pd-admin2/bin/mysqlcheck -eo -A -uroot -p$pw`; }

####
#### Html-Template parsen und die eigentlichen Daten ausgeben
####

my $html_data = `cat /opt/pdadmin/www/addons/addons.mysql.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/\$\$form_data1/$data1/g;
$html_data =~ s/\$\$form_data2/$data2/g;
$html_data =~ s/\$\$form_link/$ENV{REQUEST_URI}/g;
$html_data =~ s/\$\$color_scheme/$Color/g;

print header;
print $html_data;

exit


-rw-r--r-- 1 root root /opt/pdadmin/www/addons/addons.mysql.main.html

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
<!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: mySql Check</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">&nbsp;</td>
<td bgcolor="#FFFFFF" align="center" valign="top">

<table  border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td bgcolor="#FFFFFF" align="center">

<!-- Formular-Daten -->

<center>mySql Version: <b>$$form_data1</b></center><br>
<br>

<form action="$$form_link" method="post" target="">
<input type="hidden" name="action" value="1">
<input style="width:200px;" type="submit" value="Check mySql Database" >
</form>

<form action="$$form_link" method="post" target="">
<input type="hidden" name="action" value="2">
<input style="width:200px;" type="submit" value="Optimize mySql Database">
</form>

<center><pre>$$form_data2</pre></center><br>
<!-- Formular-Daten -->

</td>
</tr>
</table>

</td>
<td bgcolor="#FFFFFF" width="25" rowspan="2">&nbsp;</td>
</tr>
</table>
</body>
</html>


Und wie immer nun noch in der /opt/pdadmin/etc/administrator_menu_individual.conf (-rw-r--r-- root root)

code:
1:
2:
3:
4:
$links{610}{sublinks}{140}{name}{de} = 'mySql Check';
$links{610}{sublinks}{140}{name}{en} = 'mySql Check';
$links{610}{sublinks}{140}{url}      = 'addon_mysql.cgi';
$links{610}{sublinks}{140}{target}   = 'mainFrame';



Viel Spass!

__________________
Frage beantwortet? Problem gelöst? Dann markiert euren Beitrag bitte als [erledigt].
14.10.2005 22:29 miko93 ist offline E-Mail an miko93 senden Homepage von miko93 Beiträge von miko93 suchen Nehme miko93 in Deine Freundesliste auf
miko93
Moderator


images/avatars/avatar-2.gif

Dabei seit: 08.09.2004
Beiträge: 999
Herkunft: Regensburg, Germany

Themenstarter Thema begonnen von miko93
Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Leichte Code-Anpassung, um Warnmeldung im httpd-Log zu vermeiden.
Siehe oben. :idea:

__________________
Frage beantwortet? Problem gelöst? Dann markiert euren Beitrag bitte als [erledigt].
11.11.2005 14:12 miko93 ist offline E-Mail an miko93 senden Homepage von miko93 Beiträge von miko93 suchen Nehme miko93 in Deine Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
pdadmin-forum » Information » Add-Ons » [Fertiggestellt] Addon: mySql-Check

Impressum | Team | Hilfe

Forensoftware: Burning Board, entwickelt von WoltLab GmbH    |    Design entwickelt von You-Online.de