Fryboyter

Isso in Go

Isso ist aktuell mein bevorzugtes Kommentarsystem für Internetseiten, da man hierfür nur eine SQLite-Datenbank benötigt. Leider war die Installation in der Vergangenheit oft etwas problematisch. Aktuell ist wohl eine Installation über PyPI gar nicht bzw. nur über Umwege möglich (https://github.com/posativ/isso/issues/617).

Durch Zufall bin ich heute bei Github auf go-isso gestoßen. Der Entwickler möchte eine API kompatible Alternative zu Isso anbieten für die er die Programmiersprache Go nutzt. Somit braucht man im besten Fall nach Veröffentlichung einer neuen Version nur eine einzelne Datei herunterladen und ausführen. Bei Hugo klappt das zumindest sehr gut.

Der Entwickler weist aber aktuell darauf hin, das go-isso noch mit Vorsicht zu genießen ist, da es sich um sein erstes Projekt mit Go handelt, so dass der Code vermutlich qualitative Verbesserungen vertragen kann. Bugs sind ebenfalls nicht ausgeschlossen. Kurz gesagt, Benutzung auf eigene Gefahr.

Vielleicht hat ja der eine oder andere Leser dieses Artikels Lust und Zeit, sich an go-isso zu beteiligen. Gesucht werden auch Leute die sich mit Javascript auskennen. Da ich weder das eine noch das andere beherrsche, werde ich wohl selbst nur testen und ggf. Bugs melden.

OSBN | General

IP-Nummer in der Isso-Datenbank nach 7 Tagen anonymisieren

Martin von blog.mdosch.de hat vor einiger Zeit einen Artikel veröffentlicht in dem er gezeigt hat, wie man die in der Datenbank von Isso gespeicherten IP-Nummern der Kommentare anonymisiert indem man diese einmal wöchentlich mit 127.0.0.1 überschreibt.

Den Befehl (Update comments set remote_addr = “127.0.0.1”;) habe ich damals für meine Isso-Instanz übernommen. Am Wochenende hatte ich mir mal wieder meine diversen Konfigurationen und Dokumentationen angesehen und bin auch auf besagten Befehl gestoßen. Hierbei habe ich mir überlegt, was ist wenn jemand die IP-Nummer jedes einzelnen Eintrags für beispielsweise 7 Tage aufbewahren will oder muss? Denn das klappt mit dem Befehl nicht wirklich.

Denn nehmen wir mal an, der Cronjob der den Befehl ausführt wird immer am Sonntag um 15 Uhr gestartet. Schreibe nun jemand um 14 Uhr einen Kommentar wird dessen IP-Nummer in der Datenbank trotzdem um 15 Uhr mit 127.0.0.1 überschrieben.

Ich habe mir daher einmal die Datenbank von Isso genauer angesehen. In der Tabelle comments gibt es die Spalte created. In dieser ist pro Kommentar ein Wert wie 1369140347.0 vorhanden. Hierbei handelt es sich um die sogenannte Unixzeit die angibt wie viele Sekunden seit dem 01. Januar 1970, 00:00 UTC vergangen sind. Die Verwendung dieser Zeitrechnung ist in Datenbanken weit verbreitet, aber für den Menschen quasi nicht lesbar und nicht im Kopf umrechenbar.

Ich habe mir daher erst einmal eine Ausgabe erstellt die mir den Timestamp, den Timestamp in einer für Menschen lesbaren Forum sowie den jeweiligen Kommentar anzeigt.

SELECT created, strftime('%d-%m-%Y %H:%M:%f', datetime(created, 'unixepoch')) as createdhr, text 
FROM comments;

Somit sehe ich bei weiteren Tests wie alt die Kommentare tatsächlich sind.

Als nächstes habe ich den Befehl so erweitert, dass nur die Kommentare angezeigt werden, die 7 Tage alt sind.

SELECT created, strftime('%d-%m-%Y %H:%M:%f', datetime(created, 'unixepoch')) as createdhr, text 
FROM comments
WHERE created > strftime("%s", "now", "-7 days");

Hiermit wird der aktuelle Zeitpunkt abzüglich 7 Tage berechnet und verglichen ob der Wert in created größer als dieser Wert ist.

Hierbei werden allerdings auch die Kommentare angezeigt bei denen die IP-Adresse in der Spalte remote_addr bereits auf 127.0.0.1 geändert wurde. Da es unnötig ist jedes mal den Wert mit dem gleichen Wert zu überschreiben, habe ich den Befehl nun noch einmal um eine Bedingung erweitert bei der nur die Einträge angezeigt werden bei denen bei remote_address etwas anderes als 127.0.0.1 eingetragen ist.

SELECT created, strftime('%d-%m-%Y %H:%M:%f', datetime(created, 'unixepoch')) as createdhr, text 
FROM comments
WHERE created > strftime("%s", "now", "-7 days")
AND NOT remote_addr = '127.0.0.1';

Nachdem ich mir nach ein paar Tests ziemlich sicher bin, dass es funktioniert habe ich den Befehl so geändert, dass er mir die betreffenden Einträge nicht anzeigt sondern bei diesen die IP-Nummern mit 127.0.0.1 überschreibt.

Update comments set remote_addr = "127.0.0.1"
WHERE created > strftime("%s", "now", "-7 days")
AND NOT remote_addr = '127.0.0.1';

Nun kann man den Befehl mittels eines Cronjobs täglich ausführen. Hierbei sollte man allerdings berücksichtigen, dass die Berechnung des Alters nicht absolut genau ist, so das manche Kommentare unter Umständen erst nach 7,x der 8 Tagen berücksichtigt werden. Hier dürfte es helfen den Cronjob so zu konfigurieren, dass er mehrmals pro Tag ausgeführt wird. Wer in seiner Datenbank noch Einträge mit einer richtigen IP-Nummer hat die älter als 7 Tage sind, sollte den Befehl einmalig manuell ausführen und anstelle von “-7 days” einen entsprechend höheren Wert eintragen so dass alle Kommentare berücksichtigt werden.

Wer sich genauer informieren will, was zum Beispiel strftime oder datetime genau macht, kann dies zum Beispiel unter https://www.sqlite.org/lang_datefunc.html tun.

OSBN | General

Kommentarfunktion Isso unter Hugo deaktivieren

Ein Bekannter von mir nutzt für seine Internetseite ein selbst (schlecht) programmierte Lösung. Er hat sich nun selbst für eine Kombination aus Hugo und Isso entschieden. Allerdings stört es ihn, dass man die Kommentarfunktion nicht deaktivieren kann.

Daher hat er mich nach einer Alternative für Isso gefragt. Da ich aber keine Erfahrungen mit anderen Kommentarfunktionen habe, habe ich mir überlegt, wie man Isso trotzdem für einzelne Artikel deaktivieren kann. Was leichter als gedacht ist.

Isso bindet man normalerweise wie folgt ein.

<section id="isso-thread" data-title="Fryboyter.de um Suchfunktion erweitert"></section>
<noscript><p>Die Kommentarfunktion kann nur mit aktiviertem Javascript genutzt werden</p></noscript>

Damit wird die Eingabemaske aber immer angezeigt. Wie kann man also verhindern, dass diese bei bestimmten Artikeln nicht angezeigt wird? Die Lösung ist bei Hugo if else.

{{ if ne .Params.nocomments true }}
<section id="isso-thread" data-title="{{ .Title }}"></section>
<noscript><p>Die Kommentarfunktion kann nur mit aktiviertem Javascript genutzt werden</p></noscript>
{{ else }}
<p>Die Kommentarfunktion ist für diesen Artikel deaktiviert</p>
{{ end }}

Hiermit wird geprüft, ob nocomments nicht true ist. Wenn ja, wird die Eingabemaske von Isso angezeigt. Ist nocomments allerdings true, wird der Hinweis angezeigt, dass die Kommentarfunktion deaktiviert ist.

Soll nun bei einem bestimmten Artikel die Kommentarfunktion deaktiviert werden, erweitert man den Frontmatter-Bereich einfach entsprechend.

---
title: Kommentarfunktion Isso unter Hugo deaktivieren
date: 2019-07-06T20:12:06+0200
categories:
- OSBN
- Allgemein
tags:
- Hugo
- Isso
- Kommentarfunktion
nocomments: true
slug: kommentarfunktion-isso-unter-hugo-deaktivieren
---
Ein Bekannter von mir nutzt für seine Internetseite ein selbst (schlecht) programmierte Lösung. Er hat sich nun selbst...

Das war es auch schon. Was man auch noch machen könnte, wäre anhand von nocomments: true zu prüfen ob die Javascript-Datei von Isso überhaupt geladen werden soll oder nicht.

OSBN | Allgemein

Isso - Totgesagte leben länger

Derzeit nutze ich hier für die Kommentarfunktion Isso. Isso wurde auf Github, wenn auch langsam, stetig weiterentwickelt. Nur gab es seit September 2016 keine offizielle Veröffentlichung einer neuen Version. Das Warten hat nun aber ein Ende.

Vor ein paar Wochen hat ein Nutzer mal wieder um Veröffentlichung einer neuen Version gebeten. Im Zuge der Diskussion hat posativ (Gründer von Isso) zwei anderen Entwicklern die nötigen Rechte verpasst damit sie neue Versionen veröffentlichen können, da ihn wohl das echte Leben ziemlich auf Trab hält.

Nach einigen Vorbereitungen ist es nun soweit. In den letzten 24 Stunden wurde Version 0.11.0 und 0.11.1 veröffentlicht und steht nun auch über pip bereit. Ein Changelog findet man bei Github.

Update: Version 0.11.1 ist nun auf fryboyter.de installiert. Da diese Version nun einen Atom-Feed pro Artikel für die Kommentare anbietet, habe ich den Link auf den allgemeinen selbst erstellten Kommentar-Feed (https://fryboyter.de/feed-fuer-kommentarfunktion) entfernt. Wer trotzdem über Kommentare artikelübergreifend benachrichtigt werden will, kann weiterhin https://fryboyter.de/files/comfeed.xml nutzen, da ich den Cronjob bis auf weiteres laufen lasse.

OSBN | Allgemein

Feed für Kommentarfunktion

Da Bolt CMS keine Kommentarfunktion anbietet nutze ich hierfür Isso. In der aktuellen offiziellen Version gibt es leider keine Möglichkeit, dass man über neue Kommentare informiert wird (was den einen oder anderen Nutzer nervt (inkl. mir selbst)). In der aktuellen Entwicklerversion ist zwar ein Kommentar-Feed vorhanden, allerdings bekomme ich diese auf Uberspace 7 nicht zum laufen.

Ich habe mir daher, bis eine neue Version von Isso auf PyPi veröffentlicht wird, eine Übergangslösung gebaut. Ab sofort findet man unter der Kommentarfunktion einen Link über den man den RSS-Feed für die Kommentare abonieren kann. Dieser ist nicht auf den jeweiligen Artikel beschränkt sondern berücksichtigt Kommentare aller Artikel. Da hier nicht täglich unzählige Kommentare abgegeben werden, dürfte das kein Problem sein. Zudem habe ich den Feed auf die letzten 20 Einträge beschränkt. Der Cronjob der das Script zum Erzeugen der XML-Datei ausführt läuft alle 15 Minuten. Somit werden neue Kommentare im Feed etwas verzögert angezeigt. Dies gilt allerdings nur für die Kommentare die ich freigeschaltet habe.

Wer noch Fehler findet, kann sich gerne melden. Das Problem mit der Formatierung der Kommentare im Feed ist bekannt, allerdings fällt mir hierzu aktuell keine Lösung ein. Zum Benachrichtigen über neue Kommentaresollte es aber trotzdem gut genug sein.

OSBN | Allgemein