WebServer Explorer
- De væi tu kønnekt tu jør særver vittøtt FTP

Sist oppdatert

23.02.2009 - 23:20:23

Utgaver

Kildekode [ Forsida ]

<?php

##########################
#                        #
#   WebServer Explorer   #
#                        #
#    Av Martin Nordal    #
#    nerdvar.com/wse/    #
#                        #
##########################

@session_start();
@ini_set("session.gc_maxlifetime" , (3600 * 24 * 7));
@ini_set("arg.separator.output" , "&amp;");

$Skript   = "wse.php";
$Handler  = "hand";
$OverRot  = FALSE; // Bestemmer om WSE skal ha adgang over mappa den selv er plassert i.
$AdmBrk   = array(); // N�kkel er brukernavn, og verdi er md5-kryptert passord.
$BrkFil   = "wse.brk";
$BrkMappe = ".";
$AllPlass = 1024 * 1024 * 1024 * 15;
$BrkPlass = 1024 * 1024 * 512;

  if (!eregi($Skript , $_SERVER["REQUEST_URI"])) {
  Header("Location: $Skript");
  die();
  }

  if (strlen($_POST["wse_bruker"]) > 0 && strlen($_POST["wse_passord"]) > 0) {
  $_SESSION["wse_bruker"]  = $_POST["wse_bruker"];
  $_SESSION["wse_passord"] = md5($_POST["wse_passord"]);
  $_SESSION["wse_iltid"]   = time();
  Header("Location: $_SERVER[REQUEST_URI]");
  die();
  }

$Sikker = md5(mt_rand(999,99999));
$Adgang = 0;

  if (strlen($_SESSION["wse_bruker"]) > 0 && strlen($_SESSION["wse_passord"]) > 0) {
  $Brukere = @file($BrkFil);
  $Brukere = is_array($Brukere) ? $Brukere : array();
    foreach ($Brukere as $Nok => $Linje) {
    $Linje = explode("=" , trim($Linje));
    unset($Brukere[$Nok]);
    $Brukere[($Linje[0])] = array($Linje[1]);
      if ($Linje[0] == $_SESSION["wse_bruker"]) {
        if (strlen($Linje[2]) > 0) {
        $Linje[2] = (array)explode(";" , $Linje[2]);
          foreach ($Linje[2] as $Ver) {
          $Brukere[($Linje[0])][substr($Ver , 0 , strpos($Ver , ":"))] = substr($Ver , strpos($Ver , ":") + 1);
          }
        }
      }
    }
    if ($_SESSION["wse_passord"] == $AdmBrk[($_SESSION["wse_bruker"])]) {
    $LoggInn[$Sikker] = $Sikker;
    $Adgang = 2;
    }
    elseif ($_SESSION["wse_passord"] == $Brukere[($_SESSION["wse_bruker"])][0]) {
    $LoggInn[$Sikker] = $Sikker;
    $Adgang = 1;
    }
  }

$Handling = $_GET["hand"] ? $_GET["hand"] : "vismappe";

  if ($LoggInn[$Sikker] == $Sikker) {
    if ($Handling == "loggut") {
    unset($_SESSION["wse_bruker"] , $_SESSION["wse_passord"]);
    Header("Location: $Skript");
    die();
    }
    elseif ($Handling == "vismappe") {
    $Sti = SjekkSti(urldecode($_GET["sti"]));
      if ($Les = @opendir(StiAdgang($Sti))) {
      $Objekter = array("Mapper" => array() , "Filer" => array());
        while ($Objekt = @readdir($Les)) {
          if ($Objekt <> "." && $Objekt <> "..") {
          $Objekter[(is_dir(StiAdgang("$Sti/$Objekt")) ? "Mapper" : "Filer")][strtolower($Objekt)] = $Objekt;
          }
        }
      $Vis  = "<h1>Vis mappe: $Sti</h1>\n\n";
      $Vis .= "<p>[ <a href=\"$Skript?$Handler=vismappe&amp;sti=" . urlencode(OppMappe($Sti)) . "\">Opp en mappe</a> ] \n";
      $Vis .= "[ <a href=\"$Skript?$Handler=nyttobj&amp;sti=" . urlencode($Sti) . "\">Nytt objekt</a> ] \n";
      $Vis .= "[ <a href=\"$Skript?$Handler=lastopp&amp;sti=" . urlencode($Sti) . "\">Last opp</a> ]";
      $Vis .= "</p>\n\n<table class=\"tabell\">\n";
      $Vis .= "<tr>\n<td class=\"nok\">Objekt</td>\n<td class=\"nok\">St&oslash;rrelse</td>\n";
      $Vis .= "<td class=\"nok\">Vis</td>\n";
      $Vis .= "<td class=\"nok\">Rediger</td>\n<td class=\"nok\">Nytt navn</td>\n";
      $Vis .= "<td class=\"nok\">Kopier</td>\n<td class=\"nok\">Flytt</td>\n";
      $Vis .= "<td class=\"nok\">Slett</td>\n<td class=\"nok\">Ekstra</td>\n</tr>\n";
      $Stor1 = filesize(StiAdgang($Sti));
        foreach ($Objekter as $Type => $Liste) {
        ksort($Liste);
          foreach ($Liste as $Objekt) {
          $ObjektURL = urlencode(StiAdgang("$Sti") . "/$Objekt");
          $Stor2 = Storrelse(StiAdgang($Sti) . "/$Objekt");
          $Vis .= "<tr>\n<td class=\"ver\"><a href=\"" . substr(StiAdgang($Sti) , 2) . "/" . urlencode($Objekt) . "\"";
          $Vis .= $Type == "Mapper" ? " style=\"font-weight: bold;\"" : "";
          $Vis .= ">" . htmlspecialchars(substr($Objekt , 0 , 64)) . "</a></td>\n";
          $Vis .= "<td class=\"ver\">" . VisTall($Stor2) . "</td>\n";
            if ($Type == "Mapper") {
            $Vis .= "<td class=\"ver\"><a href=\"$Skript?$Handler=vismappe&amp;sti=$ObjektURL\">Utforsk</a></td>\n";
            $Vis .= "<td class=\"ver\">&shy;</td>\n";
            }
            else {
            $Vis .= "<td class=\"ver\"><a href=\"$Skript?$Handler=viskilde&amp;sti=$ObjektURL\">Kilde</a></td>\n";
            $Vis .= "<td class=\"ver\"><a href=\"$Skript?$Handler=rediger&amp;sti=$ObjektURL\">Rediger</a></td>\n";
            }
          $Vis .= "<td class=\"ver\"><a href=\"$Skript?$Handler=nyttnavn&amp;sti=$ObjektURL\">Nytt navn</a></td>\n";
          $Vis .= "<td class=\"ver\"><a href=\"$Skript?$Handler=kopier&amp;sti=$ObjektURL\">Kopier</a></td>\n";
          $Vis .= "<td class=\"ver\"><a href=\"$Skript?$Handler=flytt&amp;sti=$ObjektURL\">Flytt</a></td>\n";
          $Vis .= "<td class=\"ver\"><a href=\"$Skript?$Handler=slett&amp;sti=$ObjektURL\">Slett</a></td>\n";
          $Vis .= "<td class=\"ver\"><a href=\"$Skript?$Handler=ekstra&amp;sti=$ObjektURL\">Ekstra</a></td>\n</tr>\n";
          $Stor1 += $Stor2;
          }
        }
        if (count($Objekter["Mapper"]) <= 0 && count($Objekter["Filer"]) <= 0) {
        $Vis .= "<tr>\n<td class=\"ver\" colspan=\"11\">Mappa inneholder ikke noe.</td>\n</tr>\n";
        }
      $Vis .= "</table>\n\n";
      $Vis .= "<p>[ Plassforbruk: " . VisTall($Stor1) . " ] \n";
      $Vis .= "[ Mapper: " . VisTall(count($Objekter["Mapper"])) . " ] \n";
      $Vis .= "[ Filer: " . VisTall(count($Objekter["Filer"])) . " ] \n";
      $Vis .= "[ Objekter totalt: " . VisTall(count($Objekter["Mapper"]) + count($Objekter["Filer"])) . " ]</p>\n\n";
      @closedir($Les);
      }
      else {
      $Vis  = "<h1>Advarsel</h1>\n\n";
      $Vis .= "<p>Mappa &laquo;$Sti&raquo; kan ikke &aring;pnes.</p>\n\n";
      }
    }
    elseif ($Handling == "nyttobj") {
    $Sti = SjekkSti(urldecode($_GET["sti"]));
      if (is_dir(StiAdgang($Sti)) && is_writeable(StiAdgang($Sti))) {
      $Vis  = "<h1>Nytt objekt $Sti</h1>\n\n";
      $Vis .= "<form action=\"$Skript?$Handler=nyttobj&amp;sti=" . urlencode($Sti) . "\" method=\"post\">\n";
      $Vis .= "<table class=\"skjema\">\n";
      $Vis .= "<tr>\n<td class=\"nok\">Ny mappe:</td>\n";
      $Vis .= "<td class=\"ver\"><input type=\"text\" name=\"nymappe\" /></td>\n";
      $Vis .= "<td class=\"ver\"><input type=\"submit\" class=\"knapp\" value=\"Opprett\" /></td>\n</tr>\n";
      $Vis .= "<tr>\n<td class=\"nok\">Ny fil:</td>\n";
      $Vis .= "<td class=\"ver\"><input type=\"text\" name=\"nyfil\" /></td>\n";
      $Vis .= "<td class=\"ver\"><input type=\"submit\" class=\"knapp\" value=\"Opprett\" /></td>\n</tr>\n";
      $Vis .= "</table>\n</form>\n\n";
        if ($_POST["nymappe"]) {
          if (@opendir(StiAdgang(SjekkSti("$Sti/$_POST[nymappe]")))) {
          $Vis .= "<p>Mappa &laquo;$_POST[nymappe]&raquo; finnes fra f&oslash;r av.</p>\n\n";
          }
          elseif (@mkdir(StiAdgang(SjekkSti("$Sti/$_POST[nymappe]")))) {
          $Vis .= "<p>Mappa &laquo;$Sti/$_POST[nymappe]&raquo; ble lagt til.</p>\n\n";
          Logg("Mappa &laquo;$Sti/$_POST[nymappe]&raquo; ble lagt til.");
          }
          else {
          $Vis .= "<p>Mappa &laquo;$_POST[nymappe]&raquo; kan ikke legges til.</p>\n\n";
          }
        }
        if ($_POST["nyfil"]) {
          if (@opendir(StiAdgang(SjekkSti("$Sti/$_POST[nyfil]")))) {
          $Vis .= "<p>Fila &laquo;$_POST[nyfil]&raquo; finnes fra f&oslash;r av.</p>\n\n";
          }
          elseif (@fopen(StiAdgang(SjekkSti("$Sti/$_POST[nyfil]")) , "w")) {
          $Vis .= "<p>Fila &laquo;$_POST[nyfil]&raquo; ble lagt til.</p>\n\n";
          Logg("Fila &laquo;$Sti/$_POST[nyfil]&raquo; ble lagt til.");
          }
          else {
          $Vis .= "<p>Fila &laquo;$_POST[nyfil]&raquo; kan ikke legges til.</p>\n\n";
          }
        }
      $Kommando = array(
".tar"     => "tar cf",
".tar.gz"  => "tar czf",
".tar.bz2" => "tar cjf",
".zip"     => "zip",
".rar"     => "rar e");
      $Vis .= "<h2>Nytt arkiv</h2>\n\n";
      $Vis .= "<form action=\"$Skript?$Handler=nyttobj&amp;sti=" . urlencode($Sti) . "\" method=\"post\">\n";
      $Vis .= "<table class=\"skjema\">\n";
      $Vis .= "<tr>\n<td class=\"nok\">Arkivnavn:</td>\n";
      $Vis .= "<td class=\"ver\"><input type=\"text\" name=\"arkivnavn\" /> <select name=\"arkivtype\">\n";
        foreach ($Kommando as $Type => $Skriv) {
        $Vis .= "    <option value=\"$Type\">$Type</option>\n";
        }
      $Vis .= "</select></td>\n</tr>\n";
      $Vis .= "<tr>\n<td class=\"nok\">Objekter:</td>\n";
      $Vis .= "<td class=\"ver\"><input type=\"text\" name=\"objekter\" size=\"30\" /> ";
      $Vis .= "(adskilles med mellomrom)</td>\n</tr>\n";
      $Vis .= "<tr>\n<td class=\"ver\">&shy;</td>\n";
      $Vis .= "<td class=\"ver\"><input type=\"submit\" class=\"knapp\" value=\"Pakk\" /></td>\n</tr>\n";
      $Vis .= "</table>\n</form>\n\n";
        if ($_POST["arkivnavn"] && $_POST["arkivtype"] && $_POST["objekter"]) {
        $_POST["arkivnavn"] = str_replace(" " , "_" , $_POST["arkivnavn"]);
        @exec($Kommando[($_POST["arkivtype"])]." ".StiAdgang("$Sti/$_POST[arkivnavn]$_POST[arkivtype]")." ".StiAdgang("$Sti/$_POST[objekter]"));
        $Vis .= "<p>Arkivfila &laquo;$Sti/$_POST[arkivnavn]$_POST[arkivtype]&raquo; ble oppretta.</p>\n\n";
        Logg("Arkivfila &laquo;$Sti/$_POST[arkivnavn]$_POST[arkivtype]&raquo; ble oppretta.");
        }
      }
      else {
      $Vis  = "<h1>Advarsel</h1>\n\n";
      $Vis .= "<p>Enten er ingen mappe definert, eller den kan ikke \n";
      $Vis .= "&aring;pnes for skriving.</p>\n\n<p>$Sti</p>\n\n";
      }
    }
    elseif ($Handling == "lastopp") {
    $Sti = SjekkSti(urldecode($_GET["sti"]));
      if (is_readable(StiAdgang($Sti))) {
      $Vis = "<h1>Last opp $Sti</h1>\n\n";
        if ($_FILES["lastopp"]) {
        $Vis .= "<p>Resultater:</p>\n\n<ul>\n";
        $Logg = array();
          foreach ($_FILES["lastopp"]["name"] as $ID => $Navn) {
            if (strlen($Navn) > 0) {
              if (!$_POST["mellomrom"]) {
              $Navn = str_replace(" " , "_" , $Navn);
              }
            $Midl = $_FILES["lastopp"]["tmp_name"][$ID];
            $Nytt = str_replace("/./" , "/" , StiAdgang(SjekkSti($Sti)) . "/" . $Navn);
              if (@move_uploaded_file($Midl , $Nytt)) {
              $Logg[] = "Fila &laquo;$Navn&raquo; ble lasta opp som &laquo;$Sti/$Navn&raquo;.";
              $Vis .= "<li>Fila &laquo;$Navn&raquo; ble lasta opp som &laquo;$Sti/$Navn&raquo;.</li>\n";
              }
              else {
              $Vis .= "<li>&laquo;$Navn&raquo; kunne ikke lastes opp som &laquo;$Nytt&raquo;.</li>\n";
              }
            }
          }
        Logg(implode(" " , $Logg));
        $Vis .= "</ul>\n\n";
        }
        else {
        $Vis .= "<p><strong>Merk:</strong> Allerede eksisterende filer med samme navn vil bli overskrevet.</p>\n\n";
        $Vis .= "<form action=\"$Skript?$Handler=lastopp&amp;sti=" . urlencode($Sti) . "\" ";
        $Vis .= "method=\"post\" enctype=\"multipart/form-data\">\n";
        $Vis .= "<p><input type=\"file\" name=\"lastopp[]\" /><br />\n";
        $Vis .= "<input type=\"file\" name=\"lastopp[]\" /><br />\n";
        $Vis .= "<input type=\"file\" name=\"lastopp[]\" /><br />\n";
        $Vis .= "<input type=\"file\" name=\"lastopp[]\" /><br />\n";
        $Vis .= "<input type=\"file\" name=\"lastopp[]\" /></p>\n";
        $Vis .= "<p><input type=\"checkbox\" name=\"mellomrom\" value=\"hakmed\" /> ";
        $Vis .= "Ikke gj&oslash;r om mellomrom til understrek i filnavnene.</p>\n\n";
        $Vis .= "<p><input type=\"submit\" class=\"knapp\" value=\"Last opp\" /></p>\n</form>\n\n";
        }
      }
      else {
      $Vis  = "<h1>Advarsel</h1>\n\n";
      $Vis .= "<p>Enten er ingen mappe definert, eller den kan ikke \n";
      $Vis .= "&aring;pnes for skriving.</p>\n\n<p>$Sti</p>\n\n";
      }
    }
    elseif ($Handling == "viskilde") {
    $Sti = SjekkSti(urldecode($_GET["sti"]));
      if (is_readable(StiAdgang($Sti))) {
      $Kode = file_get_contents(StiAdgang($Sti));
      $Kode = htmlspecialchars($Kode);
      $Vis = "<h1>Kilde $Sti</h1>\n\n";
        if ($_GET["vis"] == "lnr") {
        $Vis .= "<p>[ <a href=\"$Skript?$Handler=viskilde&amp;sti=" . urlencode($Sti) . "\">Ikke vis linjenummer</a> ]</p>\n\n";
        }
        else {
        $Vis .= "<p>[ <a href=\"$Skript?$Handler=viskilde&amp;sti=" . urlencode($Sti) . "&amp;vis=lnr\">Vis linjenummer</a> ]</p>\n\n";
        }
      $Vis .= "<p></p>\n\n<div class=\"kode\"><pre>";
        if ($_GET["vis"] == "lnr") {
        $Kode = explode("\n" , $Kode);
        $Linjer = count($Kode);
          foreach ($Kode as $Nr => $Linje) {
          $Nr++;
          $Vis .= "<span style=\"color: rgb(100,100,100);\">";
          $Vis .= str_repeat("  " , strlen($Linjer) - strlen($Nr));
          $Vis .= $Nr . "</span>   " . $Linje . "\n";
          }
        }
        else {
        $Vis .= "$Kode";
        }
      $Vis .= "</pre></div>\n\n";
      }
      else {
      $Vis  = "<h1>Advarsel</h1>\n\n";
      $Vis .= "<p>Enten er ingen fil definert, eller den kan ikke \n";
      $Vis .= "&aring;pnes for lesing.</p>\n\n<p>$Sti</p>\n\n";
      }
    }
    elseif ($Handling == "rediger") {
    $Sti = SjekkSti(urldecode($_GET["sti"]));
      if (is_readable(StiAdgang($Sti)) && is_writeable(StiAdgang($Sti))) {
      $Innmat = @file_get_contents(StiAdgang($Sti));
        if (strlen($_POST["innmat"]) > 0) {
        $Innmat = $_POST["innmat"];
        $S1 = strlen($Innmat);
        $Innmat = str_replace("\\" , "\\\\" , $Innmat);
        $Innmat = str_replace("\\\"" , "\"" , $Innmat);
        $Innmat = str_replace("\\\'" , "\'" , $Innmat);
        $Innmat = str_replace("\\\\" , "\\" , $Innmat);
        $S2 = strlen($Innmat);
          if ($S1 == $S2) {
          $Innmat = stripslashes($Innmat);
          }
        $Skriv  = fopen(StiAdgang($Sti) , "w+");
        fwrite($Skriv , $Innmat);
        fclose($Skriv);
        $_SESSION["wse_redigert"][$Sti]++;
        Logg("Fila &laquo;$Sti&raquo; ble redigert.");
        Header("Location: $Skript?$Handler=rediger&sti=" . urlencode($Sti));
        die();
        }
      $Innmat   = htmlspecialchars($Innmat);
      $Redigert = (int) $_SESSION["wse_redigert"][$Sti];
      $Vis  = "<h1>Rediger $Sti</h1>\n\n";
      $Vis .= "<p>Du har i l&oslash;pet av den siste sesjonen redigert fila $Redigert gang(er).</p>\n\n";
      $Vis .= "<form action=\"$Skript?$Handler=rediger&amp;sti=" . urlencode($Sti) . "\" method=\"post\">\n";
      $Vis .= "<p><textarea name=\"innmat\" rows=\"35\" class=\"rediger\">$Innmat</textarea></p>\n"; // cols=\"200\"
      $Vis .= "<p><input type=\"submit\" class=\"knapp\" value=\"Send\" /></p>\n</form>\n";
      }
      else {
      $Vis  = "<h1>Advarsel</h1>\n\n";
      $Vis .= "<p>Enten er ingen fil definert, eller den kan ikke \n";
      $Vis .= "&aring;pnes for b&aring;de lesing og skriving.</p>\n\n<p>$Sti</p>\n\n";
      }
    }
    elseif ($Handling == "nyttnavn") {
    $Sti = SjekkSti(urldecode($_GET["sti"]));
      if (is_writeable(StiAdgang($Sti))) {
      $Vis = "<h1>Nytt navn $Sti</h1>\n\n";
        if ($_POST["nyttnavn"]) {
        $NySti = SjekkSti(dirname($Sti)) . "/" . basename($_POST["nyttnavn"]);
          if (@rename(StiAdgang($Sti) , StiAdgang($NySti))) {
          $Vis .= "<p>&laquo;$Sti&raquo; fikk navnet &laquo;" . htmlentities($NySti) . "&raquo;.</p>\n\n";
          Logg("&laquo;$Sti&raquo; fikk navnet &laquo;" . htmlentities($NySti) . "&raquo;.");
          }
          else {
          $Vis .= "<p>&laquo;$Sti&raquo; kunne ikke f&aring; et nytt navn.</p>\n\n";
          }
        }
        else {
        $Vis .= "<form action=\"$Skript?$Handler=nyttnavn&amp;sti=" . urlencode($Sti) . "\" method=\"post\">\n";
        $Vis .= "<table class=\"skjema\">\n";
        $Vis .= "<tr>\n<td class=\"nok\">Navn:</td>\n";
        $Vis .= "<td class=\"ver\"><input type=\"text\" name=\"nyttnavn\" value=\"" . basename($Sti) . "\" /></td>\n";
        $Vis .= "<td class=\"ver\"><input type=\"submit\" class=\"knapp\" value=\"Send\" /></td>\n</tr>\n";
        $Vis .= "</table>\n</form>\n\n";
        }
      }
      else {
      $Vis  = "<h1>Advarsel</h1>\n\n";
      $Vis .= "<p>Enten er ingen fil eller mappe definert, eller den kan ikke \n";
      $Vis .= "&aring;pnes for skriving.</p>\n\n<p>$Sti</p>\n\n";
      }
    }
    elseif ($Handling == "kopier") {
    $Sti = SjekkSti(urldecode($_GET["sti"]));
      if (is_readable(StiAdgang($Sti))) {
      $Vis = "<h1>Kopier $Sti</h1>\n\n";
        if ($_POST["kopinavn"]) {
        $NySti = SjekkSti(dirname($Sti)) . "/" . basename($_POST["kopinavn"]);
          if (KopierObjekt(StiAdgang($Sti) , StiAdgang($NySti))) {
          $Vis .= "<p>&laquo;$Sti&raquo; ble kopiert som &laquo;" . htmlentities($NySti) . "&raquo;.</p>\n\n";
          Logg("&laquo;$Sti&raquo; ble kopiert som &laquo;" . htmlentities($NySti) . "&raquo;.");
          }
          else {
          $Vis .= "<p>&laquo;$Sti&raquo; kunne ikke kopieres.</p>\n\n";
          }
        }
        else {
        $Vis .= "<form action=\"$Skript?$Handler=kopier&amp;sti=" . urlencode($Sti) . "\" method=\"post\">\n";
        $Vis .= "<table class=\"skjema\">\n";
        $Vis .= "<tr>\n<td class=\"nok\">Navn:</td>\n";
        $Vis .= "<td class=\"ver\"><input type=\"text\" name=\"kopinavn\" value=\"kopi_" . basename($Sti) . "\" /></td>\n";
        $Vis .= "<td class=\"ver\"><input type=\"submit\" class=\"knapp\" value=\"Send\" /></td>\n</tr>\n";
        $Vis .= "</table>\n</form>\n\n";
        }
      }
      else {
      $Vis  = "<h1>Advarsel</h1>\n\n";
      $Vis .= "<p>Enten er ingen fil eller mappe definert, eller den kan ikke \n";
      $Vis .= "&aring;pnes for lesing.</p>\n\n<p>$Sti</p>\n\n";
      }
    }
    elseif ($Handling == "flytt") {
    $Sti = SjekkSti(urldecode($_GET["sti"]));
      if (is_writeable(StiAdgang($Sti))) {
      $Vis = "<h1>Flytt $Sti</h1>\n\n";
      $Mappe   = dirname($Sti);
      $NyMappe = $_POST["nymappe"];
        if ($NyMappe) {
        $Fil = basename($Sti);
          if (substr(strrev($NyMappe) , 0 , 1) == "/") {
          $NyMappe = substr($NyMappe , 0 , strlen($NyMappe) - 2);
          }
          if (FlyttObjekt(StiAdgang($Sti) , StiAdgang(SjekkSti("$NyMappe/$Fil")))) {
          $Vis .= "<p>&laquo;$Sti&raquo; ble flyttet til &laquo;" . htmlentities("$NyMappe/$Fil") . "&raquo;.</p>\n\n";
          Logg("&laquo;$Sti&raquo; ble flyttet til &laquo;" . htmlentities("$NyMappe/$Fil") . "&raquo;.");
          }
          else {
          $Vis .= "<p>&laquo;$Sti&raquo; kunne ikke flyttes til &laquo;" . htmlentities("$NyMappe/$Fil") . "&raquo;.</p>\n\n";
          }
        }
        else {
        $Vis .= "<form action=\"$Skript?$Handler=flytt&amp;sti=" . urlencode($Sti) . "\" method=\"post\">\n";
        $Vis .= "<table class=\"skjema\">\n";
        $Vis .= "<tr>\n<td class=\"nok\">Plassering:</td>\n";
        $Vis .= "<td class=\"ver\"><input type=\"text\" name=\"nymappe\" value=\"$Mappe\" /></td>\n";
        $Vis .= "<td class=\"ver\"><input type=\"submit\" class=\"knapp\" value=\"Send\" /></td>\n</tr>\n";
        $Vis .= "</table>\n</form>\n\n";
        }
      }
      else {
      $Vis  = "<h1>Advarsel</h1>\n\n";
      $Vis .= "<p>Enten er ingen fil eller mappe definert, eller den kan ikke \n";
      $Vis .= "&aring;pnes for skriving.</p>\n\n<p>$Sti</p>\n\n";
      }
    }
    elseif ($Handling == "slett") {
    $Sti = SjekkSti(urldecode($_GET["sti"]));
      if (is_writeable(StiAdgang($Sti))) {
      $Vis = "<h1>Slett $Sti</h1>\n\n";
        if ($_POST["slettobjekt"] == "hakmed") {
          if (SlettObjekt(StiAdgang($Sti))) {
          $Vis .= "<p>&laquo;$Sti&raquo; er n&aring; sletta.</p>\n\n";
          Logg("&laquo;$Sti&raquo; ble sletta.");
          }
          else {
          $Vis .= "<p>&laquo;$Sti&raquo; kunne ikke slettes.</p>\n\n";
          }
        }
        else {
        $Vis .= "<p>Vil du slette &laquo;$Sti&raquo;?</p>\n\n";
        $Vis .= "<form action=\"$Skript?$Handler=slett&amp;sti=" . urlencode($Sti) . "\" method=\"post\">\n";
        $Vis .= "<input type=\"hidden\" name=\"slettobjekt\" value=\"hakmed\" />\n";
        $Vis .= "<p><input type=\"submit\" class=\"knapp\" value=\"Ja, slett\" /></p>\n";
        $Vis .= "</form>\n\n";
        }
      }
      else {
      $Vis  = "<h1>Advarsel</h1>\n\n";
      $Vis .= "<p>Enten er ingen fil eller mappe definert, eller den kan ikke \n";
      $Vis .= "&aring;pnes for skriving.</p>\n\n<p>$Sti</p>\n\n";
      }
    }
    elseif ($Handling == "ekstra") {
    $Sti = SjekkSti(urldecode($_GET["sti"]));
      if (is_readable(StiAdgang($Sti))) {
      $FilType = FilType(StiAdgang($Sti));
      $Tabell = @unserialize(@file_get_contents(StiAdgang($Sti)));
      $Stor = VisTall(filesize(StiAdgang($Sti)));
      $Vis = "<h1>Ekstra $Sti</h1>\n\n";
        if (is_array($Tabell)) {
        $PrintR = $Tabell;
        }
        elseif (substr($FilType , 0 , 6) == "image/") {
        $Info = GetImageSize(StiAdgang($Sti));
        $Vis .= "<table class=\"skjema\">\n";
        $Vis .= "<tr>\n<td class=\"nok\">Type:</td>\n<td class=\"ver\">$Info[mime]</td>\n</tr>\n";
        $Vis .= "<tr>\n<td class=\"nok\">Bredde:</td>\n<td class=\"ver\">$Info[0]</td>\n</tr>\n";
        $Vis .= "<tr>\n<td class=\"nok\">H&oslash;yde:</td>\n<td class=\"ver\">$Info[1]</td>\n</tr>\n";
        $Vis .= "<tr>\n<td class=\"nok\">St&oslash;rrelse:</td>\n<td class=\"ver\">$Stor</td>\n</tr>\n";
        $Vis .= "</table>\n\n<p><img src=\"" . StiAdgang($Sti) . "\" style=\"width: $Info[0]px; height: $Info[1]px;\" alt=\"$Sti\" /></p>\n\n";
        }
        elseif ($FilType == "audio/mpeg") {
        $Vis .= "<table class=\"skjema\">\n";
        $Vis .= "<tr>\n<td class=\"nok\">Filtype:</td>\n";
        $Vis .= "<td class=\"ver\">$FilType</td>\n</tr>\n";
        $Vis .= "<tr>\n<td class=\"nok\">St&oslash;rrelse:</td>\n";
        $Vis .= "<td class=\"ver\">" . VisTall(Storrelse(StiAdgang($Sti))) . "</td>\n</tr>\n";
        $Vis .= "</table>\n\n";
        $Les = fopen(StiAdgang($Sti) , "r");
        fseek($Les , -128 , SEEK_END);
          if (fgets($Les , 4) == "TAG") {
          $Tittel    = trim(fgets($Les , 31));
          $Artist    = trim(fgets($Les , 31));
          $Album     = trim(fgets($Les , 31));
          $Aor       = trim(fgets($Les , 5));
          $Kommentar = trim(fgets($Les , 29));
          $Midl      = trim(fgets($Les , 2));
          $SporNr    = hexdec(bin2hex(fgets($Les , 2)));
          $Tittel    = $Tittel ? $Tittel : "&nbsp;";
          $Artist    = $Artist ? $Artist : "&nbsp;";
          $Album     = $Album ? $Album : "&nbsp;";
          $Aor       = $Aor ? $Aor : "&nbsp;";
          $Kommentar = $Kommentar ? $Kommentar : "&nbsp;";
          $SporNr    = $SporNr ? $SporNr : "&nbsp;";
          $Vis .= "<table class=\"skjema\">\n";
          $Vis .= "<tr>\n<td class=\"nok\">Tittel:</td>\n<td class=\"ver\">$Tittel</td>\n</tr>\n";
          $Vis .= "<tr>\n<td class=\"nok\">Artist:</td>\n<td class=\"ver\">$Artist</td>\n</tr>\n";
          $Vis .= "<tr>\n<td class=\"nok\">Album:</td>\n<td class=\"ver\">$Album</td>\n</tr>\n";
          $Vis .= "<tr>\n<td class=\"nok\">&Aring;r:</td>\n<td class=\"ver\">$Aor</td>\n</tr>\n";
          $Vis .= "<tr>\n<td class=\"nok\">Kommentar:</td>\n<td class=\"ver\">$Kommentar</td>\n</tr>\n";
          $Vis .= "<tr>\n<td class=\"nok\">Spornr:</td>\n<td class=\"ver\">$SporNr</td>\n</tr>\n";
          $Vis .= "</table>\n\n";
          }
          else {
          $Vis .= "<p>Kan ikke lese ID3-taggene til denne MP3-fila.</p>\n\n";
          }
        }
        elseif (in_array(substr($FilType , 12) , array("x-tar, POSIX" , "x-gzip" , "x-bzip2" , "x-zip"))) {
        $Vis .= "<table class=\"skjema\">\n";
        $Vis .= "<tr>\n<td class=\"nok\">Filtype:</td>\n";
        $Vis .= "<td class=\"ver\">$FilType</td>\n</tr>\n";
        $Vis .= "<tr>\n<td class=\"nok\">St&oslash;rrelse:</td>\n";
        $Vis .= "<td class=\"ver\">" . VisTall(Storrelse(StiAdgang($Sti))) . "</td>\n</tr>\n";
        $Vis .= "</table>\n\n";
        $Kommando = array(
".tar"     => "tar xf",
".tar.gz"  => "tar zxf",
".tar.bz2" => "tar jxf",
".zip"     => "unzip",
".rar"     => "rar a");
          if ($_POST["pakkut"] == "hakmed") {
            foreach ($Kommando as $Type => $Skriv) {
              if (substr($Sti , strlen($Sti) - strlen($Type)) == $Type) {
              $FilEnd = $Type;
              }
            }
            if ($Kommando[$FilEnd]) {
            $Sti1 = dirname($Sti);
            $Sti2 = basename($Sti);
            @exec("cd ".StiAdgang($Sti1)." ; $Kommando[$FilEnd] $Sti2");
            $Vis .= "<p>&laquo;$Sti&raquo; ble pakka ut.</p>\n\n";
            Logg("&laquo;$Sti&raquo; ble pakka ut.");
            }
            else {
            $Vis .= "<p>Finner ikke filending til &laquo;$Sti&raquo;.</p>\n\n";
            }
          }
          else {
          $Vis .= "<form action=\"$Skript?$Handler=ekstra&amp;sti=" . urlencode($Sti) . "\" method=\"post\">\n";
          $Vis .= "<input type=\"hidden\" name=\"pakkut\" value=\"hakmed\" />\n";
          $Vis .= "<p><input type=\"submit\" class=\"knapp\" value=\"Pakk ut\" /></p>\n</form>\n\n";
          }
        }
        elseif ($FilType == "application/pdf") {
        $Vis .= "<table class=\"skjema\">\n";
        $Vis .= "<tr>\n<td class=\"nok\">Filtype:</td>\n";
        $Vis .= "<td class=\"ver\">$FilType</td>\n</tr>\n";
        $Vis .= "<tr>\n<td class=\"nok\">St&oslash;rrelse:</td>\n";
        $Vis .= "<td class=\"ver\">" . VisTall(Storrelse(StiAdgang($Sti))) . "</td>\n</tr>\n";
        $Vis .= "</table>\n\n";
        $Vis .= "<p>Eksportere fra PDF til HTML:</p>\n\n";
        $Vis .= "<form action=\"$Skript?$Handler=ekstra&amp;sti=" . urlencode($Sti) . "\" method=\"post\">\n";
        $Vis .= "<p>Filbane: <input type=\"text\" name=\"htmlfil\" value=\"" . substr($Sti , 0 , strrpos($Sti , ".")) . ".html\" /> \n";
        $Vis .= "<input type=\"submit\" class=\"knapp\" value=\"Send\" /></p>\n</form>\n\n";
          if ($_POST["htmlfil"]) {
          $_POST["htmlfil"] = StiAdgang(SjekkSti($_POST["htmlfil"]));
          @exec("pdftohtml $Sti $_POST[htmlfil]");
          $Vis .= "<p>&laquo;$Sti&raquo; ble eksportert som &laquo;$_POST[htmlfil]&raquo;.</p>\n\n";
          Logg("&laquo;$Sti&raquo; ble eksportert som &laquo;$_POST[htmlfil]&raquo;.");
          }
        }
      $Innmat = @file_get_contents(StiAdgang($Sti));
      $Vis .= "<table class=\"skjema\">\n";
      $Vis .= "<tr>\n<td class=\"nok\">md5:</td>\n";
      $Vis .= "<td class=\"ver\">" . md5($Innmat) . "</td>\n</tr>\n";
      $Vis .= "<tr>\n<td class=\"nok\">sha1:</td>\n";
      $Vis .= "<td class=\"ver\">" . sha1($Innmat) . "</td>\n</tr>\n";
      $Vis .= "</table>\n\n";
      }
      else {
      $Vis  = "<h1>Advarsel</h1>\n\n";
      $Vis .= "<p>Enten er ingen fil definert, eller den kan ikke \n";
      $Vis .= "&aring;pnes for lesing.</p>\n\n<p>$Sti</p>\n\n";
      }
    }
    elseif ($Handling == "vislogg") {
    $Vis = "<h1>Vis logg</h1>\n\n";
      if ($Adgang == 2) {
      $Vis .= "<form action=\"wse.php\" method=\"get\">\n";
      $Vis .= "<input type=\"hidden\" name=\"hand\" value=\"vislogg\" />\n";
      $Vis .= "<p>Bruker: <select name=\"brk\">\n  <option value=\"\">- admin -</option>\n";
        foreach ($Brukere as $Bruker => $Info) {
        $Vis .= "  <option value=\"$Bruker\"" . ($_GET["brk"] == $Bruker ? " selected=\"selected\"" : "") . ">$Bruker</option>\n";
        }
      $Vis .= "</select>\n";
        if ($_GET["vis"] == "stat") {
        $Vis .= "<input type=\"hidden\" name=\"vis\" value=\"stat\" />\n";
        }
      $Vis .= "<input type=\"submit\" class=\"knapp\" value=\"Vis\" /></p>\n</form>\n\n";
        if ($Brukere[($_GET["brk"])]) {
        $LoggFil = "$BrkMappe/$_GET[brk]/wse.log";
        }
        else {
        $LoggFil = "./wse.log";
        }
      }
      else {
      $LoggFil = "./wse.log";
      }
      if (is_readable(StiAdgang($LoggFil))) {
      $LoggData = unserialize(@file_get_contents(StiAdgang($LoggFil)));
      $LoggData = is_array($LoggData) ? $LoggData : array();
      krsort($LoggData , SORT_NUMERIC);
        if ($_GET["bld"] == "loggstat") {
        $UkerA = array();
          foreach ($LoggData as $Tid => $Logg) {
          $UkerA[date("W" , $Tid)]++;
          }
        $UkerN = array_keys($UkerA);
        $Maks  = ceil(max($UkerA) / 5) * 5;
        $Snitt = array_sum($UkerA) / count($UkerA);
        $Bilde = ImageCreate(200,130);
        $BG    = ImageColorAllocate($Bilde,20,20,20);
        $Grao  = ImageColorAllocate($Bilde,50,50,50);
        $Gronn = ImageColorAllocate($Bilde,160,210,0);
        ImageLine($Bilde,0,0,199,0,$Grao);
        ImageLine($Bilde,0,9,199,9,$Grao);
        ImageLine($Bilde,0,120,199,120,$Grao);
        ImageLine($Bilde,0,129,199,129,$Grao);
          foreach (range(0 , 20) as $A) {
          ImageLine($Bilde,$A*10,0,$A*10,9,$Grao);
          ImageLine($Bilde,$A*10,120,$A*10,129,$Grao);
          }
        ImageLine($Bilde,199,0,199,9,$Grao);
        ImageLine($Bilde,199,120,199,129,$Grao);
          foreach ($UkerN as $Nr => $Uke) {
          ImageLine($Bilde,199-($Nr*5)+5,114-(($UkerA[$FrUke]/$Maks)*100),199-($Nr*5),114-(($UkerA[$Uke]/$Maks)*100),$Gronn);
          $FrUke = $Uke;
          }
        Header("Content-type: image/png");
        ImagePNG($Bilde);
        ImageDestroy($Bilde);
        die();
        }
      $Vis .= "<p>";
      $Vis .= $Adgang == 2 ? "All logg lagres i &laquo;$LoggFil&raquo;. \n" : "";
      $Vis .= "Alle tider er &laquo;dd.mm.&aring;&aring;&aring;&aring; - tt:mm:ss&raquo;.</p>\n\n<p></p>\n\n<div class=\"kode\"><h2 style=\"margin: 0;\">Statistikk ";
        if ($_GET["vis"] == "stat") {
        $Vis .= "<a href=\"$Skript?$Handler=vislogg" . ($Adgang == 2 && $_GET["brk"] ? "&amp;brk=$_GET[brk]" : "") . "\" style=\"font-weight: bold;\">&laquo;</a>";
        }
        else {
        $Vis .= "<a href=\"$Skript?$Handler=vislogg" . ($Adgang == 2 && $_GET["brk"] ? "&amp;brk=$_GET[brk]" : "") . "&amp;vis=stat\" style=\"font-weight: bold;\">&raquo;</a>";
        }
      $Vis .= "</h2>\n";
        if ($_GET["vis"] == "stat") {
        $Vis .= "<p>Kurva nedenfor viser antall loggf&oslash;ringer per uke de siste 40 ukene.</p>\n<p></p>\n\n";
        $Vis .= "<div style=\"width: 200px; height: 130px; background-image: url('$Skript?$Handler=vislogg&bld=loggstat" . ($Adgang == 2 && $_GET["vis"] == "stat" ? "&brk=$_GET[brk]" : "") . "');\">&nbsp;</div>\n";
        $UkerA = array();
          foreach ($LoggData as $Tid => $Logg) {
          $UkerA[date("W" , $Tid)]++;
          }
        $UkerN = array_reverse(array_keys($UkerA));
        $Vis .= "<p>[ Maksimum: " . max($UkerA) . " ] [ Gjennomsnitt: " . round(array_sum($UkerA) / count($UkerA) , 2) . " ] \n";
        $Vis .= "[ Denne uka (nr " . date("W") . "): " . intval($UkerA[($UkerN[count($UkerN)-1])]) . " ]</p>\n";
        }
      $Vis .= "</div>\n\n<p>";
      $A = 0;
        foreach ($LoggData as $Tid => $Logg) {
        $Vis .= $A > 0 ? "<br />\n" : "";
        $Vis .= "<strong>" . date("d.m.Y - H:i:s" , $Tid) . "</strong>&nbsp;&nbsp;&nbsp;$Logg";
        $A++;
        }
      $Vis .= "</p>\n\n";
      }
      else {
      $Vis .= "<p>Loggfila kan ikke &aring;pnes.</p>\n\n";
      }
    }
    elseif ($Handling == "visplass") {
      if ($_GET["vis"] == "diagram") {
      $Tilg = $Adgang == 2 ? $AllPlass : ($Brukere[($_SESSION["wse_bruker"])]["plass"] ? $Brukere[($_SESSION["wse_bruker"])]["plass"] : $BrkPlass);
      $Bruk = Storrelse(StiAdgang("."));
      $Pros = ($Bruk / $Tilg) * 100;
      $Grad = min(360 , $Pros * 3.6);
      $Bilde  = ImageCreate(600,200);
      $BG     = ImageColorAllocate($Bilde,0,0,0);
      $Skrift = ImageColorAllocate($Bilde,200,200,200);
      $Ledig  = ImageColorAllocate($Bilde,50,50,50);
        if ($Pros < 90) {
        $Brukt = ImageColorAllocate($Bilde,100,200,0);
        }
        else {
        $Brukt = ImageColorAllocate($Bilde,200,100,0);
        }
      ImageString($Bilde,3,350,50,"Plass tilgjengelig:",$Skrift);
      ImageString($Bilde,3,350,70,VisTall($Tilg)." B",$Skrift);
      ImageString($Bilde,3,350,120,"Brukt plass:",$Skrift);
      ImageString($Bilde,3,350,140,VisTall($Bruk)." B (".number_format($Pros,2,",","")." %)",$Skrift);
      ImageFilledArc($Bilde,175,100,300,150,$Grad,359,$Ledig,IMG_ARC_PIE);
      ImageFilledArc($Bilde,175,90,300,150,0,$Grad,$Brukt,IMG_ARC_PIE);
      Header("Content-type: image/png");
      ImagePNG($Bilde);
      ImageDestroy($Bilde);
      die();
      }
    $Vis  = "<h1>Plassforbruk</h1>\n\n";
    $Vis .= "<div style=\"width: 600px; height: 200px; background-color: transparent; background-image: url('$Skript?$Handler=visplass&vis=diagram'); background-repeat: no-repeat;\">&shy;</div>\n\n";
    }
    elseif ($Handling == "mappeov") {
    $Vis = "<h1>Mappeoversikt</h1>\n\n";
    }
    else {
    $Vis  = "<h1>Advarsel</h1>\n\n";
    $Vis .= "<p>Du har valgt en handling som ikke er definert.</p>\n\n";
    }
  }
  else {
  $Vis  = "<h1>Logg inn</h1>\n\n";
  $Vis .= "<form action=\"$_SERVER[REQUEST_URI]\" method=\"post\" name=\"skjema\">\n";
  $Vis .= "<table class=\"skjema\">\n";
  $Vis .= "<tr>\n<td class=\"nok\">Bruker:</td>\n";
  $Vis .= "<td class=\"ver\"><input type=\"text\" name=\"wse_bruker\" /></td>\n</tr>\n";
  $Vis .= "<tr>\n<td class=\"nok\">Passord:</td>\n";
  $Vis .= "<td class=\"ver\"><input type=\"password\" name=\"wse_passord\" /></td>\n</tr>\n";
  $Vis .= "<tr>\n<td class=\"ver\">&shy;</td>\n";
  $Vis .= "<td class=\"ver\"><input type=\"submit\" class=\"knapp\" value=\"Logg inn\" /></td>\n</tr>\n";
  $Vis .= "</table>\n</form>\n\n";
  }

  function Logg ($Logg) {
  global $Adgang , $_SESSION , $BrkMappe;
    if ($Adgang == 1) {
    $LoggFil = "$BrkMappe/$_SESSION[wse_bruker]/wse.log";
    }
    else {
    $LoggFil = "./wse.log";
    }
  $LoggData = unserialize(@file_get_contents($LoggFil));
  $LoggData = is_array($LoggData) ? $LoggData : array();
    if ($Skriv = @fopen($LoggFil , "w+")) {
    $Nokkler = array_reverse(array_keys($LoggData));
    $LoggData[time()] = $Logg;
      if ($Logg == $LoggData[($Nokkler[0])]) {
      unset($LoggData[($Nokkler[0])]);
      }
    $Nokler = array_keys($LoggData);
      while (time() - $Nokler[0] > (3600 * 24 * 7 * 20) && count($Nokler) > 1000) {
      unset($LoggData[($Nokler[0])]);
      $Nokler = array_keys($LoggData);
      }
    @fwrite($Skriv , serialize($LoggData));
    @fclose($Skriv);
    return TRUE;
    }
    else {
    return FALSE;
    }
  }

  function SjekkSti ($Sti) {
  global $OverRot;
  $Drep1 = substr($Sti , 0 , 2) == "..";
  $Drep2 = substr($Sti , 0 , 1) == "/";
  $Drep3 = ereg("[a-zA-Z]://" , $Sti);
    if (!$Sti or ($Drep1 && !$OverRot) or $Drep2 or $Drep3) {
    $Sti = ".";
    }
  return $Sti;
  }

  function StiAdgang ($Sti) {
  global $Adgang , $_SESSION , $BrkMappe , $Brukere;
    if ($Adgang == 2) {
    return $Sti;
    }
    elseif ($Adgang == 1) {
    $Under = $Brukere[($_SESSION["wse_bruker"])]["mappe"] ? $Brukere[($_SESSION["wse_bruker"])]["mappe"] : "$BrkMappe/$_SESSION[wse_bruker]";
    $Sti = (substr($Sti , 0 , 2) == "./" or $Sti == ".") ? substr($Sti , 2) : $Sti;
    return $Under . (strlen($Sti) > 0 ? "/$Sti" : "");
    }
  }

  function Storrelse ($Sti) {
  $Stor = filesize($Sti);
    if (is_dir($Sti)) {
    $Les  = @opendir($Sti);
      while ($Obj = @readdir($Les)) {
        if ($Obj <> "." && $Obj <> "..") {
        $Stor += Storrelse("$Sti/$Obj");
        }
      }
    @closedir($Les);
    }
  return $Stor;
  }

  function VisTall ($Tall) {
  return str_replace("," , " " , number_format($Tall));
  }

  function OppMappe ($Sti) {
    if ($Sti == ".") {
    return "..";
    }
    elseif (strlen(str_replace(array("." , "/") , "" , $Sti)) <= 0) {
    return "../$Sti";
    }
    else {
      if (substr(strrev($Sti) , 0 , 1) == "/") {
      $Sti = substr($Sti , 0 , strlen($Sti) - 1);
      }
    return substr($Sti , 0 , strrpos($Sti , "/"));
    }
  }

  function FilType ($FilNavn) {
  $Res = `file -bi '$FilNavn'`;
    if ($SemiPos = strpos($Res , ";")) {
    $FilType = substr($Res, 0 , $SemiPos);
    }
    else {
    $FilType = $Res;
    }
  return trim($FilType);
  }

  function KopierObjekt ($Sti1 , $Sti2) {
    if (is_dir($Sti1)) {
    $Res = @mkdir($Sti2);
    $Les = @opendir($Sti1);
      while ($Obj = @readdir($Les)) {
        if ($Obj <> "." && $Obj <> "..") {
        $Res = KopierObjekt("$Sti1/$Obj" , "$Sti2/$Obj") && $Res ? TRUE : FALSE;
        }
      }
    @closedir($Les);
    return $Res;
    }
    else {
    return @copy($Sti1 , $Sti2);
    }
  }

  function FlyttObjekt ($Sti1 , $Sti2) {
  $Res = KopierObjekt($Sti1 , $Sti2);
    if ($Res) {
    $Res = SlettObjekt($Sti1) && $Res ? TRUE : FALSE;
    }
  return $Res;
  }

  function SlettObjekt ($Sti) {
    if (is_dir($Sti)) {
    $Slett = TRUE;
    $Les = @opendir($Sti);
      while ($Obj = @readdir($Les)) {
        if ($Obj <> "." && $Obj <> "..") {
        $Slett = SlettObjekt("$Sti/$Obj") ? $Slett : FALSE;
        }
      }
    @closedir($Les);
    return @rmdir($Sti) ? $Slett : FALSE;
    }
    else {
    return @unlink($Sti) ? TRUE : FALSE;
    }
  }

  function MappeOv ($Sti) {
  global $Skript , $Handler;
  $Liste = array();
  $Les = @opendir(StiAdgang(SjekkSti($Sti)));
    while ($Obj = @readdir($Les)) {
      if (is_dir(StiAdgang(SjekkSti("$Sti/$Obj"))) && $Obj <> "." && $Obj <> "..") {
      $Liste[] = $Obj;
      }
    }
  @closedir($Les);
    if (count($Liste) > 0) {
    sort($Liste);
    echo "<ul>\n";
      foreach ($Liste as $Obj) {
      echo "<li><a href=\"$Skript?$Handler=vismappe&amp;sti=$Sti/$Obj\">$Obj</a>";
      echo MappeOv("$Sti/$Obj");
      echo "</li>\n";
      }
    echo "</ul>";
    }
  }

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title><?php echo $_SERVER["HTTP_HOST"]; ?> - WebServer Explorer</title>
    <link rel="shortcut icon" type="image/icon" href="wse.ico" />
    <link rel="stylesheet" type="text/css" href="wse.css" />
</head>
<body<?php

  if ($LoggInn[$Sikker] <> $Sikker) {
  echo " onload=\"document.skjema.wse_bruker.focus()\"";
  }


?>>
    <div id="ramme">
        <div id="topp"><span>WebServer Explorer</span><br />- De v&aelig;i tu k&oslash;nnekt tu j&oslash;r s&aelig;rver vitt&oslash;tt FTP</div>
        <div id="innhold">

<?php

echo $Vis;

  if ($PrintR) {
  echo "<div class=\"kode\"><pre>";
  print_r($PrintR);
  echo "</pre></div>\n\n";
  die();
  }
  elseif ($Handling == "mappeov") {
  echo MappeOv(".") . "\n\n";
  }

?>
        </div>
    </div>
    <div id="bunn"><?php

$Sign = $_SERVER["SERVER_SIGNATURE"];

echo substr($Sign , 9 , strlen($Sign) - 20);

?>&nbsp;|&nbsp;Sist oppdatert: <?php

echo date("d.m.Y - H:i:s" , filemtime($Skript));

?>&nbsp;|&nbsp;<a href="<?php

echo "$Skript?$Handler";

?>=vislogg">Vis logg</a>&nbsp;|&nbsp;<a href="<?php

echo "$Skript?$Handler";

?>=visplass">Plassforbruk</a>&nbsp;|&nbsp;<a href="<?php

echo "$Skript?$Handler";

?>=mappeov">Mappeoversikt</a>&nbsp;|&nbsp;<a href="<?php

echo "$Skript?$Handler";

?>=loggut">Logg ut</a></div>
</body>
</html>
WebServer Explorer er skrevet av Martin Nordal. | Nerdvar
-->