509 lines
15 KiB
PHP
509 lines
15 KiB
PHP
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<!--
|
|
TODO:
|
|
- Löschbestätigung mit Passwort als 2. Schritt
|
|
- Ursprünglichen Dateinamen in der Liste zeigen (erfordert neue Tabellenspalte)
|
|
- Refactoring
|
|
-->
|
|
|
|
<?php
|
|
|
|
// Das ist das Passwort zum Löschen von Dateien
|
|
$passwort = 'rep ist toll';
|
|
|
|
// Das ist die Dateiliste. Bitte keine Änderungen vornehmen!
|
|
/* Filelist:
|
|
aTest.txt//Beschreibung1
|
|
bTest.txt//Beschreibung2
|
|
cTest.txt//Beschreibung3
|
|
:Filelist */
|
|
|
|
?>
|
|
|
|
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
|
|
|
|
<style type="text/css">
|
|
<!--
|
|
body { font-family: "Trebuchet MS", Georgia, serif; }
|
|
a { color:#0000CC; }
|
|
table { border-collapse: collapse; }
|
|
th { text-align: left; background-color:#EEEEEE; font-size: 80%; }
|
|
|
|
.menu { font-size: 80%; }
|
|
.smallsize { font-size: 80%; }
|
|
-->
|
|
</style>
|
|
|
|
<title>Öffentliches Recht</title>
|
|
|
|
</head>
|
|
<body>
|
|
|
|
<?php // Hilfsfunktionen
|
|
|
|
$totalFiles = 0;
|
|
$totalFileSize = 0;
|
|
|
|
function readFileList() {
|
|
|
|
global $totalFiles;
|
|
global $totalFileSize;
|
|
$lines = file('index.php');
|
|
|
|
if ($lines) {
|
|
|
|
$i = 0;
|
|
|
|
while ((!strstr(substr($lines[$i],0,14), "* Filelist:")) and ($i <= count($lines))) // Lies bis zur Dateiliste
|
|
{
|
|
$i++;
|
|
}
|
|
|
|
if (strstr(substr($lines[$i],0,14), "* Filelist:")) {
|
|
|
|
// Dateiliste aus index.php lesen
|
|
$i++;
|
|
$j = 0;
|
|
|
|
while (!strstr(substr($lines[$i+$j],0,14), ":Filelist *")) {
|
|
|
|
$liste[$j] = explode("//", $lines[$i+$j]);
|
|
$liste[$j][1] = preg_replace("/\r|\n/s", "", $liste[$j][1]); // Zeilenumbruch hinter Beschreibung entfernen
|
|
|
|
/*
|
|
$descPos = strpos($lines[$i+$j], '//');
|
|
$liste[$j][0] = substr($lines[$i+$j], 0, $descPos);
|
|
|
|
// Zeilenumbruch hinter Beschreibung entfernen
|
|
$liste[$j][1] = preg_replace("/\r|\n/s", "", substr($lines[$i+$j], $descPos+2));
|
|
*/
|
|
|
|
$liste[$j][2] = filesize($liste[$j][0]);
|
|
|
|
$totalFiles++;
|
|
$totalFileSize += $liste[$j][2];
|
|
|
|
$j++;
|
|
}
|
|
return $liste;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
function getSizeAsString($size) {
|
|
if ($size < 2) {
|
|
return $size." Byte";
|
|
}
|
|
else if ($size < 1024) {
|
|
return $size." Bytes";
|
|
}
|
|
else if ($size < 1048576) {
|
|
return round(($size/1024), 2)." KB";
|
|
}
|
|
else {
|
|
return round(($size/1048576), 2)." MB";
|
|
}
|
|
}
|
|
|
|
function convertFilename($str) {
|
|
$out = $str;
|
|
$ersetzungen[chr(167)] = "P."; // Spezielle Juristen-Ersetzung: Paragraphenzeichen
|
|
$ersetzungen[chr(196)] = "Ae";
|
|
$ersetzungen[chr(214)] = "Oe";
|
|
$ersetzungen[chr(220)] = "Ue";
|
|
$ersetzungen[chr(223)] = "ss";
|
|
$ersetzungen[chr(228)] = "ae";
|
|
$ersetzungen[chr(246)] = "oe";
|
|
$ersetzungen[chr(252)] = "ue";
|
|
$out = strtr($out,$ersetzungen);
|
|
$out = eregi_replace("[^[:alnum:]_\.-]","_",$out); // TODO: mit preg_replace() ersetzen
|
|
return $out;
|
|
}
|
|
|
|
?>
|
|
|
|
<?php
|
|
|
|
//-- Hinzufügen ------------------------------------------------------------------------------------
|
|
|
|
if ($_GET['action'] == 'add') {
|
|
|
|
echo "<p class=\"menu\"><a href=\"index.php\">zurück zur Liste</a></p>\n";
|
|
|
|
// massive Login-Versuche abblocken
|
|
sleep(1);
|
|
|
|
// Passwort checken
|
|
if ($_POST['passwort'] == $passwort) {
|
|
|
|
$already_exists = file_exists($_FILES['datei']['name']);
|
|
|
|
if (($already_exists) and (!$overwrite == "on")) {
|
|
echo "<p><b>Fehler:</b> Datei mit Namen <i>" . htmlspecialchars($_FILES['datei']['name']) . "</i> ist bereits vorhanden. (Überschreiben abgeschaltet.)</p>\n";
|
|
}
|
|
else {
|
|
|
|
$filename = convertFilename($_FILES['datei']['name']);
|
|
|
|
if (move_uploaded_file($_FILES['datei']['tmp_name'], $filename)) {
|
|
|
|
echo "<p>Die Datei <i>" . htmlspecialchars($_FILES['datei']['name']) . "</i> wurde übertragen.</p>\n";
|
|
|
|
$liste = readFileList();
|
|
|
|
if ($liste !== false) {
|
|
|
|
if ($liste !== NULL) {
|
|
foreach($liste as $v) $s[] = $v[0];
|
|
$idx = array_search($filename, $s);
|
|
}
|
|
|
|
// FUNKY!
|
|
if (gettype($idx) == 'integer') { // Dateiname bereits in Liste enthalten
|
|
|
|
$lines = file('index.php');
|
|
|
|
if ($lines) {
|
|
|
|
$fp = fopen("index.php","w+"); // Index-Datei zum Schreiben öffnen
|
|
$i = 0;
|
|
|
|
while (!strstr(substr($lines[$i],0,14), "* Filelist:")) {
|
|
fputs($fp, $lines[$i]);
|
|
$i++;
|
|
}
|
|
|
|
while (!strstr(substr($lines[$i], 0, strpos($lines[$i], '//')), $filename)) {
|
|
fputs($fp, $lines[$i]);
|
|
$i++;
|
|
}
|
|
|
|
$i++;
|
|
fputs($fp, $filename."//".$_POST['beschreibung']."\n");
|
|
|
|
while ($i < count($lines)) {
|
|
fputs($fp, $lines[$i]);
|
|
$i++;
|
|
}
|
|
|
|
fclose($fp);
|
|
|
|
echo "<p>Tabelleneintrag wurde aktualisiert.</p>\n";
|
|
}
|
|
else {
|
|
echo "<p><b>Fehler:</b> <i>index.php</i> wurde nicht gefunden!</p>\n";
|
|
}
|
|
}
|
|
else { // Dateiname noch nicht in Liste enthalten
|
|
|
|
$lines = file('index.php');
|
|
|
|
if ($lines) {
|
|
|
|
$fp = fopen("index.php","w+"); // Index-Datei zum Schreiben öffnen
|
|
$i = 0;
|
|
|
|
while (!strstr(substr($lines[$i],0,14), "* Filelist:")) {
|
|
fputs($fp, $lines[$i]);
|
|
$i++;
|
|
}
|
|
|
|
while (!strstr($lines[$i], "*/")) {
|
|
fputs($fp, $lines[$i]);
|
|
$i++;
|
|
}
|
|
|
|
fputs($fp, $filename."//".$_POST['beschreibung']."\n");
|
|
|
|
while ($i < count($lines)) {
|
|
fputs($fp, $lines[$i]);
|
|
$i++;
|
|
}
|
|
|
|
fclose($fp);
|
|
echo "<p>Tabelleneintrag wurde erzeugt.</p>\n";
|
|
}
|
|
else {
|
|
echo "<p><b>Fehler:</b> <i>index.php</i> wurde nicht gefunden!</p>\n";
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
echo "<p><b>Fehler:</b> Liste mit Dateien konnte nicht gefunden werden.</p>\n";
|
|
}
|
|
|
|
}
|
|
else {
|
|
echo "<p><b>Fehler:</b> Datei konnte nicht übertragen werden!</p>\n";
|
|
echo "<p>\n";
|
|
print_r($_FILES);
|
|
echo "\n</p>\n";
|
|
}
|
|
}
|
|
}
|
|
else { // Passwort falsch
|
|
echo "<p><b>Fehler:</b> Falsches Passwort!</p>\n";
|
|
}
|
|
}
|
|
|
|
//-- Passwortabfrage vor Löschen -------------------------------------------------------------------
|
|
|
|
else if ($_GET['action'] == 'deleteCheck') {
|
|
|
|
echo "<p class=\"menu\"><a href=\"index.php\">zurück zur Liste</a></p>\n";
|
|
|
|
if (isset($_REQUEST['delButton'])) {
|
|
|
|
echo "<div style=\"margin:2em\">\n";
|
|
echo " <b>Auswahl löschen:</b><br>\n";
|
|
echo " <form action=\"index.php?action=delete\" method=\"post\">\n";
|
|
echo " <table>\n";
|
|
|
|
reset($_REQUEST['delButton']);
|
|
foreach ($_REQUEST['delButton'] as $idx => $filename) {
|
|
echo " <tr>\n";
|
|
echo " <td>".$filename."</td>\n";
|
|
echo " <td align=\"right\"><input type=\"checkbox\" name=\"delButton[]\" value=\"".$filename."\" checked /></td>\n";
|
|
echo " </tr>\n";
|
|
}
|
|
|
|
echo " <tr>\n";
|
|
echo " <td colspan=\"2\">\n";
|
|
echo " <br><br>\n";
|
|
echo " <span class=\"menu\">Passwort:</span>\n";
|
|
echo " <input name=\"passwort\" type=\"password\" size=\"10\" /><br>\n";
|
|
echo " </td>\n";
|
|
echo " </tr>\n";
|
|
echo " <tr>\n";
|
|
echo " <td class=\"menu\" colspan=\"2\" align=\"right\">\n";
|
|
echo " <input type=\"submit\" value=\"";
|
|
if (count($_REQUEST['delButton']) > 1) {
|
|
echo "Dateien löschen\" />\n";
|
|
}
|
|
else {
|
|
echo "Datei löschen\" />\n";
|
|
}
|
|
echo " </td>\n";
|
|
echo " </tr>\n";
|
|
echo " </table>\n";
|
|
echo " </form>\n";
|
|
echo "</div>\n";
|
|
|
|
} else {
|
|
echo "<p><b>Fehler:</b> Keine Datei ausgewählt.</p>\n";
|
|
}
|
|
|
|
}
|
|
|
|
//-- Löschen ---------------------------------------------------------------------------------------
|
|
|
|
else if ($_GET['action'] == 'delete') {
|
|
|
|
echo "<p class=\"menu\"><a href=\"index.php\">zurück zur Liste</a></p>\n";
|
|
|
|
// massive Login-Versuche abblocken
|
|
sleep(1);
|
|
|
|
// Passwort checken
|
|
if ($_POST['passwort'] == $passwort) {
|
|
|
|
if (isset($_REQUEST['delButton'])) {
|
|
|
|
reset($_REQUEST['delButton']);
|
|
|
|
foreach ($_REQUEST['delButton'] as $idx => $filename) {
|
|
|
|
echo "<p>Lösche <i>$filename</i>...</p>\n";
|
|
unlink($filename);
|
|
|
|
$lines = file('index.php');
|
|
|
|
if ($lines) {
|
|
|
|
$fp = fopen("index.php","w+"); // Index-Datei zum Schreiben öffnen
|
|
$i = 0;
|
|
|
|
while (!strstr(substr($lines[$i],0,14), "* Filelist:")) {
|
|
fputs($fp, $lines[$i]);
|
|
$i++;
|
|
}
|
|
|
|
while (!strstr(substr($lines[$i], 0, strpos($lines[$i], '//')), $filename)) {
|
|
fputs($fp, $lines[$i]);
|
|
$i++;
|
|
}
|
|
|
|
$i++;
|
|
|
|
while ($i < count($lines)) {
|
|
fputs($fp, $lines[$i]);
|
|
$i++;
|
|
}
|
|
|
|
fclose($fp);
|
|
echo "<p>Tabelleneintrag wurde entfernt.</p>\n";
|
|
}
|
|
else {
|
|
echo "<p><b>Fehler:</b> <i>index.php</i> wurde nicht gefunden!</p>\n";
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
echo "<p><b>Fehler:</b> Keine Dateien ausgewählt.</p>\n";
|
|
}
|
|
}
|
|
else { // Passwort falsch
|
|
echo "<p><b>Fehler:</b> Falsches Passwort!</p>\n";
|
|
}
|
|
}
|
|
|
|
//-- Anzeigen --------------------------------------------------------------------------------------
|
|
|
|
else {
|
|
?>
|
|
|
|
<p class="menu"><a href="../index.html">zurück zur Startseite</a></p>
|
|
|
|
<div align="center">
|
|
<form action="index.php?action=deleteCheck" method="post">
|
|
|
|
<table cellspacing="5" cellpadding="5" border="1">
|
|
<tr>
|
|
<th><a href="index.php?action=<?php if (($_GET['action'] == 'ascByName') || ($_GET['action'] == '')) echo "descByName"; else echo 'ascByName';?>">Datei</a></th>
|
|
<th><a href="index.php?action=<?php if ($_GET['action'] == 'ascByDescription') echo "descByDescription"; else echo 'ascByDescription';?>">Beschreibung</a></th>
|
|
<th><a href="index.php?action=<?php if ($_GET['action'] == 'ascBySize') echo "descBySize"; else echo 'ascBySize';?>">Größe</a></th>
|
|
<th>Auswahl</th>
|
|
</tr>
|
|
<?php
|
|
|
|
$liste = readFileList();
|
|
|
|
if ($liste !== false) {
|
|
|
|
if (isset($liste)) {
|
|
|
|
// Liste sortieren
|
|
if ($_GET['action'] == 'ascByDescription') {
|
|
foreach($liste as $v) $s[] = $v[1];
|
|
array_multisort($s, SORT_ASC, $liste);
|
|
}
|
|
else if ($_GET['action'] == 'descByDescription') {
|
|
foreach($liste as $v) $s[] = $v[1];
|
|
array_multisort($s, SORT_DESC, $liste);
|
|
}
|
|
else if ($_GET['action'] == 'ascBySize') {
|
|
foreach($liste as $v) $s[] = $v[2];
|
|
array_multisort($s, SORT_ASC, $liste);
|
|
}
|
|
else if ($_GET['action'] == 'descBySize') {
|
|
foreach($liste as $v) $s[] = $v[2];
|
|
array_multisort($s, SORT_DESC, $liste);
|
|
}
|
|
else if ($_GET['action'] == 'descByName') {
|
|
foreach($liste as $v) $s[] = $v[0];
|
|
array_multisort($s, SORT_DESC, $liste);
|
|
}
|
|
else {
|
|
sort($liste);
|
|
}
|
|
|
|
// Liste ausgeben
|
|
foreach ($liste as $eintrag) {
|
|
echo " <tr>\n";
|
|
echo " <td><a href=\"". $eintrag[0] ."\">". $eintrag[0] ."</a></td>\n";
|
|
echo " <td>".$eintrag[1]."</td>\n";
|
|
echo " <td align=\"right\"><span class=\"smallsize\">".getSizeAsString($eintrag[2])."</span></td>\n";
|
|
echo " <td align=\"center\"><input type=\"checkbox\" name=\"delButton[]\" value=\"".$eintrag[0]."\" /></td>\n";
|
|
echo " </tr>\n";
|
|
}
|
|
}
|
|
|
|
}
|
|
else {
|
|
echo "<p><b>Fehler:</b> Liste mit Dateien konnte nicht gefunden werden.</p>\n";
|
|
}
|
|
|
|
?>
|
|
<tr>
|
|
<td class="menu" colspan="4" align="right">
|
|
<input type="submit" value="Ausgewählte Dateien löschen" style="font-size:105%" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="4" align="center" class="smallsize">
|
|
<?php echo $totalFiles; ?> Dateien, <?php echo getSizeAsString($totalFileSize); ?><br>
|
|
<span style="font-size: 80%">Lister v2.9j</span>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</form>
|
|
</div>
|
|
|
|
<div align="center">
|
|
<table cellspacing="5" cellpadding="5" border="1">
|
|
<tr>
|
|
<td colspan="4">
|
|
<div style="padding:8px">
|
|
<div class="menu">Datei hinzufügen:</div>
|
|
<form action="index.php?action=add" method="post" enctype="multipart/form-data">
|
|
<table border="0" cellpadding="2" class="menu">
|
|
<tr>
|
|
<td>
|
|
Datei:
|
|
</td>
|
|
<td>
|
|
<input name="datei" type="file" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Beschreibung:
|
|
</td>
|
|
<td>
|
|
<input name="beschreibung" type="text" size="30" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>
|
|
<input type="checkbox" name="overwrite" /><span style="font-size:small">bereits vorhandene überschreiben</span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Passwort:
|
|
</td>
|
|
<td>
|
|
<input name="passwort" type="password" size="10" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2" align="right" class="menu">
|
|
<input type="submit" value="Datei hochladen" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</form>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<?php
|
|
}
|
|
?>
|
|
|
|
<div style="position: absolute; top: 8px; right: 5px;">
|
|
<a href="http://validator.w3.org/check?uri=referer"><img border="0" src="http://www.w3.org/Icons/valid-html40" alt="Valid HTML 4.0!" height="31" width="88"></a>
|
|
</div>
|
|
</body>
|
|
</html>
|