Subversion Repositories personal-webbase

Rev

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&amp;seite=konfig&amp;vonmodul='.$modul.'">Konfigurationswerte</a> einsehen.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&amp;modul='.$modul.'">Zur&uuml;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&amp;seite=konfig&amp;vonmodul='.urlencode($modul).'">Konfigurationswerte</a> einsehen.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&amp;modul='.urlencode($modul).'">Zur&uuml;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&ouml;schvorgang wurde aufgrund einer Schutzverletzung abgebrochen!<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&amp;modul='.$modul.'">Zur&uuml;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&auml;res Verzeichnis des Modules hineinkopieren (FTP)!.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&amp;modul='.$modul.'">Zur&uuml;ck</a>'.$footer);
68
        die($header.'<b>Fehler</b><br><br>Konnte ZIP-Datei nicht in tempor&auml;res Verzeichnis des Modules hineinkopieren (FTP)!.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&amp;modul='.urlencode($modul).'">Zur&uuml;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&amp;modul='.$modul.'">Zur&uuml;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&amp;modul='.urlencode($modul).'">Zur&uuml;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&amp;modul='.$modul.'">Zur&uuml;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&amp;modul='.urlencode($modul).'">Zur&uuml;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&amp;modul='.$modul.'">Zur&uuml;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&amp;modul='.urlencode($modul).'">Zur&uuml;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 &quot;'.$inhalt.'&quot;. Das Design wurde trotzdem unter dem alternativen Namen &quot;'.$inhalt.$zusatz.'&quot; installiert.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&amp;modul='.$modul.'">Zur&uuml;ck</a>'.$footer);
152
          die($header.'<b>Information</b><br><br>Es existiert bereits ein Design mit dem Namen &quot;'.$inhalt.'&quot;. Das Design wurde trotzdem unter dem alternativen Namen &quot;'.$inhalt.$zusatz.'&quot; installiert.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&amp;modul='.urlencode($modul).'">Zur&uuml;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 &quot;'.$uid.'&quot; angelegt, da in der Designdatei keine Namensangabe vorhanden war.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&amp;modul='.$modul.'">Zur&uuml;ck</a>'.$footer);
158
        die($header.'<b>Information</b><br><br>Das Design wurde unter dem Namen &quot;'.$uid.'&quot; angelegt, da in der Designdatei keine Namensangabe vorhanden war.<br><br><a href="'.$_SERVER['PHP_SELF'].'?seite=inhalt&amp;modul='.urlencode($modul).'">Zur&uuml;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');