projects:start
Projekte
Software
- ipinfo: Schlanke Webseite mit der Nutzer ihre IP-Adresse ermitteln können
- ip.malte70.de: Aktuellste Version von ipinfo als meine persönliche IP-Info-Seite
- gitolite-Repository als Web-Ansicht via gitweb aktueller Stand der Entwicklung von ip.malte70.de
- Veraltetes Github-Repository: rolltreppe3/ipinfo Schon länger nicht mehr aktualisiert
- Auch wenn es schon etliche Webseiten gibt, die einem die eigene globale IP-Adresse anzeigen, wollte ich für mich selbst eine deutlich einfachere, aber nicht zu minimalistische Variante einer solchen Seite.
Neben der Startseite mit nicht viel mehr als der aktuellen IP-Adresse (entweder IPv4 oder IPv6, je nachdem was der Client bevorzugt), werden auf der Detail-Seite zusätzliche Infos angezeigt:- IP-Adresse und falls vorhanden der Hostname
- User-Agent
- Bevorzugte Sprache
- Aktuell funktioniert die Abfrage des Standortes der IP aus einer GeoIP-Datenbank nicht. Durch die Verwendung von eingeschränkten, kostenlos verfügbaren Datenbanken war der Standort jedoch noch nie wirklich genau; dafür müsste ich als Server-Betreiber für viel Geld Zugang zu einer genaueren/aktuelleren GeoIP-Datenbank mieten.
- Diese Informationen können zudem über eine einfache HTTP-GET-API abgefragt werden.
- Zum Einbinden in eine andere Webseite gibt es ein Widget, genauer gesagt ein dynamisch erzeugtes PNG-Bild: widget.png Aktuell werden nur IPv4-Adressen korrekt dargestellt, die teilweise erheblich längeren IPv6-Adressen sind zu lang und werden am Bildrand abgeschnitten.
- Für die gleichzeitige Abfrage der IPv4- und IPv6-Adressen auf der Detailseite, und um über die API gezielt eine der beiden abzufragen, ist ipinfo über drei verschiedene Subdomains erreichbar:
- ip.malte70.de: Sowohl über IPv4 als auch über IPv6 erreichbar
- ip4.malte70.de: Nur IPv4
- ip6.malte70.de: Nur IPv6
- Flying Paste: Ein Nopaste-Service
- OSDetect: Python-Modul für grundlegende Infos zum aktuellen Betriebssystem
- DNS-Tools: DNS-Einträge im Browser abfragen
- Fragt für einen Hostnamen den angegebenen DNS-Record-Typ ab.
Es gibt einige Online-Tools für DNS-Abfragen; aber ich wollte weder eine überladene Seite, noch zu detaillierte Infos (dafür würde ich statt einer Webseite ehhost
oderdig
nutzen), sondern einfach nur genau einen DNS-Record-Typ für einen Hostnamen abfragen. - Das Ergebnis der Abfrage wird als einzelne Zeile angezeigt, ähnlich wie von
host -v
ausgegeben.
- Discogs Random Vinyl: Zeigt eine zufällige Schallplatte aus der eigenen Discogs-Sammlung an
- PHP-Skripte, die über die Discogs-API die eigene Sammlung abfragen
- Verzichtet auf OAuth, da für den Eigengebrauch entwickelt
- verwendet für den Zugriff auf die API ein User-Token, mit dem man nur auf seine eigene Sammlung sowie allgemeine Informationen wie Release-Infos anfragen kann
- Die angezeigten Alben-Cover werden herunter geladen, sodass sie in meinem Fall nur von einem Rechner im LAN statt aus dem Internet geladen werden
- Die Sammlungs-Daten werden für eine in der
config.inc.php
angegebene Dauer zwischengespeichert, um die API nicht bei jedem Aufruf der Seite neu abzufragen
- Elektronik-Tools: Kleine Rechen-Helfer für Elektronik-Bastler
- Eine kleine nicht mehr aktiv gepflegte Sammlung von Helfern für Elektronik-Projekte, wie z.B. ein Farbcode-Rechner für Widerstände.
- Die Berechnungen erfolgen ausschließlich via JavaScript im Browser
- startseite: Generierung einer Browser-Startseite mit Links zu den wichtigen Webseiten
- Ein kleines Python-Skript, dass aus einer Liste von Links eine HTML-Seite mit als Kacheln angeordneten Links generiert.
- Kann z.B. auch als minimalistisches Homelab-Dashboard genutzt werden, über das auf in Docker-Containern laufende Web-Apps zugegriffen werden kann
- Wurde schon lange nicht mehr aktualisiert; ich arbeite aktuell aber daran das Skript zu überarbeiten, u.a. mit Unterstützung von verschiedenen Themes, und mit deutlich weniger Hard-Coding …
- Wurde als von mir genutzte Browser-Startseite von
startseite.malte70.de
(siehe nächster Eintrag) abgelöst
- startseite.malte70.de
- Im Gegensatz zu
startseite
basiert meine aktuelle Startseite auf PHP - Features:
- Anzeige von Webseiten-Links (Konfiguration via
config.inc.php
) - Suchleiste (unterstützt entweder Google oder eine beliebige SearXNG-Instanz)
- Überschrift im Format
<user>@<fqdn>
oder\\HOST\User
Speicherung von Benutzername, Hostname und Format Client-seitig in LocalStorage; beim ersten Aufruf der Seite werden diese Einstellungen mittelswindow.prompt()
abgefragt. - Über einen Button im Footer kann ein Einstellungsdialog geöffnet werden.
- Ein eingebauter kleiner Notiz-Zettel, dessen Inhalt ebenfalls in LocalStorage gespeichert wird.
- Langfristig soll die Seite und alle Features Teil von
startseite
werden
- error-document: Minimale Fehler-Seiten für die häufigsten Webserver-Fehler
- Fehler-Seiten mit einfach gehaltenem Design als Ersatz für die nicht wirklich schönen Standard-Fehlerseiten des Apache HTTPd
- Enthält Fehlerseiten für die HTTP-Status-Codes 401, 403, 404 und 500
- Die Fehlerseiten informieren den Nutzer auch, wieso der Fehler möglicherweise aufgetreten ist, statt nur den Status-Code und -Namen zu zeigen
- Verwendet Icons des Tango-Projekts (Public Domain/gemeinfrei)
- Apache VHost Generator: Erzeugt Konfigurationsdateien für Apache VirtualHosts aus Templates
- Da die meisten meiner VirtualHost - Ordered List Item-Konfigurationen sich nur beim Hostnamen und DocumentRoot unterscheiden, wollte ich neue VHosts aus Templates generieren, statt eine vorhandene Konfiguration zu duplizieren und abzuändern.
- Als Template-Engine kommt das Python-basierte Jinja2 zum Einsatz
- Das Projekt dient für mich auch dazu, mich mit Jinja2 vertraut zu machen
- Geplant ist auch unterschiedliche Arten von VHosts zu unterstützen, indem das Haupt-Template je nach Bedarf das Template für ein lokales DocumentRoot oder einen Reverse-Proxy einbindet.
- MAPID: „Maltes Arduino-powered Info Display“
- Mein Blog-Beitrag zu MAPID Erklärt das Ziel des Projekts und Schritt für Schritt den Quellcode
- Zeigt mithilfe eines Arduinos auf einem 16×2-Zeichen-LCD wichtige Benachrichtigungen an (z.B. nach Fertigstellung eines lange laufenden Shell-Skripts)
- Besteht aus mehreren Komponenten:
- Der Arduino-Sketch
MAPID/CP
(CP steht für „Control Program“) steuert einen seriell angesteuerten LCD basierend auf Befehlen, die er über eine einfache Kommandozeile auf der seriellen Konsole erhält - Auf dem angeschlossenen PC stellt das Python-Skript
fifo_bridge.py
eine Verbindung zur seriellen Schnittstelle des Arduino her, und stellt eine Brücke zwischen einer FIFO-Datei und der seriellen Konsole her.
Während einzelne Zugriffe auf die Gerätedatei des seriellen Terminals jedes Mal den Arduino neu starten, bleibt durch die durch diese Proxy-Lösung die serielle Schnittstelle durchgehend geöffnet; außerdem können so aus Shell-Skripten ganz einfach Befehle an MAPID/CP auf dem Arduino gesendet werden. - Das Skript
notification.sh
sendet über die FIFO-Bridge die notwendigen Befehle, um zwei von STDIN gelesene Zeilen auf dem Display anzuzeigen, eine LED kurz aufblitzen zu lassen und nach einiger Zeit den Display wieder auszuschalten.
- bbs: Einige Oldschool-Netzwerk-Dienste wie Telnet oder Finger
- Gestartet als Fake-Shell mit einigen eingebauten Befehlen, die über inetd via Telnet erreichbar ist
- Später kamen (ebenfalls über inetd gestartete) Dienste für QOTD und Finger dazu
- Der QOTD-Dienst nutzt
fortune
zum Anzeigen eines zufälligen Spruchs. Dieser wird Standardmäßig aus einer Auswahl von deutschsprachigen Datenbanken (fortunes-de) ausgewählt, und Umlaute und Sonderzeichen sogar wie möglich ersetzt (die aktuelle Implementierung über inetd erlaubt nur US-ASCII, kein UTF-8 oder ISO 8859-15) - Der Finger-Dienst zeigt statt potentiell sensibler Daten zu realen Nutzern nur Einträge aus einer Datenbank an, die dort vorher eingetragen wurden.
- Als Datenbank wird der Key-Value-Speicher pickleDB verwendet
- Neben Einträgen für die Benutzer (oder andere Informationen, mein GnuPG-Key kann z.B. im Text-Format via Finger abgefragt werden) gibt es ein paar besondere Datenbank-Einträge:
@
: Da pickleDB keine leeren Keys erlaubt, wird stattdessen dieser Eintrag angezeigt, wenn der Client keinen Benutzernamen sendet (finger @rt3x.de
)404
: Enthält eine Fehlermeldung, die zurückgegeben wird falls der abgefragte Benutzer nicht existiert
- Um die Datenbankeinträge einfach zu verwalten kann das Skript
fingerinfo-admin
genutzt werden. Es kann in der Datenbank vorhandene Benutzernamen auflisten, und einzelne Einträge Löschen; und ihren Inhalt auf STDOUT anzeigen oder einen vorhandenen/neu erstellten Eintrag mit Daten von STDIN überschreiben (Damit Einträge z.B. mitsed
überarbeitet werden können)
projects/start.txt · Last modified: by malte70