Allow admins to mkdir rmdir
[squasher.git] / squasher.php
index eaa1b543b2a90d2c935f011aace7289d6a5c7a81..61d350dae4546a43ef27d04662025c62d5b271b1 100644 (file)
@@ -104,6 +104,31 @@ if (@$_GET['f']) {
                $path=substr($request['path'], strlen($basedir));
                header( 'Location: '.$_SERVER['PHP_SELF'].'?path='.$path);
        }
+
+} elseif (@$_POST['tools']=="mkdir" && isset($_GET['path']) && isset($_POST['newname']) && $_SESSION['creds']['user_level'] > 99) {
+       $path = $_GET['path'];
+       $newname = $_POST['newname'];
+       $subs = explode('/', $path);
+       if (in_array('..', $subs))
+               die(); // Hard fails when trying to play above basedir
+       if ($squashweb->got_rights_array_admin($path) > 0) {
+               umask(002); // don't remove g+w
+               mkdir($basedir.'/'.$path.'/'.$newname);
+       }
+       header( 'Location: ?path='.$path.'/'.$newname) ;
+       
+} elseif (@$_POST['tools']=="rmdir" && isset($_GET['path']) && $_SESSION['creds']['user_level'] > 99) {
+       $path = $_GET['path'];
+       $subs = explode('/', $path);
+       if (in_array('..', $subs))
+               die(); // Hard fails when trying to play above basedir
+       if ($squashweb->got_rights_array_admin($path) > 0) {
+               rmdir($basedir.$path);
+       }
+       array_pop($subs);
+       $path=implode("/", $subs);
+       header( 'Location: ?path='.$path) ;
+       
 } elseif (@$_GET['tools']=='access' && $_SESSION['creds']['user_level'] > 100) {
 
        require_once(SQUASHER_SMARTY);