Malle 221 - ich konnte dem Owner die Schreibrechte entziehen :-)
Das ist ok, bis dahin gehts auch ;)
# Aussperren vermeiden
$owner = 4 if $owner < 4;
Ich nehme mal an, dass diese Seite normalerweise mit .htaccess vor pösen Purschen gesichert ist.
Der hauptsächliche Schutz besteht darin, dass eine $basedir als Attribut für die Seite konfigurierbar und somit nach außen hin nicht sichtbar ist. D.h., dass die in allen Requests übertragene Directory erst serverseitig auf absolut zusammengepappt wird, z.B.:
elsif($self->param('mkdir')){
mkdir($self->eav('basedir')."/".$self->param('indir')."/".$self->param('newdir')) ||
return do{
$self->header('x-param' => $self->http_query({
errstr => "Fehler beim Anlegen Verzeichnis: $^E"
}));
};
my $dir = $self->param('indir')."/".$self->param('newdir');
$self->lsdir($dir);
}
Etwas rumpatchen in den id-Attributen des DOM, um Zugriffe auf /root zu erhalten oder Anlegen von Ordnern wie "/dings" hast Du ja abgefangen. Ich konnte nur die Anzeige durcheinander bringen, in dem ich dem Root-Node deines Baums eine schräge ID gegeben habe. Aber ich bin kein Unix-Experte, keine Ahnung welche Hacks da möglich sind. Auf jeden Fall musst Du aufpassen, dass Du mit dieser ID nichts injiziert bekommst.
Verstehe ich nicht ganz... die root-id im DOM lautet 'tree', ansonsten so wie die SubDir und jedes <li>-Element kriegt .DIR sowie .FILE als internes Attribut verpasst, das ist im DOM gar nicht sichtbar aber im EventListener notwendig.
Den Massen-Upload hast Du noch disabled?
Nene, das geht schon: DirPanel sichtbar machen und dann auf das <label>Dateien zum hochladen:</label> klicken. Danach füllt sich die darunterliegende Tabelle und hier kannst Du auch ggf. den Dateinamen ändern oder fürs Upload das Häkchen rausnehmen.
Oder habe ich die Funktion im DirPanel nur nicht entdeckt? BTW finde ich die Usability der Panels etwas - gewöhnungsbedürftig. Aber das stand ja nicht zur Debatte.
Doch ;)
Probiers mal aus, das Upload ist echt der Hit, jede Datei hat eine eigene Progressbar. Deine Dateien kannst Du ja auch wieder löschen.... am besten ein eigenes Verzeichnis anlegen.
Danke für Dein Feedback!