Perl + DB Sessions (*nicht* web basiert)

Post Reply
Message
Author
lodger

Perl + DB Sessions (*nicht* web basiert)

#1 Post by lodger »

Hallo zusammen!

Seit einiger Zeit programmiere ich in Perl (mehr aus purer Lust am coden als aus praktischen Gründen) eine einfache, MySQL basierte und mit Curses::UI "aufgepeppte" Forensoftware. Die Idee kam mir, nachdem ich eine Zeit lang mit dem "dialog" Tool ein kleines Menü mit diversen Shell Apps (z.B. mutt, tin usw.) geskriptet hatte und hier nun ganz im Stile klassischer BBS Systeme einen Forenbereich schaffen wollte. Sicher, ich hätte einfach ein webbasiertes Forum (z.B. phpBB) einrichten und dann in der Shell via Links / Lynx darauf zugreifen können, aber eine "echte" Perl/Curses Applikation ohne zusätzliches Webgeraffel fand ich irgendwie passender.

Nun zu meinem Problem:

Das Programm beherrscht alle Basisfunktionen wie Post erstellen, Post anzeigen, Post in Textdatei dumpen. Nun möchte ich noch Funktionen zum Editieren und Löschen von Beiträgen hinzufügen. Und dafür benötige ich in irgendeiner Weise DB-Session Support, um zu verhindern das ein User Postings ändern oder löschen kann, die nicht von ihm erstellt wurden.

Haken: bislang habe ich nur Lösungen gefunden, die sich auf webbasierte Problemstellungen beziehen, das heißt das diese Lösungen einen Apache Webserver, diverse Perl CGI Module und andere benötigen.

Frage: gibt es ein Perl Modul oder andere, quelloffene Lösungsansätze, mit denen sich DB-Sessions auch für Shell Applikationen realisieren lassen? Hat jemand einen Tip, wie ich evtl. zu meinem Sessionmanagement kommen kann, ohne zusätzliche Daemons, Tools etc. zu installieren?

klopskuchen
prolinux-forum-admin
Posts: 1444
Joined: 26. Jun 2004 21:18
Contact:

#2 Post by klopskuchen »

Kannst du das näher beschreiben? Zum Beispiel warum du die Nutzerauthentifizierung zwischen den Interpreter und die DB haben möchtest. Gibt es gar keine Interaktion außerhalb? Und wenn das so ist, wie authentifiziert sich ein Nutzer gegenüber dem Interpreter (Shell, Perlinterpreter ...)
ps. Ich frag weil es interessant klingt, eine fertige Lösung ala nimm dies oder das hab ich leider nicht.


MfG, Klopskuchen
When all else fails, read the instructions .

lodger

Hallo nochmal ...

#3 Post by lodger »

Nun, ich würde - wie es ja auch in einem cgi der fall wäre - die benutzerdaten gerne über eine mysql session nachhalten. ist ein user eingeloggt und ist der user der ersteller eines bestimmten posts, so hat er die möglichkeit sein posting zu editieren oder zu löschen. ist der eingeloggte user nicht der ersteller des posts, so sind diese optionen beim ansehen der nachricht nicht verfügbar. eine curses-gui fragt den usernamen und das passwort bei programstart ab. wie gesagt, mag sein das es sich für so was "old schooliges" nicht lohnt, großen aufwand zu treiben, aber ich finde die idee nach wie vor sehr reizvoll, sowas zzu implementieren.

klopskuchen
prolinux-forum-admin
Posts: 1444
Joined: 26. Jun 2004 21:18
Contact:

#4 Post by klopskuchen »

Code: Select all

wenn Login == 1 dann
	lege temporäre Datei an
	schreibe passworthash in Datei
	starte separaten Countdown-Prozeß mit Namen der temporären Datei als Argument
	DB-Abfragen:
		Countdown zurücksetzen oder killen und neustarten
		pw-hash aus Datei an Abfrage anhängen
			A: user-ID mittels pw-hash aus Benutzertabelle ermitteln
			B: Ersteller-ID aus Spalte des Beitrages auslesen (bei Beitragserstellung wird diese dort eingetragen)
			vergleiche A und B ...

Zum Logout einfach temporäre Datei löschen.
Logout vergessen? Countdown-Prozeß löscht nach n Zeit temporäre Datei. Session Ende.
So hat sich das im Kopf zusammengebraut. Angaben ohne Gewähr. ;)


MfG, Klopskuchen
When all else fails, read the instructions .

lodger

Dankeschön!

#5 Post by lodger »

klopskuchen wrote:

Code: Select all

wenn Login == 1 dann
	lege temporäre Datei an
	schreibe passworthash in Datei
	starte separaten Countdown-Prozeß mit Namen der temporären Datei als Argument
	DB-Abfragen:
		Countdown zurücksetzen oder killen und neustarten
		pw-hash aus Datei an Abfrage anhängen
			A: user-ID mittels pw-hash aus Benutzertabelle ermitteln
			B: Ersteller-ID aus Spalte des Beitrages auslesen (bei Beitragserstellung wird diese dort eingetragen)
			vergleiche A und B ...

Zum Logout einfach temporäre Datei löschen.
Logout vergessen? Countdown-Prozeß löscht nach n Zeit temporäre Datei. Session Ende.
So hat sich das im Kopf zusammengebraut. Angaben ohne Gewähr. ;)


MfG, Klopskuchen
Erst mal vielen Dank, so in etwa könnte das klappen. Eventuell kann ich statt der Datei eine Session Tabelle nutzen. Der Countdown würde dann durch einen Timestamp in dieser Tabelle ersetzt, welches abgefragt wird. Aber von Konzept erstmal ein guter ansatz. Dankeschön! :)

lodger

Nochmals Dankeschön! :)

#6 Post by lodger »

Lieber Klopskuchen,

Dank Deiner Anregung ist das Programm ein gutes Stück "fertiger" geworden (erstellen und löschen der Posts läuft bereits mittels einfachem Session Handling). Sobald ich die letzten Feinarbeiten abgeschlossen habe, werde ich mein "RetroBBS" unter GPL v2 veröffentlichen und somit dem geneigten Leser zur Verfügung stellen.

Gruß vom lodger

Post Reply