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?
Perl + DB Sessions (*nicht* web basiert)
-
- prolinux-forum-admin
- Beiträge: 1444
- Registriert: 26. Jun 2004 21:18
- Kontaktdaten:
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
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 .
Hallo nochmal ...
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.
-
- prolinux-forum-admin
- Beiträge: 1444
- Registriert: 26. Jun 2004 21:18
- Kontaktdaten:
Code: Alles auswählen
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.

MfG, Klopskuchen
When all else fails, read the instructions .
Dankeschön!
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!klopskuchen hat geschrieben:So hat sich das im Kopf zusammengebraut. Angaben ohne Gewähr.Code: Alles auswählen
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.
MfG, Klopskuchen

Nochmals Dankeschön! :)
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
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