Homepage Johann Hanne 
Valid XHTML 1.0 Strict
About | Projects | Gadgets | Photos | Links
Projects - Old stuff 

PAM_LIST (Linux/C)

PAM_LIST ist ein sehr einfaches PAM-Modul. Es überprüft, ob der übergebene String in einer Text-Datei aufgelistet ist, und meldet an die PAM-Anwendung entsprechend "ja" oder "nein" zurück.

Die zu lesende Textdatei muß im Quellcode eingestellt werden (erste Zeile, #define USERLISTFILE). Sie wird zeilenweise eingelesen, Kommentarzeilen (Zeilen, die mit einem "#" beginnen) werden ignoriert. Ansonsten werden die eingelesenen Zeilen beim ersten Leerzeichen oder Tabulator abgeschnitten, so daß hinter den eigentlichen Strings noch ein Kommentar angegeben werden kann.

Dieses Modul ist äußerst unflexibel, und außerdem liegt der PAM-Distribution mit pam_listfile.so ein sehr viel besseres Modul bei. Leider kann dabei aber nicht wie gerade beschrieben in einer Daten-Zeile noch ein Kommentar angegeben werden, was in manchen Anwendungsfällen aber wünschenswert ist.

Kompilierung mit:
gcc -O2 -shared pam_list.c -o pam_list.so

Download:
pam_list-20010501.tar.gz (C-Sourcecode)

Projects - Old stuff 

PENDEL (DOS/Pascal, Java)

Hier das Ergebnis von drei Tagen harter Arbeit. Eigentlich hätte ich dafür ein halbes Jahr Zeit gehabt, das ganze stellt nämlich meine Facharbeit dar (Abiturjahrgang '97 am Willibald-Gymnasium in Eichstätt). Mein genialer Physik-Lehrer (Herr Netter), bei dem ich mich an dieser Stelle übrigens mal für das geniale Thema bedanken möchte möchte, hat mich auch oft genug gedrängelt, früher anzufangen. Aber wie meistens in meiner Schulzeit hat meine Faulheit gesiegt. Das Ergebnis waren 9 Punkte, was - wenn man mal das Zeit-Leistungs-Verhältnis betrachtet - gar nicht mal so schlecht war. Außerdem war ich völlig zufrieden damit, schließlich haben andere Leute teilweise wirklich ein halbes Jahr an ihrer Facharbeit gearbeitet, und trotzdem schlechter abgeschnitten ;-).

Aber zur Sache: Das ursprüngliche Thema war "Computersimulation von gekoppelten Pendelschwingungen", allerdings wurde der Text am Ende noch geringfügig geändert, woran ich mich nicht mehr so genau erinnern kann. Sollte es jemanden interessieren, kann er ja einen Blick riskieren.

Das Programm habe ich unter DOS mit Turbo Pascal 6.0 geschrieben und den Text dazu mit "Write" unter Windows 3.1. In der abgegebenen Fassung waren auch noch drei Grafiken enthalten, die ich dummerweise wegen der fehlenden Zeit nicht mehr kopieren konnte, und die in der downloadbaren Version leider auch fehlen. Sollte ein Lehrer des Willibald-Gymnasiums diese Seite lesen, wäre ich ihm dankbar, wenn er mir schreiben könnte, ob und wie ich an das Original herankomme, ich hätte nämlich wirklich gerne eine Kopie der Grafiken.

Zu allem Überfluß existiert von dem Ganzen auch noch eine Java-Version, die ich mal aus Langeweile im Java-Unterricht in der Berufsschule geschrieben habe. Das ganze ist leider absolut unausgereift. Es war auch lediglich ein Versuch, um zu zeigen, daß es prinzipiell funktioniert. Wer mag, kann sich das ganze im Web-Browser anschauen. Bei manchen Browsern ruckelt das ganze, andere schmieren dabei komplett ab, in Sun's appletviewer ist es einigermaßen erträglich. Gegenüber der Pascal-Version fehlt jegliche Möglichkeit, mit den Pendel-Längen und an den sonstigen Parametern herumzuspielen. Wer daran Interesse hat, muß leider direkt im Sourcecode daran drehen oder auf die DOS-Version zurückgreifen.

Download:
FACHARBT.ZIP (Die komplette Facharbeit: DOS-Executable + Pascal-Sourcecode + Text zur Facharbeit)
PENDJAVA.ZIP (Java-Version: Executable + Sourcecode + Passende HTML-Seite)

Projects - Old stuff 

USCCDRV (Linux/C)

Dies ist ein unfertiger Linux-Kernel-Treiber für die USCC-Karten (nicht die PCI-SCC) von BayCom.

Unfertig heißt, daß er zwar grundsätzlich läuft, er für den ernsthaften Einsatz aber nicht geeignet ist. Sämtliche Parameter (I/O-Base, IRQ) sind fest codiert und er ist momentan nur auf die Zweikanal-Version (auch bekannt als 9k6-USCC, die mit dem KS900-TRX on-Board) zugeschnitten. Um den Treiber zum Laufen zu bringen ist also unbedingt ein Eingriff in den Quell-Code notwendig. Desweiteren habe ich Berichte von Benutzern, denen der Rechner bei Einsatz des Treibers regelmäßig abschmiert. Ich rate Leuten, die kein C können unbedingt von der Benutzung ab. Der Quellcode ist hier nur verfügbar, um ihn evtl. interessierten Entwicklern zur Verfügung zu stellen. Dementsprechend werde ich sämtliche Anfragen nach dem Motto "Der Treiber läuft nicht, was mache ich falsch?" ignorieren. Dieses Projekt wird von mir bis auf weiteres auch nicht gepflegt.

Von Jörg, DL1BKE gibt es einen wesentlich besseren Treiber (z8530drv), der auch mehr als nur die BayCom-Karten unterstützt. Ich habe den Treiber nur geschrieben, weil der z8530drv bei mir nicht funktioniert hat. Es ist im Wesentlichen ein übler Mix aus erwähntem z8530drv (daraus ist das Linux-Treiber-Interface entnommen) und dem DOS-USCC-Treiber für PC/FlexNet von Gunter, DK7WJ und Flori, DL8MBT (daraus ist der Code für die eigentliche Karten-Ansteuerung entnommen). Letzere haben das OK gegeben, das Resultat unter die GPL zu stellen, deshalb an dieser Stelle ein Dankeschön dafür.

Ich weise nochmals darauf hin, daß der Quellcode nur für Entwickler gedacht ist. Die Kommentare sind - soweit überhaupt vorhanden - meistens falsch, die Qualität des Quellcodes zum Teil katastrophal.

Download:
uscc-20010423.tar.gz (C-Sourcecode)

Projects - Old stuff 

AX25MOND (Linux/C)

Bei ax25mond handelt es sich um ein kleines Programm, das nichts anderes macht, als Daten von einem Socket zu lesen und diese auf anderen Sockets zur Verfügung zu stellen.

Damit das ganze Sinn macht, muß man wissen, daß es sich bei dem Socket, von dem die Daten gelesen werden, um ein Socket vom Typ SOCK_PACKET handelt. Sockets diesen Typs können unter Linux nur von Prozessen mit root-Berechtigung gelesen werden. Bei AX.25-Terminal-Programmen wäre es aber durchaus wünschenswert, wenn auch "normale" Benutzer den Traffic auf dem Funk-Kanal beobachten könnten. Deshalb filtert ax25mond aus den gelesenen Daten die AX.25-Pakete aus und stellt diese auf beliebigen anderen inet- oder unix-sockets zur Verfügung.

Genaueres entnehme man der im Paket enthaltenen man-page.

Download:
ax25mond-1.0.tar.gz (C-Sourcecode mit man-page und Beispiel-Konfigurationsdatei)

Projects - Old stuff 

WRKSECT (DOS/C)

Ein kleines Programm, das eine Art "Schweizer Taschenmesser" für den Umgang mit dem MBR (Main Boot Record) und den Boot-Sektoren der einzelnen Partitionen einer Festplatte unter DOS darstellen soll.

Alles was es kann, ist (per BIOS-Service-Interrupt) den MBR oder einen Bootsektor

  • zu lesen und die Daten in eine Datei zu schreiben.
  • zu schreiben (nachdem die Daten aus einer Datei gelesen wurden).

Die Anwendungsgebiete sind trotzdem vielfältig, denkbar ist z.B.

  • die Sicherung des MBRs zum Schutz gegen Viren.
  • das Löschen aller Partitionen durch Überschreiben des MBRs mit Datenmüll.
  • das Verschieben eines ganzen Betriebssystems von einer Partition auf eine andere durch Kopieren aller Dateien und anschließendem Kopieren des Boot-Sektors.
  • der (geringfügige) Schutz der Daten auf einer Festplatte durch Sicherung des MBRs und anschließendem Überschreiben des MBRs.

ACHTUNG: Der einzige Luxus, den das Programm bietet, ist, beim Schreiben des MBRs bzw. eines Boot-Sektors die Partitionstabelle bzw. den BPB (BIOS parameter block) nicht mit zu überschreiben. Bei sämtlichen Aktionen gibt das Programm keinerlei Warnung aus. Man sollte das Programm deshalb nur benutzen, wenn man ganz genau weiß, was man tut. Wer sich seinen MBR überschreibt, macht wahrscheinlich seine gesamte Festplatte unbrauchbar. Für eventuelle Schäden, die durch das Programm entstehen, übernehme ich selbstverständlich keinerlei Haftung!

Das Programm unterstützt ausschließlich IDE-Festplatten. Andere Typen (z.B. SCSI) werden nicht unterstützt. Erweiterte Partitionen werden ebenfalls nicht unterstützt.

Eine Linux-Version des Programms gibt es nicht. Dies ist auch gar nicht notwendig, weil damit das ganze ohne ein spezielles Programm möglich ist. Mit dd if=/dev/hda1 of=bootsect bs=512 count=1 kann man z.B. ohne Probleme den Boot-Sektor der ersten Partition der ersten IDE-Festplatte auslesen.

Das Programm wurde unter DOS mit Borland C++ 3.1 geschrieben und compiliert. Getestet habe ich es mit MS-DOS 6.22, es sollte aber auch mit älteren Versionen lauffähig sein. Eine kurze Hilfe erhält man durch Aufruf des Programms ohne Parameter.

Download:
WRKSECT.ZIP (DOS-Executable + C-Sourcecode)

Projects - Old stuff 

PCLFILTER (Linux/C)

PCLFILTER ist der Versuch, ein Programm zu schreiben, das in einem Datenstrom mit HP's bescheuerter "Druckersprache" PCL (Printer command language) die Escape-Sequenzen manipulieren kann. Damit kann man sturen Programmen, die auf das US-Papierformat LETTER beharren evtl. auf die Beine helfen. Laserjet 4/5-Drucker haben nämlich die dumme Angewohnheit, eine Seite, die vom Programm mit dem PCL-Befehl für das LETTER-Format generiert wurde erst dann zu drucken, wenn der Benutzer auf dem Bedienfeld den Druckauftrag manuell fortsetzt. Mit diesem Programm lässt sich dieser dann durch den PCL-Befehl für A4 ersetzen.

Das Programm ist unfertig. Momentan werden nur einige PCL-Befehle statisch ersetzt, wobei das ganze fest codiert ist. Wer das Programm nutzen will, muß sich also mit PCL auskennen und seine Wünsche im Source selber reinschreiben. Geplant ist, die zu ersetzenden PCL-Befehle über eine Konfigurationsdatei einstellbar zu machen.

Der PCL-Datenstrom wird von STDIN gelesen und auf STDOUT ausgegeben, so das das Programm je nach Verwendungszweck noch über geeignete Shell-Skripte aufgerufen werden muß.

Kompilierung mit:
gcc -O2 pclfilter.c -o pclfilter

Download:
pclfilter-20010501.tar.gz (C-Sourcecode)

Projects - Old stuff 

SQUIDPAMAUTH (Linux/C)

SQUIDPAMAUTH ist eine PAM-Applikation für die Benutzer-Authentifizierung des Proxy-Caches Squid.

In der Squid-Konfigurationsdatei squid.conf kann ein Benutzer-Authentifizierungs-Programm eingestellt werden, das beim Squid-Start als Child-Prozess gestartet wird. Gibt nun ein Benutzer eine Benutzername-/Kennwort-Kombination ein, wird diese in der Form "<Benutzer-Name> <Kennwort><LF>" an den Child-Prozess übergeben, der dann "OK" oder "ERR" zurückgibt, je nach dem, ob dem Benutzer der Cache-Zugriff gewährt werden soll, oder nicht.

SQUIDPAMAUTH kann als ein solches Programm eingesetzt werden. Es nimmt die Benutzername-/Kennwort-Kombinationen von Squid entgegen und setzt sie in einen entsprechenden PAM-Aufruf um. Durch die Modularität von PAM kann man dadurch eine beliebige Authentifizierung gestalten, z.B. mit einem Radius-Server oder mit einem NT-Domänen-Controller. Je nach Wunsch muß dies in /etc/pam.d/proxy konfiguriert werden.

Kompilierung mit:
gcc -O2 -lpam squidpamauth.c -o squidpamauth

Download:
squidpamauth-20010501.tar.gz (C-Sourcecode)

Projects - Old stuff 

BCMUTILS (Linux/Perl)

Dies ist eine ungeordnete Sammlung uralter Tools für die BayCom-Mailbox unter Linux. Sie besteht im Wesentlichen aus Shell- und Perl-Skripts in einem katastrophalen Programmierstil, was vor allem daher kommt, daß es meine ersten Programmier-Versuche unter Linux/Perl gewesen sind (Aus der Zeit 1996-1997).

Alle enthaltenen Dateien dürften maximal historischen Wert haben. Zu den meisten Sachen gibt es inzwischen Updates von anderen Leuten, vieles ist im Laufe der Zeit in die BCM integriert worden. Es ist in erster Linie eine Sammlung für mich selbst, weil ich ungern alte Sachen wegschmeisse, auch wenn sie wertlos sind - vielleicht kann man sie doch irgendwann mal wieder brauchen ;-).

Soweit ich überhaupt noch weiß, für was das Zeug gut war hier noch eine kleine Aufstellung inkl. Versionsnummer, soweit vorhanden:

bcm.pl (Version 1.1)
Eine kleine Perl-Bibliothek mit Funktionen, die man für BCM-Tools öfter gebraucht hat. Viele Sachen liessen sich um Welten kürzer und eleganter machen, aber wie gesagt: Es waren meine ersten Gehversuche mit Perl.

boxstat (Version 1.6 vom 28.9.96)
Ein Programm, das aus den Log-Dateien der BCM eine monatliche Statistik erstellt hat. Die Version würde mit der aktuellen BCM nicht mehr laufen, weil sich die Log-Formate geändert haben, außerdem ist das Programm nicht Y2K-safe. Inzwischen gibt es fehler- bereinigte Versionen von DC0JI und DH8YMB, die in Packet Radio eingespielt wurden.

cookie (Version 1.0 vom 8.9.96)
Gibt aus einer Datei ein zufällig gewählte Zeile aus. War dafür gedacht, beim Login oder Logout jedesmal einen anderen mehr oder weniger witzigen Spruch auszugeben.

delmails (Version 1.0 vom 19.2.97)
Damit lassen sich Board-übergreifend Mails mit bestimmten Absender-Call, BID, etc. löschen. Stammt aus der Zeit, in der die ersten Geisteskranken angefangen haben, die Mailboxen vollzumüllen.

filesurf (Version 2.3 vom 16.1.97)
Ein kleiner Fileserver, mit dem sich der Benutzer direkt im Filesystem umschauen konnte und sich Dateien herunterladen konnte. In den aktuellen BCM-Versionen ist ein File-Server bereits integriert.

ggg
Eine kleine Spinnerei aus der Zeit, in der zwei AFu-Jugend- gruppen aus Reutlingen und Ingolstadt die Frequenzen mit sinnigen "Sätzen" wie grins, grumpf, grummel, usw. zugemüllt haben. Dieses Tool hat dem Schwachsinn die Krone aufgesetzt, indem man einen anderen Box-Benutzer mit Befehlen wie "GRINS DG4SGE" und dergleichen belästigen konnte. ;-)

maex (Version 1.0 vom 1.1.97)
Ein Tool, um aus hereinkommden 7plus-Mails automatisch die kompletten Dateien zusammenzustellen und in den Fileserver legen zu lassen. Soweit ich mich erinnern kann, habe ich dieses Programm nie veröffentlicht, weil es nie fertig geworden ist.

mailserv (Version 1.3a vom 13.7.97)
Eine Art Mailing-List-Server, um Mails an bestimmte Benutzer-Gruppen verteilen lassen zu können. In den aktuellen BCM-Versionen ist ein Mailing-List-Server bereits integriert.

readstat (Version 1.0 vom 5.9.96)
Zeigt zu einem bestimmten Board eine kleine Top-Liste mit den Calls an, die in diesem Board die meisten Mails gelesen haben.

run (Version 1.0 vom 18.11.96)
Ein Programm zum Hinzufügen von Run-Utilities. Funktioniert mit aktuellen BCM-Versionen nicht mehr, weil dort die Run-Utilities über eine eigene Datei konfiguriert werden, während dies früher über einen Parameter in der Datei INIT.BCM erledigt wurde.

tools
Keine Ahnung, was das hätte werden sollen. Sieht aus wie der Versuch, im AFu verwendete CRC-Routinen in Perl zu implementieren. Wäre sicher furchtbar schnell gewesen. ;-)

wx
Zur Erfassung und Darstellung von Wetterdaten. Die Erfassung erfolgt durch die Benutzer, die ihre Daten manuell eingeben, d.h. es gibt keine Möglichkeit, die Daten von einer Wetter- station zu übernehmen. Ich habe das Programm nie für besonders sinnvoll gehalten, es ist nur auf Wunsch eines Benutzers entstanden.

Download:
bcmutils-20010422.tar.gz (Archiv mit allen Programmdateien inkl. Dokumentation)