Kostenlose Software "Bezirksreiter" zur Gemeindeverwaltung

Version 0014 = finale Version (bis auf Weiteres - die Entwicklung des Programms ruht)

Bezirksreiter
Autor: Martin Simon, Eibenstock, E-Mail: martin.simon@emk.de

Lizenz des Bezirkreiter-Programms: GNU Public License (offener Quellcode, kostenlos, kommerzielle Verwendung untersagt), inoffizielle deutsche Übersetzung der Lizenz hier. Die Lizenzen von Python und MySQL sind z.T. weniger restriktiv, was die kommerzielle Verwendung betrifft, vgl. die mitinstallierte Dokumentation dieser Programme.

Die Software "Bezirksreiter" entstand in der "Hobbywerkstatt" eines Pastors aus der Praxis für die Praxis. Es handelt sich dabei um eine sog. "webbasierte" Anwendung, die für den Betrieb auf einem einzelnen Rechner, aber ebenso für Intranet und Internet geeignet ist. Sie wird seit einiger Zeit im Ev.-meth. Gemeindebezirk Eibenstock erfolgreich eingesetzt.

Übersicht

Zielsetzung der Software
Download
Update
Installation (Allgemein)
Installation unter Windows
Installation unter Linux
Netzwerkinstallation, manuelle Konfiguration und Sicherheit
Neuheiten
Funktionen (Übersicht)
Bekannte Bugs und Probleme

Zielsetzung der Software

Download

Hier alle wichtigen Dateien zum Download (teilweise von externen Servern anzufordern):
 

Linux / UNIX

Python 2.3.3 für Linux


MySQL-Python 0.9.2 für Python 2.3x unter Linux


Python-Reportlab-Toolkit_1.19 für Linux
Python-Imaging-Library_1.1.4 für Linux


 



Windows
Python 2.3.3 für Windows MySQL-Python 0.9.2 für Python 2.3x unter Windows Python-ReportLab-Toolkit_1.19 für Windows (angepasst für die automatische Installation)
Python-Imaging-Library_1.1.4 für Python 2.3x unter Windows

MySQL-Datenbank 3.23.49 für Windows







Alle
Bezirksreiter0014.zip
install.zip (Bezirksreiter-Installationsprogramm zum Auspacken)
OpenOffice-Textverarbeitung (ca.  65-75 MByte, ist optional, auf der CD enthalten)

OpenOffice für Windows, Linux, Unix, Solaris u.a.: sehr  leistungsfähige, kostenlose Alternative zu Microsoft-Office, ideal zur Zusammenarbeit mit dem Bezirksreiter
Bezirksreiter-Einsteiger spezial
Alle  benötigten  Dateien für die Windows-Version als ZIP-Archiv (25 MByte) Für den späteren automatischen Update sind dann nur noch Downloads von jeweils ca. 500 KByte nötig!



Update

Installation (Allgemein)

Installation unter Windows

Beachten Sie, dass Sie zur korrekten automatischen Installation genau die o.g. Komponenten herunterladen, und zwar in der angegebenen Version (z.B.: MySQL Version 3.23.49). Wenn Sie nicht von der CD installieren: Nutzen Sie am besten die Option "Alle Dateien als ZIP-Archiv" (s.o.)

1. Installation von Python

Achtung: bei manchen Einstellungen des Windows-Explorers werden die "DOS"-Endungen geschluckt. Es erscheint dann nur "Python-2.3.3" oder "install" usw.

2. Installation der anderen Komponenten

Doppelklick auf install.py ruft nacheinander die nötigen Installationsroutinen auf: Folgen  Sie einfach den Anweisungen des Installationsprogramms, beachten Sie auch die Hinweise zum Neustart Ihres Systems.

Installation unter Linux

Hier ist - wegen der Komplexität dieses Betriebssystems und der verschiedenartigen Distributionen - etwas "Handarbeit" angesagt. Wie gut haben es dagegen Windows-User, s.o.... (Ich werde trotzdem weiterhin Linux benutzen).

1. Installation der MySQL-Datenbank

MySQL ist Teil aller gängigen Linux-Distributionen. Zu installieren sind Pakete, die auf Namen mysql-server oder mysql-client hören - benutzen Sie dazu die Werkzeuge Ihrer Distribution. Beachten Sie bei der Konfiguration ggf., daß MySQL beim Hochfahren des Linux-Systems automatisch gestartet wird (ist wahrscheinlich die Standardeinstellung).

2. Die Installation des Python-Interpreters und der nötigen Bibliotheken

Möglicherweise (z.B. bei Debian 3.0 "Woody", den neueren SuSE-Versionen usw.) ist das richtige Python schon standardmäßig installiert. => An der Kommandozeile den Befehl "python" aufrufen. Es startet dann der Python-Interpreter und zeigt oben seine Versionsnummer an. Wenn diese größer als "2.3" ist, dann ist alles o.k. Ansonsten:
vielleicht hat meine Distribution ja den richtigen Interpreter mitgeliefert:

oder: bei der o.g. Adresse Python 2.3.3 und die o.g. Bibliotheken für Linux herunterladen und installieren. Wenn es hier Fragen zur Installation gibt, schicken Sie mir bitte ein Mail.

In jedem Fall, auch wenn schon das richtige Python installiert ist: MySQL-Python, das ReportLab-Toolkit und die Python-Imaging-Library für Linux installieren (ist z.B. bei Debian 3.0 als "python2.1-mysqldb" usw. vorhanden) - fertig.

3. Installation des "Bezirksreiters"

Netzwerkinstallation, manuelle Konfiguration und Sicherheit

1. Lokales Intranet

Dazu kann - wie in der Einzelplatzinstallation - am besten der mitgelieferte Server benutzt werden. Er ermöglicht - anders als beim Betrieb mit Apache o.ä. - die Nutzung des lokalen Druckers am Server-Rechner, so ist Direktausdruck von Serienbriefen möglich (bei bestehender OpenOffice-Installation). Außerdem ist durch Verwendung eines sog. persistenten Prozesses die Geschwindigkeit höher - und man kann auf das Speichern des Master-Paßwortes (nicht zu verwechseln mit dem Admin-Paßwort) in einer Datei verzichten (dann ist es jeweils beim Hochfahren des Servers einzugeben, dafür aber nicht von Unbefugten lesbar).
Die Installation erfolgt mit dem gleichen Installationsprogramm - an entsprechender Stelle ist "http://localhost:8000" durch die lokale Adresse des Servers (z.B. "192.168.0.1") zu ersetzen. Nach der Installation haben Sie für die angegebenen Datenbanken bereits einen Admin-Zugang eingerichtet. Beachten Sie den u.g. Bug bei Verwendung zusammen mit dem Internet-Explorer. Setzen Sie nun in der Konfigurationsdatei "config.py": EINZELPLATZ_NEU = "nein", damit auch Serienbriefe über das Netzwerk an den Client übertragen werden.

2. Internet

Vorbemerkungen: 1. Beachten Sie die Anweisungen zu "Intranet". 2. Obwohl der Bezirksreiter auch auf dem Server mit jeder Python Version ab 2.1 funktioniert, empfehlen wir hier Python Version 2.3 - es läuft deutlich schneller (wird auch in der "Demo"-Version verwendet). Achtung: auf dem Python-Interpreter des Servers darf nicht das mxDateTime-Modul installiert sein (gehört nicht zur Standardausgabe von Python und muß gesondert installiert werden): Der Bezirksreiter verwendet eigene (schnellere) Funktionen zur Umwandlung von Datumsangaben und wird durch das mxDateTime-Modul gestört.
Zunächst ist lokal eine Intranet-Version wie oben zu erstellen. Achten Sie beim Durchführen des Installationsprogramms auf die korrekte Eingabe des CGI-Verzeichnissses aus der Sicht des Internetservers. Übertragen Sie nun alle HTML-Dateien in das Dokumentenverzeichnis des Servers, alle anderen Dateien mit der Endung ".py" und die Datei "checkin" in das cgi-bin-Verzeichnis (nicht die Datei csv2checkin.txt - s.u.!). Für die Verwendung auf Servern ohne grafische Benutzeroberfläche ist vorher die (leere) Datei "dummy_update.py" in "update.py" umzubenennen und statt der ursprünglichen "update.py" hochzuladen. Achten Sie bei Unix/Linux-Servern auf die korrekte "Shebang"-Zeile in "verwaltungMainServer.py" - dort ist der komplette Pfad zum Python-Interpreter des Servers anzugeben.
Anschließend ist "verwaltungMainServer.py" ausführbar zu machen, am besten mit "chmod 755 verwaltungMainServer.py". Der Skript muß im cgi-bin-Verzeichnis Schreibberechtigung haben zur Anlage neuer Dateien und Unterverzeichnisse (für Statusvariablen, Serienbriefe ...). Achten Sie darauf, daß die Datei "passwort.py" ihre korrekten Zugangsdaten (ihren Mysql-Benutzernamen und ihr Mysql-Passwort) enthält. Diese Daten erfahren Sie von ihrem Netzwerkadministrator bzw. Internet-Provider. Vorsicht: die Datei "passwort.py" enthält diese Daten im Klartext - achten Sie darauf, daß man vom Internet aus keine Leseberechtigung für ihre cgi-bin hat! Benutzen Sie aus diesem Grund auch möglichst eine SSH-Verbindung zum Übertragen der Dateien.
Nun müssen Sie noch in ihrer MySQL-Datenbank die nötigen Rechte freischalten, die SQL-Befehle dafür lauten:
grant all on meineDatenbank.* to meinMysqlBenutzername@localhost identified by "meinMysql-Passwort"
Dies ist für jede zu benutzende Datenbank durchzuführen. Anschließend initialisieren Sie mit:
flush privileges
Wenn alles geklappt hat, sehen nach dem Aufruf von "http://meineUrl/verwaltungMain.htm" das Gleiche wie in der o.g. Demoversion.
Datensicherung: die ist zur Zeit noch "von Hand" durchzuführen, z.B. mit dem PHP-Admin für MySQL oder mit "mysqldump" über einen SSH/Telnet-Login auf dem Server. Das wird sich aber in Zukunft vermutlich ändern.

3. Einrichten von Benutzern und Rechten, Sicherheitsaspekte

Nach der Installation wird lediglich ein Administrator-Zugang erzeugt (für eine Einzelplatz-Installation ist das in der Regel ausreichend - solche Benutzer können diesen Abschnitt auch übergehen). Ein solcher Zugang wird auch jeweils automatisch erzeugt, wenn der Administrator bei der Intranet-Version mit "Datenbank(neu)" oder "Datenbank(Kopie)" eine neue Datenbank einrichtet. Die Daten dazu befinden sich in der Datei "checkin" (die ist ein sog. serialisiertes Python-Objekt).
Die Einrichtung weiterer Benutzer erfolgt durch die Konfiguration mittels einer CSV-Tabelle (semikolongetrennt), gut zu bearbeiten z.B. mit OpenOffice-Calc. Öffnen Sie dazu im Bezirksreiter-Verzeichnis ihrer lokalen Installation die Datei "csv2checkin.txt" - hier sehen Sie ein Muster. Jede Zeile enthält den Namen der Datenbank, den Benutzernamen, das Benutzerpaßwort im Klartext, die E-Mail-Adresse des Benutzers, seine Zugriffsberechtigung ("a" = Admin - nur einmal pro Bezirksreiter-Installation, "w" = Schreibberechtigung, "r" = Leseberechtigung, "b"=Schreibberechtigung incl. Buchführung), und seine Berechtigung zum Verschicken von E-Mail-Rundschreiben ("mail" oder "nomail"). Die Sperrung der entsprechenden Funktionen (und noch manches Andere) wird in der Datei "config.py" geregelt. Wenn Sie an der config.py Veränderungen vornehmen, müssen Sie diese nach einem Update manuell übertragen - zur evtl. notwendigen Ergänzung um neue Funktionen wird die "config.py" bei einem Update automatisch ersetzt. Nicht ersetzt wird dagegen die Datei "admin_config.py", die während der Installation erzeugt wurde.
Speichern Sie die Tabelle (wieder semikolongetrennt) im Bezirksreiter-Verzeichnis und rufen Sie dort "python csv2checkin.py" auf. Wenn alles geklappt hat, existiert nun eine neue Datei "checkin" mit den angegebenen Rechten. Vergessen Sie den Administrator-Zugang nicht - er ist ebenfalls dort gespeichert! Mit "python checkin2csv.py" können Sie wieder in eine CSV-Datei zurückverwandeln. Beachten Sie: Die Paßwörter sind dort nicht im Klartext, sondern als sog. "MD5-Fingerabdruck" gespeichert. Löschen Sie nun die ursprüngliche Konfigurationsdatei "csv2checkin.txt" oder bewahren Sie sie an einem sicheren Ort auf - so kommt niemand an ihre Klartext-Passwörter. Zur Einrichtung neuer Benutzer oder zu Veränderungen ist die Datei "checkin" jeweils neu zu erzeugen (das System ist also schlecht geeignet für eine Umgebung mit großer Nutzer-Fluktuation). Laden Sie nun ggf. die neue "checkin" noch in das cgi-bin-Verzeichnis ihres Internet-Servers.
In der "config.py" können Sie die Variable PROTOKOLLIEREN mit Datenbanknamen füllen. Bei diesen Datenbanken bekommen Admin und Bearbeiter bei Veränderungen in der Gemeindekartei jeweils einen "Durchschlag" per E-Mail und es gibt einen Protokolleintrag in der Datei "protokoll.txt".  Für die Buchführung ist das nicht nötig: Buchungen können weder verändert noch gelöscht werden - nur storniert. Durch automatisches Buchungsdatum und Bearbeitername ist damit jede Buchung eindeutig protokolliert.
Wenn Sie jetzt noch (bei Intranet-Installation mit dem mitgelieferten Server) die Datei "passwort.py" löschen, dann kann niemand mehr ohne Master-Passwort ihren Bezirksreiter-Server korrekt hochfahren (es wird dann im Browser abgefragt), geschweige denn Passwörter ausspionieren. Übrigens: Unter Linux sollte die Ausgabe von cgiserver_verwaltung.py nach "/dev/null" erfolgen - so werden keine übertragenen Daten in der aufrufenden Shell angezeigt (vgl. das Skript "BezirksreiterStart". In der config.py befindet sich außerdem die Variable "POST_METHOD". Wenn Sie diese auf "1" setzen, werden (fast) alle Formulardaten als "POST"-Request übertragen, sind also auch nicht in der Shell sichtbar. Achtung - bei dieser Einstellung funktioniert der eingebaute CGI-Server nicht in Kombination mit dem Internet-Explorer! => Am besten, Sie verwenden gleich den Mozilla-Browser o.ä. Oder Sie betreiben den Bezirksreiter mit einem "richtigen" Server wie Apache.
Besonders Sicherheitsbewußte können sich ja noch eine MD5-Checksumme ihres Bezirksreiter-Verzeichnisses erstellen, dann erkennt man sofort Codemanipulationen...

Neuheiten

neu bei Version 0014:

neu bei Version 0013:

neu bei Version 0012:

neu bei Version 0011:

Funktionen (Übersicht)

Bekannte Bugs und Probleme

Für meine Gemeinden hat der "Bezirkreiter" bisher brav seinen Dienst verrichtet. Meine Prüfungsausschüsse sagen, daß Gemeindekartei und Kasse immer noch stimmen.... Trotzdem empfiehlt es sich, von der angebotenen Datensicherungsfunktion regelmäßigen Gebrauch zu machen - es kostet weniger Festplattenplatz, als man denkt. Nun zu den Bugs und ToDo' s: