auch wenn der Titel dieses Threads eventuell verwirrend klingt - mir ist leider kein besserer eingefallen - will ich hier das 'Problem' , einige Lösungsansätze vorstellen und anschließend mit anderen an dieser Problematig interessierten Leuten darüber und über Alternativen diskutieren:
Das Problem:
Es existiert ein Verzeichnis(inklusive Unterverzeichnisse

Der Zugang zu diesen Inhalten sollte allerdings nicht 'plump' sondern vielmehr (im Extremfall) für jeden User, jede Gruppe und jede Datei/jeden Ordner einzeln definierbar sein.
(ich hoffe ich habe das so einigermaßen gut ausgedrückt - wenn nicht einfach nachfragen, ich erkläre dann nochmal was ich meine)
Des weiteren sollen natürlich die Dateien über den Webserver und _nicht_ über einen anderen Dienst verteilt werden (auch wenn FTP hier offensichtlich das bessere Protokoll wäre).
Einige Lösungsansätze:
Generell: Die Verzeichnisnavigation soll weiterhin (aus optischen Gründen) per php und im phpBB erfolgen.
1) Zugangskontrolle via .htaccess:
Eine alte aber bewährte Methode. Per php könnte man die Gruppen bzw. Userfiles auf dem neusten Stand und mit phpBB synchronisiert halten.
Die Rechtevergabe könnte hier über die <Files>- bzw. <Directory>- Direktiven erfolgen.
2) Zugangskontrolle via php und rewrite-Engine:
Klingt verrückt, funktioniert aber:
Generell klickt der User hier nicht direkt die Dateien an sondern erst einmal nur eine php-Datei welche die ID der zu öffnende Datei / des zu öffnenden Ordners enthält, beispielsweise
http://www.example.com/ddl.php?id=4711
Diese php-Datei prüft nun ob der entsprechende User zu dieser Aktion berechtigt ist(die kann man im gegensatz zur .htaccess-Kontrolle dann z.B. noch vom Zeitpunkt oder anderen Dingen abhängig machen...)
Sollte diese Prüfung zu Gunsten des Users ausfallen erstellt nun die php-Datei eine Token-Datei in einem nicht per http zugänglichen Ordner wobei der Name dieser Datei einer (nur als Beispiel) 20-stelligen Zufallszahl entspricht(z.B. 12345678901234567890).
Anschließend wird der User zur eigentlichen Datei weitergeleitet, wobei die entsprechende URL um die gerade genutzte Zufallszahl erweitert wurde(z.B. http://www.example.com/ddl/somedir/eine ... 1234567890).
Hier prüft nun die Rewrite-Engine ob der für die Datei benötigte Token vorhanden ist. Sollte dies nicht der Fall sein wird der User zu einer Fehlerseite weitergeleitet.
Mit solchen Token ist es ausserdem möglich relativ einfach zu überprüfen ob die IP des Users derjenigen entspricht von der die Datei angefordert wurde.
Theoretisch müsste sich dann 'nur' noch ein Cron-Job bzw. die cron.php-Datei um das regelmäßie aufräumen der Token kümmern...
3) Zugangskontrolle via php und Symlinks...
Wie in 2) nur dass hier statt den Token bei einem positiven Resultat nach der Berechtigungsprüfung ein Symlink zur gewünschten Datei erstellt und man anschließend zu diesem Symlink weitergeleitet wird - wobei diese nicht direkt sondern nur über solche Links erreichbar ist.
Diese Symlinks sollten natürlich so wie die Token bei 2) Zufallsgeneriert sein damit ein erraten selbiger fast unmöglich wird.
Mit solchen Symlinks ist es ausserdem möglich relativ einfach zu überprüfen ob die IP des Users derjenigen entspricht von der die Datei angefordert wurde wenn man hier noch die Rewrite-Engine hinzuzieht.
Auch hier müsste wie bei 2) ein Cron-Job bzw. cron.php dafür sorgen dass diese Links regelmäßig aufgeräumt werden...
4) Zugang und download via php...
Man kann allerdings auch - nachdem die Rechteüberprüfung für den User positiv verlaufen ist den Passenden Content-Type senden und anschleßend die vom User angeforderte Datei z.B. per readfile-Funktion auszugeben. Diese Methode würde es zusätzlich erlauben, relativ einfach eine maximale Download-Durschnittsgeschwindigkeit festzulegen.
Die Frage:
Was haltet ihr von den einzelnen Ideen. Wo seht ihr Vor- und wo Nachteile? Welche Methode würdet ihr bevorzugen? Habt ihr andere Ideen wie sich so etwas realisieren lässt?
Auch wenn ich mir schon zu jedem dieser Punkte eigene Gedanken gemacht habe möchte ich diese erst einmal für mich behalten um keinen in seiner Meinung / seinen Ideen zu beeinflussen - auf jeden Fall bin ich schon gespannt was bei dieser Diskussion herauskommt

bis bald
Daniel Heinrich
PS: Wie gesagt: sollte ich irgendetwas schlecht erklärt haben - sagt es einfach - ich erkläre es gerne noch einmal
