PEP-dwnld plug-in voor downloadknop met teller

Doel

Configureerbare downloadknop met teller via shortcode. Met beveiliging en E-mail notificatie.

Bijvoorbeeld:

Uitleg in het Engels.
Bestandsnaam: pep-dwnld-readme.txt
  • De plug-in is gemaakt in het Engels. De beschikbare (Google) vertaling in Nederlands, Duits, Frans of Spaans wordt getoond op basis van de in WordPress gekozen taal. Gewoon omdat het kan.
  • Voor de teller wordt het aantal downloads per datum bijgehouden. Het totaal wordt getoond.
  • Met een tweede shortcode is het totaal van de teller ook apart op te roepen, waarmee overal kan worden weergegeven dat het aantal downloads voor dit bestand 9 is.
  • De plug-in is voor € 30,00 (BTW vrijgesteld) verkrijgbaar via de webwinkel.

Aanleiding/overwegingen

  • Met een link rechtstreeks naar bestanden, heb je geen idee hoe vaak deze worden gedownload. Het is aardig om te kunnen zien in hoeverre hier gebruik van wordt gemaakt.
  • Detecteren van downloads via Google Analytics of dergelijke, vind ik een omslachtige weg.
  • Ik ontdekte voorheen dat mijn download link vaak werd omzeilt door rechtstreekse links.

Veiligheid

  • Door actieve monitoring zag ik dat veel bots mijn websites bezoeken. Regelmatig kwaadaardige pogingen om toegang tot het systeem te verkrijgen. Ook zag ik pogingen tot SQL injecties of het benaderen van bestanden waar men niets te zoeken heeft.
  • Vrijwel altijd vond ik de afgevangen IP adressen van deze ‘bezoekers’ terug bij Abuseipdb.com.
  • De mogelijkheden om in te breken in de website (toegang tot andere bestanden, SQL injectie en andere technieken) heb ik getracht verder tegen te gaan.
  • De veiligheid is vergroot door directe toegang tot de download bestanden te blokkeren en geen link naar de bestanden te publiceren.
  • Rechtstreekse benadering van de plug-in wordt weerhouden.
  • Fouten worden afgevangen, waarbij een notificatie E-mail met details naar de website eigenaar wordt gezonden. Eventuele pogingen tot misbruik komen zo snel aan het licht.
  • Experimenteren wordt ontraden. U loopt de kans dat mijn systeem uw verdere pogingen geheel blokkeert.
  • Via transient settings wordt op de achtergrond tijdens een sessie bijgehouden welke bestanden zijn gedownload, zodat deze niet meerde keren in de database geteld wordt. Hier wordt ook bijgehouden of eerder in dezelfde sessie een download is geweigerd. Alle volgende downloads in dezelfde sessie zullen dan ook worden geweigerd.
  • Meer dan 800 bestands typen (MIME types) worden op basis van bestandsextensie herkend en ondersteund.

Opzet

  • De plug-in heeft een instellingenpagina in vier secties:
    • Instellingen voor mappen en bestanden
      Instellen van de downloadmap waarin de bestanden zijn geplaatst.
    • Instellingen voor downloadformulier
      • Kies voor knop stijl (plug-in, thema, combi).
      • Toon bestandsextensie in knop ja/nee.
      • Toon downloadteller in knop ja/nee.
      • Toon bestandsnaam ja/nee..
    • Instellingen voor optionele downloadmeldingen
      • Melding per E-mail ja/nee.
      • Aanvullend kan selectief ingesteld worden of meldingen moeten worden verzonden in geval van download, een verwijzer fout, een herhaaldelijke fout, of een ontbrekend bestand.
      • Instelbaar voor afzender en geadresseerde.
      • Optionele weergave van voet tekst t.a.v. technische realisatie.
    • Beheer van teller
      • Teller voor alle bestanden op 0 te zetten.
      • Teller voor alle bestanden terug te zetten naar begin van het huidige jaar.
      • Teller voor een of meer geselecteerde bestanden terugzetten naar een te kiezen datum. Standaard is de datum van de volgende dag, waarmee teller voor het bettreffende bestand effectief op 0 komt te staan.
      • Weergave van inhoud van de transient met een resetknop voor het verwijderen van de transient om eigen test mogelijk te maken.
  • Shortcode voor downloadknop
    • file (bestandsnaam) is daarbij een verplicht veld.
    • dwnldtxt (beschrijving) is optioneel.
[PEPdwnldbutton file="yourfilename.ext" dwnldtxt="Your description."]
  • Shortcode voor alleen de teller
    • file (bestandsnaam) is daarbij een verplicht veld.
[PEPdwnldcounts file="yourfilename.ext"]
  • Shortcode geeft mogelijkheid voor het overschrijven van instellingen:
    Deze overschrijvingen kunnen per getoonde knop opgegeven worden.
    • dwnldtxt=”Geeft de beschrijving of nader commentaar voor het bestand.”
    • btntxt=”yourbuttontext” overschrijft de knoptekst “Download”.
    • showcounter=”yes” of “no”, voor weergave van de teller.
    • showextension=”yes” of “no”, voor weergave van de bestandsextensie.
    • showfilename=”yes” of “no”, voor weergave van bestandsnaam bij de beschrijving.
    • showbuttontype=”plugin”, “theme” of “combi” voor weergave van de knopstijl.
    • sendnotification=”yes” of “no” overschrijft de instelling voor het verzenden van mail bij Download. Dit heeft geen effect op de instelling voor mail bij gedetecteerde fouten.
  • Beperkingen:
    • Lay-out van is op basis van een formulier met tabel die in de code van de plug-in opgenomen. Dat geeft beperkingen, maar maakt het anderzijds mogelijk een netjes uitgelijnde download lijst te creëren. Zie o.a. de download pagina op Peppink.nl
    • Ik documenteer al mijn scripts met steenkolen Engels.
    • Bij update worden wijzigingen (ook in CSS bestanden) overschreven. Stel die dus (indien aangepast) eerst veilig.

Voorbereiding

  • Erkenning
    De plug-in is ontwikkeld met gebruikmaking van:
  • Ik ga uit van WordPress versie 6.1.1. Met lagere versies werkt het vermoedelijk, maar heb ik niet getest.
  • Ik ga uit van PHP versie 8.0.
  • Check of WordPress mail functionaliteit werkt.

Uitvoering

  • Geleverde ZIP bestand bevat al wat nodig is.
    Bekijk het pep-dwnld-readme.txt bestand (in Engels, en op deze pagina als voorbeeld download beschikbaar) voor een overzicht en uitleg van:
    • Requirements
    • Installation and Activation
    • Configuration
    • Quick start with your download buttons
    • Unininstall
    • Version change history
  • Eenvoudige installatie wordt hieronder met illustraties beschreven.
  • Voorzorg. Maak tevoren altijd een back-up van database en bestanden.

Eerst maar het resultaat

  1. Knop type: plugin, thema of combi
    Eerst met uiterlijk van de plug-in volledige weergave.
    Knop met tekst ‘Download’ en weergave van bestand extensie in hoofdletters en daaronder in kleinere letter de teller van het aantal downloads. Daarnaast wordt in de tabel een omschrijving en de bestandsnaam weergegeven.
    Uitleg in Engels.
    Bestandsnaam: pep-dwnld-readme.txt

    Op de instellingen pagina kan ook voor de standaard knop weergave van het door u gebruikte thema worden gekozen.
    Uitleg in Engels.
    Bestandsnaam: pep-dwnld-readme.txt

    Ook is het mogelijk een combinatie te kiezen, waarbij de weergave van de plug-in wordt gecombineerd met de standaard kleur instellingen van het gebruikte thema. (= standaard insteller)
    Uitleg in Engels.
    Bestandsnaam: pep-dwnld-readme.txt
  2. Verdere opties voor weergave
    Dit kan via instellingen (voorkeur voor gehele website), maar deze instellingen kunnen in de shortcode daar waar gewenst voor elke afzonderlijke knop ook worden overschreven.
    Een aantal voorbeelden:
    Zonder extensie
    [PEPdwnldbutton file="pep-dwnld-readme.txt" dwnldtxt="Uitleg in Engels. Requirements, Installation, Configuration, Quick start, Deactivate/Uninstall, Version change history." showextension="no"]
    Uitleg in Engels. Requirements, Installation, Configuration, Quick start, Deactivate/Uninstall, Version change history.
    Bestandsnaam: pep-dwnld-readme.txt

    Zonder teller
    [PEPdwnldbutton file="pep-dwnld-readme.txt" dwnldtxt="Uitleg in Engels. Requirements, Installation, Configuration, Quick start, Deactivate/Uninstall, Version change history." showdwnldbutton="plugin" showextension="no" showcounter="no"]
    Uitleg in Engels. Requirements, Installation, Configuration, Quick start, Deactivate/Uninstall, Version change history.
    Bestandsnaam: pep-dwnld-readme.txt

    Zonder omschrijving
    [PEPdwnldbutton file="pep-dwnld-readme.txt" showdwnldbutton="plugin" showextension="no" showcounter="no"]
    Bestandsnaam: pep-dwnld-readme.txt

    Bestandsnaam in knoptekst zonder teller en een andere omschrijving
    [PEPdwnldbutton btntxt="pep-dwnld-readme.txt" file="pep-dwnld-readme.txt" dwnldtxt="Beschrijft alle ins en outs in het Engels." showextension="no" showfilename="no" showcounter="no"]
    Beschrijft alle ins en outs in het Engels.

    Met overschrijven van de knopstijl
    Gebruik: showdwnldbutton=”plug-in” of “theme” of “combi”.
    [PEPdwnldbutton file="pep-dwnld-readme.txt" dwnldtxt="Beschrijft alle ins en outs in het Engels." showbuttontype="plugin"]
    Beschrijft alle ins en outs in het Engels.
    Bestandsnaam: pep-dwnld-readme.txt

    Bij niet bestaande bestandsnaam verschijnt een melding.
    [PEPdwnldbutton file="PEP-dwnld-readme.PDF"]

    Het bestand bestaat niet!!

    Bestandsnaam = PEP-dwnld-readme.pdf


    Bij niet opgegeven bestandsnaam verschijnt een melding.
    [PEPdwnldbutton]

    Onjuiste invoer!!

    Ontbrekende bestandsnaam



    Aantal downloads = [PEPdwnldcounts file="pep-dwnld-readme.txt"] geeft: Aantal downloads = 9

    Weergave op telefoon:

Installatie / Update

  1. Installatie van de WordPress Plug-In
    Kies ‘Nieuwe plugin’

  2. Kies ‘Plugin uploaden’

  3. Selecteer via ‘Bestand kiezen’ het aangeleverde ZIP bestan


  4. Installatie of Update
    Indien sprake is van een nieuwe versie, dan kan deze op dezelfde wijze over de bestaande (actieve) versie worden geplaatst. De ingevulde database instellingen blijven behouden, maar eventueel gemaakte aanpassingen in CSS of PHP bestanden worden overschreven. Maak voor de zekerheid altijd tevoren een back-up van database en (plug-in)bestanden.
    NB. Er wordt niet automatisch op de beschikbaarheid van updates gecontroleerd.

  5. Plug-in directory na installatie van de bestanden
    Installatie pakt de bestanden uit in Plug-in directory PEP-dwnld

  6. In WordPress bij Plug-ins zichtbaar na activatie
    Met een toegevoegde link om ook van hier rechtstreeks naar de instellingen pagina te kunnen gaan.

Instellingen

  1. Instellingen PEP Download met teller
    Instellingen kunnen worden aangepast onder WordPress menu Instellingen PEP Dwnld.
    Vul eenmalig de vanaf de hoofdmap het pad in naar de map waarin zich de download bestanden geplaatst worden (zonder slash aan het eind).
  2. Instellingen voor downloadformulier
    Hier kunnen de eerder beschreven standaard instellingen naar wens worden opgegeven.

  3. Instellingen voor downloadmeldingen
    Selecteer ook hier naar wens of u zelf een notificatie wilt ontvangen wanneer een bestand is gedownload en/of wanneer een fout is gedetecteerd.

  4. Teller opnieuw instellen
    Deze optie is ondergebracht onder het tabblad ‘Onderhoud’. Wanneer nog geen downloads in de tabel opgenomen zijn, wordt dat gemeld. Er valt dan nog niets te resetten.
    Wanneer eenmaal bestanden zijn gedownload, zullen de bestandsnamen (alfabetisch) verschijnen en worden automatisch een aantal knoppen toegevoegd.
    Met ‘Reset alle tellers naar begin dit jaar”, wordt alle inhoud ouder dan 1 januari van het huidige jaar gewist, waardoor de teller voor elk bestand nog de downloads van dit jaar zal aangeven.
    Uit de selectielijst daaronder kunnen een of meerdere bestandsnamen geselecteerd worden om die voor een te selecteren datum te wissen.
    De datum staat standaard op de volgende dag, waarmee de teller voor het gekozen bestand op 0 gezet wordt.
    Op deze wijze kunnen b.v. ook bestandsnamen uit de lijst worden gewist voor bestanden die inmiddels niet meer beschikbaar zijn.

  5. Notificatie E-mail
    Hier een voorbeeld van het verzonden bericht bij een Download. Zonder onnodig gegevens van de ‘legale downloader’ te verzamelen.


    Als een fout wordt gedetecteerd, wordt de download afgewezen.


    Tot slot een voorbeeld van het bericht dat verzonden kan worden als een fout is opgetreden.
    • De reden van afwijzing wordt vermeld.
    • De gedetecteerde verwijzer wordt vermeld.
    • De gebruikte oproep wordt vermeld.
    • Het IP adres wordt vermeld. (Hier als voorbeeld even handmatig.)
    • De ‘User agent’ wordt weergegeven.
      U ziet: Het onrechtmatige bezoek werd afgevangen! Ondanks dat in de oproep allerlei opties werden meegegeven. Het IP adres werd overigens ook gevonden bij AbuseIPDB!

  6. Deactivatie en Verwijderen
    Bij deactivatie van de plug-in wordt alleen de functionaliteit uitgeschakeld. De teller informatie blijft behouden, want de tabel met downloads blijft staan. Ook de opgeslagen instellingen blijven behouden en alles wordt weer zichtbaar als de plug-in weer wordt geactiveerd. Ook bij installatie van een nieuwe versie blijft alles behouden.
    Bij verwijderen van de plug-in, worden alle bijbehorende instellingen en de gemaakte download tabel geheel verwijderd.

Tips

  • Disalow’ de download directory in uw robots.txt bestand
    Dan wordt een rechtstreekse link naar de download bestanden niet geïndexeerd door robots, die deze instellingen respecteren .
Disallow: /hier/het/pad/naar/uw/downloads/
  • Blokkeer rechtstreekse benadering van bestanden
    Plaats een .htaccess bestand met volgende inhoud in de download map.
#Block all dicect access to all files in this directory
<FilesMatch ".*">
  Require all denied
</FilesMatch>

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze site gebruikt Akismet om spam te verminderen. Meer informatie over hoe uw reactiegegevens worden verwerkt.