Rev 4 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4 | Rev 8 | ||
---|---|---|---|
Line 39... | Line 39... | ||
39 | 39 | ||
40 | if ((@ftp_size($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.'desdir.txt') == -1) || (@ftp_size($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.'moddir.txt') == -1) || (substr($konfiguration['core_directftp']['ftp-verzeichnis'], 0, 1) != '/') || (substr($konfiguration['core_directftp']['ftp-verzeichnis'], strlen($konfiguration['core_directftp']['ftp-verzeichnis'])-1, 1) != '/')) |
40 | if ((@ftp_size($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.'desdir.txt') == -1) || (@ftp_size($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.'moddir.txt') == -1) || (substr($konfiguration['core_directftp']['ftp-verzeichnis'], 0, 1) != '/') || (substr($konfiguration['core_directftp']['ftp-verzeichnis'], strlen($konfiguration['core_directftp']['ftp-verzeichnis'])-1, 1) != '/')) |
41 | $fehler = 1; |
41 | $fehler = 1; |
42 | 42 | ||
43 | if ($fehler) |
43 | if ($fehler) |
44 | die($header.'<b>Fehler</b><br><br>Fehlkonfiguration im FTP-Direktzugriff-Kernmodul! FTP-Zugangsdaten oder -Verzeichnis fehlerhaft bzw. zu geringe Zugriffsrechte! Bitte <a href="'.$_SERVER['PHP_SELF'].'?modul=core_directftp&seite=konfig&vonmodul='.$modul.'">Konfigurationswerte</a> einsehen.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.$modul.'">Zurück</a>'.$footer); |
44 | die($header.'<b>Fehler</b><br><br>Fehlkonfiguration im FTP-Direktzugriff-Kernmodul! FTP-Zugangsdaten oder -Verzeichnis fehlerhaft bzw. zu geringe Zugriffsrechte! Bitte <a href="'.$_SERVER['PHP_SELF'].'?modul=core_directftp&seite=konfig&vonmodul='.urlencode($modul).'">Konfigurationswerte</a> einsehen.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.urlencode($modul).'">Zurück</a>'.$footer); |
45 | } |
45 | } |
46 | 46 | ||
47 | // Los gehts! |
47 | // Los gehts! |
48 | 48 | ||
49 | if ($aktion == 'delete') |
49 | if ($aktion == 'delete') |
50 | { |
50 | { |
51 | // Achtung! Ein Hacker könnte ../ als Design angeben und somit das komplette Designverzeichnis oder mehr rekursiv löschen! |
- | |
52 | if (strpos($modul, '..')) |
- | |
53 | die($header.'<b>Fehler</b><br><br>Der Löschvorgang wurde aufgrund einer Schutzverletzung abgebrochen!<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.$modul.'">Zurück</a>'.$footer); |
- | |
54 | - | ||
55 | // Nun Design über FTP löschen! |
51 | // Nun Design über FTP löschen! |
56 | @ftp_rmdir_rec($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.$entfernen); |
52 | @ftp_rmdir_rec($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.wb_dir_escape($entfernen)); |
57 | if ($conn_id) @ftp_quit($conn_id); |
53 | if ($conn_id) @ftp_quit($conn_id); |
58 | 54 | ||
59 | // Info: MySQL-Daten löschen sich über Autostart automatisch |
55 | // Info: MySQL-Daten löschen sich über Autostart automatisch |
60 | if (!headers_sent()) header('location: '.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.$modul); |
56 | if (!headers_sent()) header('location: '.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.urlencode($modul)); |
61 | } |
57 | } |
62 | 58 | ||
63 | if ($aktion == 'install') |
59 | if ($aktion == 'install') |
64 | { |
60 | { |
65 | // Temp-Verzeichnisnamen finden |
61 | // Temp-Verzeichnisnamen finden |
66 | $uid = 'temp_'.zufall(10); |
62 | $uid = 'temp_'.zufall(10); |
67 | 63 | ||
68 | // Datei in unser Verzeichnis kopieren, sodass wir darauf zugreifen können (für Safe-Mode) |
64 | // Datei in unser Verzeichnis kopieren, sodass wir darauf zugreifen können (für Safe-Mode) |
69 | if (!@ftp_put($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.$modul.'/temp/'.$uid.'.zip', $_FILES['dfile']['tmp_name'], FTP_BINARY)) |
65 | if (!@ftp_put($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'.zip', $_FILES['dfile']['tmp_name'], FTP_BINARY)) |
70 | { |
66 | { |
71 | if ($conn_id) @ftp_quit($conn_id); |
67 | if ($conn_id) @ftp_quit($conn_id); |
72 | die($header.'<b>Fehler</b><br><br>Konnte ZIP-Datei nicht in temporäres Verzeichnis des Modules hineinkopieren (FTP)!.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.$modul.'">Zurück</a>'.$footer); |
68 | die($header.'<b>Fehler</b><br><br>Konnte ZIP-Datei nicht in temporäres Verzeichnis des Modules hineinkopieren (FTP)!.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.urlencode($modul).'">Zurück</a>'.$footer); |
73 | } |
69 | } |
74 | @ftp_site($conn_id, 'CHMOD 0644 '.$konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.$modul.'/temp/'.$uid.'.zip'); |
70 | @ftp_site($conn_id, 'CHMOD 0644 '.$konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'.zip'); |
75 | 71 | ||
76 | // Temporäres Verzeichnis für Extraktion erstellen |
72 | // Temporäres Verzeichnis für Extraktion erstellen |
77 | @ftp_rmdir_rec($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.$modul.'/temp/'.$uid.'/'); |
73 | @ftp_rmdir_rec($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'/'); |
78 | @ftp_mkdir($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.$modul.'/temp/'.$uid.'/'); |
74 | @ftp_mkdir($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'/'); |
79 | @ftp_site($conn_id, 'CHMOD 0755 '.$konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.$modul.'/temp/'.$uid.'/'); |
75 | @ftp_site($conn_id, 'CHMOD 0755 '.$konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'/'); |
80 | 76 | ||
81 | // Entpacken zum Personal WebBase-Temp-Verzeichnis |
77 | // Entpacken zum Personal WebBase-Temp-Verzeichnis |
82 | if (file_exists('modules/'.$modul.'/dUnzip2.inc.php')) |
78 | if (file_exists('modules/'.wb_dir_escape($modul).'/dUnzip2.inc.php')) |
83 | include('modules/'.$modul.'/dUnzip2.inc.php'); |
79 | include('modules/'.wb_dir_escape($modul).'/dUnzip2.inc.php'); |
84 | $zip = new dUnzip2('modules/'.$modul.'/temp/'.$uid.'.zip'); |
80 | $zip = new dUnzip2('modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'.zip'); |
85 | $zip->unzipAll('modules/'.$modul.'/temp/'.$uid.'/', '', true); |
81 | $zip->unzipAll('modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'/', '', true); |
86 | $zip->close(); |
82 | $zip->close(); |
87 | 83 | ||
88 | // Temporäre Daten löschen |
84 | // Temporäre Daten löschen |
89 | @ftp_delete($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.$modul.'/temp/'.$uid.'.zip'); |
85 | @ftp_delete($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'.zip'); |
90 | 86 | ||
91 | // Wenn Verzeichnis leer ist, lässt es sich löschen. -> Fehler |
87 | // Wenn Verzeichnis leer ist, lässt es sich löschen. -> Fehler |
92 | $verzinh = @ftp_nlist($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.$modul.'/temp/'.$uid.'/'); |
88 | $verzinh = @ftp_nlist($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'/'); |
93 | if (count($verzinh) == 0) |
89 | if (count($verzinh) == 0) |
94 | { |
90 | { |
95 | @ftp_rmdir_rec($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.$modul.'/temp/'.$uid.'/'); |
91 | @ftp_rmdir_rec($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'/'); |
96 | if ($conn_id) @ftp_quit($conn_id); |
92 | if ($conn_id) @ftp_quit($conn_id); |
97 | die($header.'<b>Fehler</b><br><br>Dekompression entweder komplett misslungen oder ZIP-Datei war leer.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.$modul.'">Zurück</a>'.$footer); |
93 | die($header.'<b>Fehler</b><br><br>Dekompression entweder komplett misslungen oder ZIP-Datei war leer.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.urlencode($modul).'">Zurück</a>'.$footer); |
98 | } |
94 | } |
99 | 95 | ||
100 | // Verzeichnis verschieben |
96 | // Verzeichnis verschieben |
101 | if (!@ftp_rename($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.$modul.'/temp/'.$uid.'/', $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.$uid.'/')) |
97 | if (!@ftp_rename($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'/', $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.wb_dir_escape($uid).'/')) |
102 | { |
98 | { |
103 | @ftp_rmdir_rec($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.$modul.'/temp/'.$uid.'/'); |
99 | @ftp_rmdir_rec($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'modules/'.wb_dir_escape($modul).'/temp/'.wb_dir_escape($uid).'/'); |
104 | if ($conn_id) @ftp_quit($conn_id); |
100 | if ($conn_id) @ftp_quit($conn_id); |
105 | die($header.'<b>Fehler</b><br><br>Das Verschieben des Verzeichnisses ist misslungen!<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.$modul.'">Zurück</a>'.$footer); |
101 | die($header.'<b>Fehler</b><br><br>Das Verschieben des Verzeichnisses ist misslungen!<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.urlencode($modul).'">Zurück</a>'.$footer); |
106 | } |
102 | } |
107 | 103 | ||
108 | // Richtigen Dateinamen finden |
104 | // Richtigen Dateinamen finden |
109 | $fn = 'design/'.$uid.'/ordnername.txt'; |
105 | $fn = 'design/'.wb_dir_escape($uid).'/ordnername.txt'; |
110 | $fp = @fopen($fn, 'r'); |
106 | $fp = @fopen($fn, 'r'); |
111 | $inhalt = @fread($fp, @filesize($fn)); |
107 | $inhalt = @fread($fp, @filesize($fn)); |
112 | @fclose($fp); |
108 | @fclose($fp); |
113 | 109 | ||
114 | // Datei ordnername.txt im Zielmodul löschen |
110 | // Datei ordnername.txt im Zielmodul löschen |
115 | @ftp_delete ($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.$uid.'/ordnername.txt'); |
111 | @ftp_delete ($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.wb_dir_escape($uid).'/ordnername.txt'); |
116 | 112 | ||
117 | if ($inhalt != '') |
113 | if ($inhalt != '') |
118 | { |
114 | { |
119 | // Schutzverletzung im Ordnernamen? |
115 | // Schutzverletzung im Ordnernamen? |
120 | if (strpos($inhalt, '..')) |
116 | if (strpos($inhalt, '..')) |
Line 122... | Line 118... | ||
122 | if ($conn_id) @ftp_quit($conn_id); |
118 | if ($conn_id) @ftp_quit($conn_id); |
123 | die($header.'<b>Fehler</b><br><br>Das Design konnte zwar installiert werden, jedoch gab es bei der Umbenennung des Ordners eine Schutzverletzung!'.$footer); |
119 | die($header.'<b>Fehler</b><br><br>Das Design konnte zwar installiert werden, jedoch gab es bei der Umbenennung des Ordners eine Schutzverletzung!'.$footer); |
124 | } |
120 | } |
125 | 121 | ||
126 | // Gibt es schon ein Design mit dem Titel? Dann Alternativenamen finden |
122 | // Gibt es schon ein Design mit dem Titel? Dann Alternativenamen finden |
127 | if (@ftp_chdir($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.$inhalt.'/')) |
123 | if (@ftp_chdir($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.wb_dir_escape($inhalt).'/')) |
128 | { |
124 | { |
129 | @ftp_cdup($conn_id); |
125 | @ftp_cdup($conn_id); |
130 | $zusatz = 2; |
126 | $zusatz = 2; |
131 | $problem = true; |
127 | $problem = true; |
132 | while (@ftp_chdir($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.$inhalt.$zusatz.'/')) |
128 | while (@ftp_chdir($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.wb_dir_escape($inhalt).$zusatz.'/')) |
133 | { |
129 | { |
134 | @ftp_cdup($conn_id); |
130 | @ftp_cdup($conn_id); |
135 | $zusatz++; |
131 | $zusatz++; |
136 | } |
132 | } |
137 | } |
133 | } |
Line 140... | Line 136... | ||
140 | $problem = false; |
136 | $problem = false; |
141 | $zusatz = ''; |
137 | $zusatz = ''; |
142 | } |
138 | } |
143 | 139 | ||
144 | // Ordner umbenennen |
140 | // Ordner umbenennen |
145 | $erfolg = @ftp_rename ($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.$uid, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.$inhalt.$zusatz); |
141 | $erfolg = @ftp_rename ($conn_id, $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.wb_dir_escape($uid), $konfiguration['core_directftp']['ftp-verzeichnis'].'design/'.wb_dir_escape($inhalt).$zusatz); |
146 | 142 | ||
147 | // FTP-Verbindung trennen |
143 | // FTP-Verbindung trennen |
148 | if ($conn_id) @ftp_quit($conn_id); |
144 | if ($conn_id) @ftp_quit($conn_id); |
149 | 145 | ||
150 | // Wurde der Ordner nicht umbenannt? (z.B. Wenn der Ordnertitel nicht für Dateisystem zulässig war) |
146 | // Wurde der Ordner nicht umbenannt? (z.B. Wenn der Ordnertitel nicht für Dateisystem zulässig war) |
151 | if (!$erfolg) |
147 | if (!$erfolg) |
152 | die($header.'<b>Information</b><br><br>Das Design konnte zwar installiert werden, jedoch gab es bei der Umbenennung des Ordners einen Fehler!<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.$modul.'">Zurück</a>'.$footer); |
148 | die($header.'<b>Information</b><br><br>Das Design konnte zwar installiert werden, jedoch gab es bei der Umbenennung des Ordners einen Fehler!<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.urlencode($modul).'">Zurück</a>'.$footer); |
153 | 149 | ||
154 | // Wurde nur der Ordner nicht korrekt umbenannt? (z.B. wenn es ein Design mit dem selben Namen noch gibt) |
150 | // Wurde nur der Ordner nicht korrekt umbenannt? (z.B. wenn es ein Design mit dem selben Namen noch gibt) |
155 | if ($problem) |
151 | if ($problem) |
156 | die($header.'<b>Information</b><br><br>Es existiert bereits ein Design mit dem Namen "'.$inhalt.'". Das Design wurde trotzdem unter dem alternativen Namen "'.$inhalt.$zusatz.'" installiert.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.$modul.'">Zurück</a>'.$footer); |
152 | die($header.'<b>Information</b><br><br>Es existiert bereits ein Design mit dem Namen "'.$inhalt.'". Das Design wurde trotzdem unter dem alternativen Namen "'.$inhalt.$zusatz.'" installiert.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.urlencode($modul).'">Zurück</a>'.$footer); |
157 | } |
153 | } |
158 | else |
154 | else |
159 | { |
155 | { |
160 | // Kein Dateiname angegeben? |
156 | // Kein Dateiname angegeben? |
161 | if ($conn_id) @ftp_quit($conn_id); |
157 | if ($conn_id) @ftp_quit($conn_id); |
162 | die($header.'<b>Information</b><br><br>Das Design wurde unter dem Namen "'.$uid.'" angelegt, da in der Designdatei keine Namensangabe vorhanden war.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.$modul.'">Zurück</a>'.$footer); |
158 | die($header.'<b>Information</b><br><br>Das Design wurde unter dem Namen "'.$uid.'" angelegt, da in der Designdatei keine Namensangabe vorhanden war.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.urlencode($modul).'">Zurück</a>'.$footer); |
163 | } |
159 | } |
164 | 160 | ||
165 | // Alles OK? Dann zurück! |
161 | // Alles OK? Dann zurück! |
166 | if (!headers_sent()) header('location: '.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.$modul); |
162 | if (!headers_sent()) header('location: '.$_SERVER['PHP_SELF'].'?seite=inhalt&modul='.urlencode($modul)); |
167 | } |
163 | } |
168 | 164 | ||
169 | if ($aktion == 'changekonfig') |
165 | if ($aktion == 'changekonfig') |
170 | { |
166 | { |
171 | ib_change_config('design', $newdesign, $modul); |
167 | ib_change_config('design', $newdesign, $modul); |
172 | echo '<script language="JavaScript" type="text/javascript"> |
168 | echo '<script language="JavaScript" type="text/javascript"> |
173 | <!-- |
169 | <!-- |
174 | 170 | ||
175 | parent.location.href = \'index.php?prv_modul='.$vonmodul.'&prv_seite='.$vonseite.'\'; |
171 | parent.location.href = \'index.php?prv_modul='.urlencode($vonmodul).'&prv_seite='.urlencode($vonseite).'\'; |
176 | 172 | ||
177 | // --> |
173 | // --> |
178 | </script>'; |
174 | </script>'; |
179 | 175 | ||
180 | // Funktioniert nicht für eine Designänderung: if (!headers_sent()) header('location: '.$_SERVER['PHP_SELF'].'?seite=inhalt&modul=admin_konfig'); |
176 | // Funktioniert nicht für eine Designänderung: if (!headers_sent()) header('location: '.$_SERVER['PHP_SELF'].'?seite=inhalt&modul=admin_konfig'); |