Subversion Repositories cryptochat

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 daniel-mar 1
<?php
2
 
3
require 'DirectoryHashCalculator.class.php';
4
 
5
define('VER', '09.03.2010 21:30');
6
 
7
error_reporting(E_ALL | E_NOTICE);
8
 
9
$path = dirname($_SERVER['SCRIPT_NAME']);
10
 
11
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
12
                "http://www.w3.org/TR/html4/loose.dtd">
13
 
14
<html>
15
 
16
<head>
17
        <title>Index f&uuml;r <?php echo $path; ?></title>
18
</head>
19
 
20
<body>
21
 
22
<h1>Index f&uuml;r <?php echo $path; ?></h1>
23
 
24
<hr>
25
 
26
<br><table border="1" width="100%">
27
<tr>
28
        <td><b>Dateiname</b></td>
29
        <td><b>Hochgeladen / Aktualisiert</b> (Sort)</td>
30
        <td align="right"><b>Dateigr&ouml;&szlig;e</b></td>
31
        <td align="right"><b>MD5-Hash</b></td>
32
</tr><?php
33
 
34
$outarray = array();
35
$sizesum = 0;
36
$filesum = 0;
37
$hash_calculator = new DirectoryHashCalculator();
38
dir_rekursiv('', $outarray, $sizesum, $filesum, $hash_calculator);
39
ksort($outarray);
40
 
41
foreach ($outarray as $value) {
42
        echo $value;
43
}
44
 
45
?>
46
</table><br>
47
 
48
<?php
49
 
50
 
51
$filesum = number_format($filesum, 0, ',', '.');
52
$sizesum = number_format($sizesum, 0, ',', '.');
53
 
54
/*
55
 
56
Note:
57
        In this solution, ".*" and "index.html" (this script) and
58
        "DirectoryHashCalculator.class.php" (required by this script)
59
        are not calculated in because dir_rekursiv() ignored them,
60
        so the Directory-Hash-Result may differ from other applications which
61
        implement it.
62
 
63
*/
64
 
65
$directory_hash = $hash_calculator->calculateDirectoryHash();
66
$hash_alg = $hash_calculator->getVersionDescription();
67
 
68
echo '<p><code>Berechnung abgeschlossen am '.date('Y-m-d H:i:s \G\M\TO').'<br>';
69
echo "$filesum Dateien mit $sizesum Byte Gr&ouml;&szlig;e.<br>";
70
echo "Directory-Hash ($hash_alg): $directory_hash.</code></p>";
71
echo '<hr>';
72
echo '<p><i>Directory Listing Script Version '.VER.' &copy; 2010 <a href="http://www.viathinksoft.de/">ViaThinkSoft</a>.</i></p>';
73
 
74
?>
75
 
76
</body>
77
 
78
</html><?php
79
 
80
// Ref: http://www.php.net/manual/de/function.urlencode.php#96256
81
function encode_full_url($url) {
82
        $url = urlencode($url);
83
        $url = str_replace("%2F", "/", $url);
84
        $url = str_replace("%3A", ":", $url);
85
        $url = str_replace("+", "%20", $url); // Neu
86
        return $url;
87
}
88
 
89
function dir_rekursiv($verzeichnis, &$outarray, &$sizesum, &$filesum, $hash_calculator) {
90
        if ($verzeichnis == '') $verzeichnis = './';
91
 
92
        $handle = opendir($verzeichnis);
93
        while ($datei = readdir($handle))
94
        {
95
                if (($datei != '.') && ($datei != '..'))
96
                {
97
                        $file = $verzeichnis.$datei;
98
                        if (is_dir($file)) // Wenn Verzeichniseintrag ein Verzeichnis ist
99
                        {
100
                                // Erneuter Funktionsaufruf, um das aktuelle Verzeichnis auszulesen
101
                                dir_rekursiv($file.'/', $outarray, $sizesum, $filesum, $hash_calculator);
102
                        } else {
103
                                // Wenn Verzeichnis-Eintrag eine Datei ist, diese ausgeben
104
 
105
                                if (substr($file, 0, 2) == './') {
106
                                        $file = substr($file, 2, strlen($file)-2); // './' entfernen
107
                                }
108
 
109
                                if (($file != 'index.php') &&
110
                                        ($file != 'DirectoryHashCalculator.class.php') &&
111
                                        (substr($file, 0, 1) != '.')) {
112
                                                $filesize = filesize($file);
113
                                                $sizesum += $filesize;
114
                                                $filesum++;
115
                                                $sizeformat = number_format($filesize, 0, ',', '.');
116
                                                $file_md5 = $hash_calculator->addFile($file);
117
                                                if ($file_md5 === false) $file_md5 = '<b>ERROR!</b>';
118
                                                $mtime = filemtime($file);
119
                                                $date = date('Y-m-d H:i:s \G\M\TO', $mtime);
120
                                                if (!isset($outarray[$mtime])) $outarray[$mtime] = '';
121
                                        $outarray[$mtime] .= '<tr>
122
        <td><a href="'.encode_full_url($file).'" target="_blank">'.str_replace('/', ' / ', $file).'</a></td>
123
        <td>'.$date.'</td>
124
        <td align="right">'.$sizeformat.'</td>
125
        <td align="right"><code>'.$file_md5.'</code></td>
126
</tr>';
127
                                        }
128
                        }
129
                }
130
        }
131
        closedir($handle);
132
}
133
 
134
?>