Downloadcontrol_XH 1.7

für CMSimple_XH ab Version 1.6

Mit Downloadcontrol kann man auf einer Website Dateien und Dateiengruppen auch aus geschützten Ordnern zum Download anbieten und diesen Download auf verschiedene Weise kontrollieren und dokumentieren.

Neu bei 1.7:

Updaten

Zip-Datei öffnen und in CMSimple-Basisordner kopieren. Das Plugin wird dann mit der neuen Version überschrieben mit Ausnahme der Konfig-, Log- und Zähldateien. Sobald man das Pluginbackend aufsucht, wird eine neue Konfigdatei unter Berücksichtigung alter Einstellungen generiert und die Log- und Zähldateien werden an den neuen Speicherplatz kopiert.

Der Schutz von Dateien

Dateien, die auf Ihrem Webserver unterhalb Ihrer Basis-URL liegen, können durch einfache Eingabe der vollständigen URL von jedem im Internet heruntergeladen werden, solange sie nicht speziell geschützt sind. Den Schutz stellt man im Webserver ein. Auf den meisten Webservern läuft das Apache-System, und dort genügt es, eine ,htaccess-Konfigurationsdatei in einen Ordner zu legen, um alle Dateien dieses Ordners und aller seiner Unterordner gegen Herunterladen schützen. CMSimple_XH macht von dieser Möglichkeit viel Gebrauch um zu verhindern, dass Einstellungen ausspioniert werden. Läuft auf dem Webserver aber ein anderes System, z.B. Nginx oder Microsoft-IIS, dann muss man sich um den Dateischutz auf andere Art kümmern. Welcher Webserver genutzt wird, zeigt CMSimple_XH unter Einstelluungen > Info an.

Diese .htaccess-Dateien benötigen weder Downloadcontrol_XH noch erfordert Downloadcontrol_XH das Vorhandensein von .htaccess. Mit Downloadcontrol_XH können Sie Dateien auch ohne .htaccess in ansprechender Form zum Download anbieten. Allerdings können dann diese Dateien auch durch direkte URL-Eingabe heruntergeladen werden, wobei das dann von Downloadcontrol_XH nicht mitgezählt wird. Darum bietet es sich an, Downloadcontrol_XH zusammen mit .htaccess zu nutzen.

Der Basisordner von Downloadcontrol

Downloadcontrol muss zuerst wissen, wo die anzubietenden Download-Dateien sind. Dieser Basisordner wird in der Konfig angeben. Ohne Angabe (so ist die Voreingestellung) ist dieser Ordner der normale Download-Ordner, jeder Eintrag wird als Unterordner des Standard-Download-Ordners angesehen. Bei der Installation von Downloadcontrol_XH wird außerdem als Unterordner des normalen Downloadoardners der Ordner protected erstellt, der eine .htaccess-Datei enthält.

Die Voreinstellung hat allerdings zwei Nachteile:

  1. Aus dem Downloads-Ordner kann weiterhin ohne Downloadcontrol heruntergeladen werden und diese Downloads werden dann nicht gezählt in der Download-Statistik.
  2. Man muss für Downloads aus dem protected-Ordner immer diesen Ordner im Downloadcontrol-Pluginaufruf angeben, z.B. {{{control 'protected/meineDatei.doc'}}}

Stattdessen kann man die .htaccess-Datei aus dem protected-Ordner in den normalen Downloads-Ordner verschieben. Dann werden Downloads protokolliert und Downloads sind nur über Downloadcontrol (oder DLcounter_XH) möglich.

Die andere Alternative ist, als Downloadcontrol-Basisordner den protected-Ordner einzustellen. Dann stimmt die Statistik, beschränkt sich aber auf Downloads aus dem protected-Ordner. Außerdem sind die Pluginaufrufe einfacher. Gleichzeitig kann man den Standard-Downloads-Ordner für einfache Downloads, wie pdfs, weiter nutzen.

Zu beachten ist, dass sich bei einer Änderung des Basis-Ordners in allen Downloadcontrol-Pluginaufrufen die Pfadangaben ändern. Die Zähldateien bleiben hingegen unverändert.

Plugin-Kurzaufrufe

Nutzt man die Kurzaufrufe, braucht man sich über Datenpfade, Kommas und korrekte Schreibung der angebotenen Dateien keine Gedanken zu machen. Im Backend eine Nummer anklicken und die gewünschten Dateien und die Darstellungsform auswählen.

Die Anzahl der Kurzaufrufe ist in der Konfig einstellbar. Der Pluginaufruf lautet entsprechend der gewählten Nummer, z.B. bei 1:
{{{control 1}}}

Beim Pluginaufruf prüft das Plugin, ob das Argument eine Zahl ist. Trifft das zu, dann schaut es nach, welche Anweisungen und Downloads unter diesem Kurzaufruf hinterlegt sind. Findet es nichts, wird eine Fehlermeldung ausgegeben.

Log, Downloadzähldatei und E-Mail-Benachrichtigung

Log
Downloadcontrol führt Protokoll darüber, welche Datei wann von wem heruntergeladen wurde. Der Herunterladende wird entweder über Memberpages/Register_XH oder Namensnachfrage ermittelt, andernfalls wird die IP-Adresse aufgezeichnet.
Das Log kann durch Klick auf Log-Sync mit dem Log von Dlcounter_XH synchronisiert werden. Dabei werden in beide Logs die jeweils fehlenden Einträge in der richtigen Reihenfolge eingefügt. Außerdem wird die Zähldatei von Downloadcontrol_XH entsprechend der neuen Einträge ergänzt.

Zähldatei
Unabhängig vom Log werden die Downloads pro Datei gezählt. Dateien gleichen Namens in unterscheidlichen Ordnern werden als eine Datei gezählt. Falls in der Konfig ein Separatorzeichen zwischen dem eigentlichen Dateinamen und der Versionsnummer eingegeben wurde, gibt es zusätzlich einer versionsübergreifenden Zählung für entsprechende Dateien.

Auch wenn man eingestellt hat, den Besuchern immer die versionsübergreifende Zählung zu zeigen, versucht das Plugin ein möglichst vernünftiges Ergebnis zu liefern, und wenn es diese Zählung bei einer Datei nicht gibt, wird stattdessen die normale Zählung genommen.

Die Zähldatei ist im Backend editierbar, ihr Format ist vom Typ "ini" (d.h. zeilenweise Schlüssel[Dateiname] = Anzahl). Da die Zeichen ?{}|&~!()^"#; eine spezielle Bedeutung haben, werden diese in der Liste intern zu _ umgewandelt. Diese Zeichen können in Dateinahmen trotzdem verwandt werden, werden aber im Backend-Zähler aus genannten Grund nicht dargestellt.

E-Mail-Benachrichtigung
Auf Wunsch kann bei jedem Download eine entsprechende E-Mail an einen Administrator verschickt werden.

Pluginaufruf

{{{control 'Datei(en)/Ordner' , 'Startdatum' , 'Enddatum' , 'Passwort' , 'Linkstil' , 'Namen/Ortnachfrage'}}}

Anzahl der Downloads einer Datei

{{{controlcount 'Dateinamen'}}}
Diese Funktion wird ab Version 1.7 eher selten gebraucht, da über die Konfig einstellbar. Eine einfache Zahl wird zurückgegeben. Auch bei Dateien in Unterordners des geschützen Ordners wird immer nur der Dateinamen ohne Ordnernamen erwartet. Darum werden verschiedene Dateien gleichen Namens in unterschiedlichen Unterordnern als eine Datei gezählt.

Beispiele für herkömmliche Pluginaufrufe

{{{control 'meineDatei.doc','','','','button'}}}
Großer Button zum Download von ./userfiles/downloads/protected/meineDatei.doc

{{{control 'meineDatei.doc,unterordner/meineanderedatei.doc','','','Hallo'}}}
Passwort "Hallo" wird verlangt für den Download der oben genannten Datei und auch von
./userfiles/downloads/protected/unterordner/meineanderedatei.doc

{{{control '','1.1.2015','1.1.2017','','',1}}}
Alle Dateien des Downloadcontrol-Basisordners werden zwischen 1.1.2015 und 1.1.2017 zum Download angeboten, wobei immer nach Name und Wohnort des Downloaders gefragt wird.

Geschichte

Das Plugin wurde entwickelt aus dem Add-On Protecteddownload von svasti, welches 2013 und bis Version 1.5 entwickelt wurde. Holger Irmler fügte 2015 aufgrund einer Nutzeranfrage Zeitsteuerung und E-Mail-Benachrichtigung hinzu und machte daraus ein Plugin. Svasti entwickelte es anschließend weiter und änderte den Namen zu Downloadcontrol_XH 1.6, da es schon ein Plugin namens protected_Download von Emanuel Marinello gab.

Die vorliegende Version 1.7 wurde durch eine Nutzeranfrage von Tata angeregt. Vielen Dank fürs Testen an mhz.