Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Perl + DB Sessions (*nicht* web basiert)

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
lodger
Gast





BeitragVerfasst am: 18. Aug 2006 14:46   Titel: Perl + DB Sessions (*nicht* web basiert)

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


Anmeldungsdatum: 26.06.2004
Beiträge: 1444

BeitragVerfasst am: 19. Aug 2006 1:44   Titel:

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 .
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

lodger
Gast





BeitragVerfasst am: 19. Aug 2006 16:44   Titel: 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.
 

klopskuchen
prolinux-forum-admin


Anmeldungsdatum: 26.06.2004
Beiträge: 1444

BeitragVerfasst am: 19. Aug 2006 19:26   Titel:

Code:
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. Wink


MfG, Klopskuchen
_________________
When all else fails, read the instructions .
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

lodger
Gast





BeitragVerfasst am: 20. Aug 2006 21:22   Titel: Dankeschön!

klopskuchen hat folgendes geschrieben::
Code:
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. Wink


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! Smile
 

lodger
Gast





BeitragVerfasst am: 22. Aug 2006 16:42   Titel: 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
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy