RRZE-Webteam / rrze-shorturl

WordPress-Plugin to enable a shorturl redirection service run on two servers (WP + PHP-only)
https://www.shorturl.rrze.fau.de
GNU General Public License v3.0
0 stars 1 forks source link

Neubau des bisherigen ShortURL-Service #1

Closed xwolfde closed 5 months ago

xwolfde commented 7 months ago

Der bisherige rein Perl-basierte ShortURL-Service auf go.fau.de soll durch ein WordPress-Plugin erstetzt werden. Die Domain go.fau.de soll in Zukubft durch eine WordPress-Instanz ersetzt werden, auf die das Plugin aktiv ist.

Wichtige Grundlage ist dabei, dass die Generierung der ShortURLs nach gleichem mathematischen Algorithmus erfolgt, wie bisher um vorhandene ShortURLs weiterhin funktionabel zu lassen. Im Gegensatz zu den bisherigen Verfahren, welches auf Basis von definierter Ziel-Websites, wie das OTRS, vorhandenen alphanumerische Strings in einen kurzen String umwandelt, soll dieser Service es auch erlauben, dass Perosnen, die via SSO eingeloggt sind, individuelle URLs eingeben, zu der sie eine Verkürzung erhalten.

Das Plugin soll daher folgende DInge ermöglichen:

Aus Performancegründen kann darüber nachgedacht werden, via WordPress lediglich die Verwaltung und Eingabe/Bearbeitung von ShortURLs zu ermöglichen, die eigentliche Redirection jedoch durch ein PHP-Skript auf einer geeigneten abgespeckten Webspace-Website durchführen zu lassen.

thenickless commented 6 months ago

Vorschlag:

Zwei Wordpress-Plugins:

  1. rrze-shorturl-db Generiert einmalig Datenbank Bietet REST-API:

    • url wird geschickt, Response ist shorturl
    • liefert Statistik als JSON nach Auswertung von GET-Request-Parametern
  2. rrze-shorturl Gutenberg Block: ein Feld url ruft über REST-API rrze-shorturl-db auf und liefert nur shorturl

Angelegt ist jetzt:

(Aufteilung in zwei Plugins folgt.)

xwolfde commented 6 months ago

Das Problem ist die Performance, wenn der Service nachher für ettliche Tausend URLs verwendet wird. Die eigentliche Redirection wäre schneller, wenn sie headless oder ohne WordPress erfolgen könnte. Die Redirection erfolgt auch dann nur auf go.fau.de .

Auf anderen Websites sähe ich jetzt keine Notwendigkeit ein Block anzubieten um URLs einzubauen oder aus einer DB auszuwählen. Zumal: Wie sollte man die denn filtern, wenn quasi jeder ANgehörige der Uni Shorturls anlegt. Die haben dann mit den Websites doch selten was zu tun. EIn Block auf einer Website machte jedoch nur Sinn, wenn man dort z.B. eine Auswahlliste von ShortURLs nach irgendein Autor oder Tag oder was anderes hätte. Aber was wäre der Benefit davon? Derjenige der eine Shorturl auf go.fau.de rtegistrierte, kennt sie doch. Also kann er sie doch auch einfach in den Link-Block einer Website kopieren.

thenickless commented 6 months ago

Das leuchtet mir ein.

Könnte das dann nicht einfach wie folgt umgesetzt werden?

Plugin

Redirect erfolgt flott via .htaccess rules. Hits werden nicht hier gespeichert. Statistik-Auswertung über das log-file vom Server.

Damit kann die short_url über die Website manuell abgefragt werden oder mit einem Aufruf an REST-API.

xwolfde commented 6 months ago

Ja, allerdings könnte dann die Site nicht mehr auf unserer Multisite-Instanz laufen, weil wir dort nicht in die .htaccess schrieben könnten...

xwolfde commented 6 months ago

Alternativ: Eingabe der URLs auf eine Multisite-Domain wie www.go.fau.de. Die Domain go.fau.de hingegen ist keine WordPress-Instanz sondern eine webspace-Domain (wie bisher), nur dass dort via Cron regelmässig eine .htaccess erzeugt wird oder ein textindex erzeigt wird, welche über ein simples Skript aufgerufen wird.

thenickless commented 6 months ago

Ja, die Alternative ist zwar nicht so flott wie .htaccess, aber wohl die beste Lsg.

Das Plugin könnte ein Txt-File erstellen bzw updaten. Ein kleines, Cron-gesteuertes Skript nimmt das und schreibt die .htaccess

Das dürfte performanter sein, als dass das Cron-Script eine Datenbank abfrägt. Wir haben ja nur ein Paar (url => short_url).

thenickless commented 6 months ago

In Tabelle $wpdb->prefix . 'shorturl_links' sind alle Links enthalten.

Überlegung: CSV daraus zu generieren für go.fau.de

thenickless commented 5 months ago

umgesetzt in 0.1.59