added INSTALL (german installation manual) and started with crypt()ing
authorBenni Bärmann <benni@obda.de>
Sun, 23 Sep 2012 14:40:53 +0000 (16:40 +0200)
committerBenni Bärmann <benni@obda.de>
Sun, 23 Sep 2012 14:40:53 +0000 (16:40 +0200)
of passwords

INSTALL [new file with mode: 0644]
TODO
src/FROGS/Config.pm
src/FROGS/DataBase.pm
var/LOCALIZE.sql
var/README

diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..3df2e3c
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,56 @@
+Hier wird der Installationsvorgang eines Aymargeddon-Spiels beschrieben. Das ist leider alles noch sehr hakelig, wir entschuldigen uns für die Strapazen.
+
+
+Vorraussetzungen
+================
+
+Ihr benötigt:
+
+*    Einen Rechner mit Linux als Betriebssystem (möglicherweise läuft es auch auf anderen Systemen, aber das hat bisher noch niemand probiert)
+*    den Sourcecode (zu beziehen über "git clone http://aymargeddon.de/aymargeddon.git")
+*    einen Apache2-Webserver
+*    Embedded Perl auf diesem Server. Unter Debian squeeze tut es ein: 
+
+apt-get install libembperl-perl
+
+*    folgende Perl-Module müssen vorhanden sein: 
+
+     Date::Calc;
+     Mail::Mailer;
+     Data::Dumper;
+
+*    MySQL als DBMS 
+
+Wenn das alles läuft, könnt ihr loslegen.
+
+Eigentliche Installation
+========================
+
+*    Ihr müsst den Apache so konfigurieren, dass das Verzeichnis html/ aus dem Source zugänglich ist von außen und dort epl-Dateien ausgeführt werden können und das Embperl im src-Verzeichnis Module nachladen kann; zB via "PerlPostConfigRequire /etc/apache/startup.pl" und da dann so was in der Art: 
+     
+     use lib qw( /var/www/benni/aymargeddon.de/game/src );
+     1;
+
+*    Ihr müsst die Datei src/FROGS/Config.pm an eure Gegebenheiten anpassen. Dabei erstmal nur den oberen Abschnitt anfassen.
+
+*    Ihr müsst eine Datenbank RAGNAROEK in MySQL anlegen.
+
+*    Ihr müsst einen DB-user "aymargeddon" in MySQL anlegen, der alle Rechte auf dieser DB hat (oder alternativ den Benutzernamen zusätzlich zu Config.pm in ein paar nicht-Perl-scripten ändern)
+
+*    Ihr müsst eine lesegeschützte Datei an dem Ort anlegen, der in der Config beschrieben ist. In dieser Datei liegt das      Datenbankpasswort. 
+
+*    Ihr müsst im Verzeichnis var/ den Befehl ./do_sql < RAGNAROEK.sql sowie ./do_sql < LOCALIZE.sql eingeben. (oder evntl.: ./init_server)
+
+*    Ihr müsst im Verzeichnis src/ den Befehl create.pl <spielfeldgröße> ausführen. Dort dann den Namen des Spiels sowie die Spielgeschwindigkeit eingeben.
+
+*    Ihr müsst im Verzeichnis src/FROGS/ den Befehl ./start_scheduler ausführen. 
+
+Jetzt kanns losgehen.
+
+
+Maintainance
+============
+
+*    Das start_scheduler-script schreibt die logs in die Datei src/FROGS/++out. In der Standardkonfiguration wird noch eine Datei src/FROGS/+out mit sehr detailierten logs erzeugt. 
+
+*    Mit dem Script backup in var kann man Backups der Datenbank dumpen.
diff --git a/TODO b/TODO
index 3a40fd6..58d210d 100644 (file)
--- a/TODO
+++ b/TODO
@@ -6,8 +6,7 @@ Dinge in dieser Rubrik sollten vor dem nächsten Spielstart erledigt sein.
 Bugs
 ----
 
-- Passwörter nicht mehr im Klartext in der Datenbank ablegen und
-schon gar nicht im Klartext in der URL stehen haben! Urgs. 
+- Passwörter nicht mehr im Klartext in der URL stehen haben! Urgs. 
 
 - $::conf->{-EPL_DEBUG} funktioniert nicht. Es wird -DEBUG verwendet,
 auch wenn man in einem epl-script ist.
@@ -168,6 +167,9 @@ gesetzt wenn ATTACKER da.
            
            UNWICHTIG:
 
+- Der Link zur Mailingliste in der Registrierungsmail sollte in die
+Config und von dort eingelesen werden.
+
 - In player.epl wird die Rollenauswahl angezeigt, wenn man das Spiel in dem der Client sich befidet ($udat->{-game}) auf dem server gelöscht hat. 
            
                Bei Ereignissen, die jetzt oder in der Vergangenheit
@@ -211,8 +213,3 @@ Datenbank eintragen und bei MOVE anpassen? dafür ist eigene Tabelle
 nötig. aber: message_to_field() wird eh nur noch selten benutzt, lohnt
 also der aufwand überhaupt? 
 
-TEST
-
-Diese Datei wird inzwischen im Wiki gepflegt:
-
-http://www.aymargeddon.de/wiki/index.php/TODO
index 4244760..35b79d0 100644 (file)
@@ -39,8 +39,8 @@ $::conf = {
           -GAME_NAME => 'Aymargeddon',
           -DEFAULT_LANGUAGE => 'EN',
           -LOG_TIME_IN_LOOP => 1000, # loops until next time output in log
-          -DEBUG => 1,
-          -EPL_DEBUG => 1,
+          -DEBUG => 2,
+          -EPL_DEBUG => 2,
           -MESSAGE_IN_LOG => 0,
           -FULL_DEBUG_FILE => '/home/benni/aymargeddon/current/src/FROGS/+out',
           -SCHEDULER_SLEEP => 2,
index 9a43f69..38921dd 100644 (file)
@@ -392,26 +392,11 @@ sub new_account{
                                REALNAME => $name,
                                LOGIN    => $login,
                                EMAIL    => $email,
-                               PASSWORD => $pwd,
+                               PASSWORD => crypt($pwd,'5g'),
                                LANGUAGE => $lang,
                               });
   $self->commit();
 
-  # my $mail = "From: registration\@aymargeddon.de\nTo: $name <$email>\n"
-  #         . "Subject: ".$self->loc('REGISTER_MAIL_SUBJECT')."\n\n"
-  #         . $self->loc('REGISTER_MAIL_TEXT', $name, $login, $pwd)."\n";
-
-  # print $mail;
-# aus man mail:
-#           env MAILRC=/dev/null from=scriptreply@domain smtp=host \
-#                smtp-auth-user=login smtp-auth-password=secret \
-#               smtp-auth=login mailx -n -s "subject" \
-#              -a attachment_file recipient@domain <content_file
-
-  # open(SENDMAIL, "|mail $email") or Util::log("Can't fork for sendmail: $!",0);
-  # print SENDMAIL $mail;
-  # close(SENDMAIL) or Util::log("sendmail didn't close nicely",0);
-
   use Mail::Mailer;
     
   my $mailer = Mail::Mailer->new();
@@ -434,9 +419,10 @@ sub authenticate{
   # you can log into any account with adminpassword
   my ($adminpwd) = $self->single_select("SELECT PASSWORD FROM PLAYER ".
                                        "WHERE LOGIN=$admin");
+  $pwd = crypt($pwd,'5g');
+  $adminpwd = crypt($adminpwd,'5g');
   ($user,$pwd,$adminpwd) = $self->quote_all($user,$pwd,$adminpwd);
 
-
   # Util::log("Adminpassword: $adminpwd, password: $pwd",2);
 
   my ($player, $sec);
@@ -452,12 +438,14 @@ sub authenticate{
 
   if($player){
     if($pwd2 and $pwd3 and $pwd2 eq $pwd3){
-      # change password!
-      $self->update_hash('PLAYER',
+       # change password!
+       $pwd2 = crypt($pwd2,'5g');
+       $self->update_hash('PLAYER',
                         "LOGIN=$user",
                         {'PASSWORD' => $pwd2});
-      Util::log("password changed!",0); # todo: localize and aufhübschen
+       Util::log("password changed for player $player!",0);
     }
+    # TODO? error if passwords did not match
     # TODO: write last_login
     return $player;
   }
index 0752880..eb579a2 100644 (file)
@@ -49,4 +49,4 @@ UNLOCK TABLES;
 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
--- Dump completed on 2012-09-23 12:14:38
+-- Dump completed on 2012-09-23 14:19:16
index 9cb8dac..0e92f00 100644 (file)
@@ -8,11 +8,18 @@ The script backup generates a backup in ./+RAGNAROEK_BACKUP.sql
 The script from_scratch generates a complete empty database but with
 the old PLAYER and LOCALIZE tables.
 
-The script do_sql executes his first command with mysql
+The script init_server deletes PLAYER to and uses LOCALIZE_INIT
+instead of LOCALIZE. this should only be uses if you start a new server or
+want to get rid of your players. (TODO: does not work properly)
+
+The script do_sql executes his standard input with mysql in the
+database RAGNAROEK with the appropriate user and password.
 
 in my.cnf is my configuration file for mysql to work with
-InnoDB tabletype. make shure InnoDB tabletype works for you. mysql
+InnoDB tabletype. make shure InnoDB tabletype works for you. old
+versions of mysql
 sets default tabletype to MyISAM if it does not work without
 complaining! But FROGS and Aymargeddon wont work without the
-transaction-capability from InnoDB
+transaction-capability from InnoDB. This should not be used for newer
+versions of Mysql.