summaryrefslogtreecommitdiff
path: root/0.7.1/start.pm
diff options
context:
space:
mode:
Diffstat (limited to '0.7.1/start.pm')
-rw-r--r--0.7.1/start.pm506
1 files changed, 506 insertions, 0 deletions
diff --git a/0.7.1/start.pm b/0.7.1/start.pm
new file mode 100644
index 0000000..563a3cc
--- /dev/null
+++ b/0.7.1/start.pm
@@ -0,0 +1,506 @@
+
+sub start {
+
+if ($var eq "create_alias_html") {
+ &create_alias_html;
+} elsif ($var eq "create_alias") {
+ &create_alias;
+} elsif ($var eq "login_html") {
+ &login_html;
+} elsif ($var eq "chatiquette_html") {
+ &chatiquette_html;
+} elsif ($alias eq "") {
+ &login_html;
+} else {
+ &checklogin;
+}
+}
+
+sub login_html { # Erste Startseite
+&check_online;
+local $counter = undef;
+open(COUNT,"<data/count");
+ $counter = <COUNT>;
+close COUNT;
+$counter++;
+open(COUNT,">data/count");
+ flock(COUNT, 2);
+ print COUNT $counter;
+close COUNT;
+opendir(USERS,"data/online/users");
+ my @users = readdir(USERS);
+closedir(USERS);
+opendir(REGISTRED,"data/user/options");
+ local @registred = readdir(REGISTRED);
+closedir(REGISTRED);
+my ($logtin,$users) = ($#users-1,$#registred-1);
+&start_html("Created & Copyright by Paul C. Bütow","start");
+print <<END;
+ <center>
+ <table width=500>
+ <tr>
+ <td>
+ <center>
+ <table>
+ <tr>
+ <td>
+ <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" WIDTH=240 HEIGHT=240>
+ <param name=movie value="$gfxpath/yIntro.swf">
+ <param name=loop value=false>
+ <param name=menu value=false>
+ <param name=quality value=high>
+ <param name=scale value=noborder>
+ <param name=wmode value=opaque>
+ <param name=bgcolor value=$bgcolor>
+ <embed src="$gfxpath/yIntro.swf" loop=false menu=false quality=high scale=noborder wmode=opaque bgcolor=$bgcolor WIDTH=240 HEIGHT=240 TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED>
+ </object>
+ </td>
+ <td>
+ <div>
+ yChat: Version $version
+ <br><br>
+ Letztes Update: $datum
+ <br><br>
+ Seitenaufrufe: $counter
+ <br><br>
+ Benutzer registriert: $users
+ <br><br>
+ Benutzer online: $logtin
+ <br><br>
+ Benutzerlimit: $limit
+ <br><br>
+ Server: $localhost:$localport
+ <br><br>
+ Page: <a href="http://www.yChat.org">www.yChat.org</a>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </center>
+ </div>
+ <br>
+ <br>
+END
+ if ($tmp eq "true") {
+print <<END;
+ <div class=b>
+ ACHTUNG!
+ </div>
+ <div>
+ Wahrscheinlich existiert Dein Alias "$alias" nicht,
+ <br>
+ Du hast Dich verschrieben oder das Passwort ist falsch.
+ <br>
+ Versuch es erneuert !
+ </div>
+END
+ } elsif ($tmp eq "quit") {
+print <<END;
+ <div>
+ Du hast soeben den Chat verlassen.
+ <br>
+ Um den Chat erneuert zu betreten, einfach Daten eingeben und auf "Los Geht's" klicken :-)
+ </div>
+END
+ } elsif ($tmp eq "autologout") {
+print <<END;
+ <div>
+ Du wurdest automatisch aus dem Chat ausgeloggt. Grund: Du warst 20 Minuten inaktiv.
+ <br>
+ Um den Chat erneuert zu betreten, einfach Daten eingeben und auf "Los Geht's" klicken :-)
+ </div>
+END
+ } elsif ($tmp eq "autokick") {
+print <<END;
+ <div>
+ Du wurdest automatisch aus dem Chat katapultiert. Grund: Du hast den Chat geflutet!
+ <br>
+ Um den Chat erneuert zu betreten, einfach Daten eingeben und auf "Los Geht's" klicken :-)
+ </div>
+END
+ } elsif ($tmp eq "banned") {
+print <<END;
+ <div class=b>
+ ACHTUNG!
+ </div>
+ <div>
+ Du wurdest aus dem Chat verbannt!!!
+ <br>
+ Z.z. kannst Du Dich leider nicht in den Chat einloggen.
+ <br>
+ Sorry!
+ </div>
+END
+ } elsif ($tmp eq "kick") {
+print <<END;
+ <div class=b>
+ ACHTUNG!
+ </div>
+ <div>
+ Du wurdest soeben aus dem Chat katapultiert!
+ <br>
+ Schlechtes Verhalten mag die Ursache hierfür sein.
+ <br>
+ Sorry!
+ </div>
+END
+ } elsif ($tmp eq "selfkill") {
+print <<END;
+ <div>
+ Du hast dich soeben ganz und gar aus dem System gelöscht!
+ <br>
+ Wenn du dir einen neuen Nick angelen willst, dann einfach auf "Registrieren" klicken! :-)
+ </div>
+END
+ } elsif ($tmp eq "selfkill") {
+print <<END;
+ <div class=b>
+ ACHTUNG!
+ </div>
+ <div>
+ Du wurdest soeben aus dem Chat ausgeloggt!
+ <br>
+ Ursache hierfür mag sein, daß der Chat voll war und Du Dich nicht am
+ Geschehen beteiligt- und unnötige Chatkapazitäten in Anspruch
+ genommen hast.
+ <br>
+ Sorry!
+ </div>
+END
+ } elsif ($tmp eq "full") {
+ print "<div class=b>ACHTUNG!</div><div>Der Chat ist leider voll! Bitte versuch Dich später noch mal einzuloggen!</div>";
+ } elsif ($var eq "create_alias") {
+print "<div>Du hast sich soeben in die Datenbank eingetragen. Einfach auf \"Los Geht's\" klicken :-)</div>";
+ } else {
+print <<END;
+ <div>
+ Herzlich willkommen!
+ <br>
+ Einfach Daten eingeben und auf "Los Geht's" klicken :-)
+ </div>
+END
+ }
+
+print <<END;
+ <hr>
+ <form name="login" action="chat" method="GET">
+ <input type="hidden" name="request" value="start">
+ <input type="hidden" name="tmp" value="true">
+ <table>
+ <tr>
+ <td>
+ <div>
+ Dein Alias:
+ <br>
+ <input name="alias" value="$alias">
+ </div>
+ </td>
+ <td>
+ <div>
+ Dein Passwort:
+ <br>
+ <input type="password" name="pw" value="$pw">
+ </div>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <div>
+ Solltest Du noch keinen Nick besitzen, dann auf "Registrieren" klicken!
+ </div>
+ <br>
+ <table>
+ <tr>
+ <td>
+ <font color="ffffff">
+ <input type="submit" value="Los geht's!">
+ </font>
+ </form>
+ </td>
+ <td>
+ <form action="chat">
+ <input type="hidden" name="request" value="start">
+ <input type="hidden" name="var" value="create_alias_html">
+ <font color="ffffff">
+ <input type="submit" value="Registrieren">
+ </font>
+ </form>
+ </td>
+ </tr>
+ </table>
+ <hr>
+END
+if ($logtin > 0) {
+ print "<div>Folgende Personen sind eingeloggt:<br><font size='1'>";
+ foreach(@users) {
+ print "$_ " if (-f "data/online/users/$_");
+ }
+ print "</font></div>";
+}
+print<<END;
+ </td>
+ </tr>
+ </table>
+ </center>
+</body>
+</html>
+END
+ if (-d "data/online/rooms") {
+ } else {
+ mkdir "data/online/rooms", 0777;
+ }
+}
+
+sub create_alias_html { # HTML-Form für Erstellung eines neuen Benutzers.
+ open(BAN,"<data/ban");
+ my @ban = <BAN>;
+ close BAN;
+ foreach(@ban) {
+ chomp;
+ if ($_ eq "ip://".$client->peerhost()) {
+ $tmp = "banned";
+ &login_html;
+ $client->shutdown(2);
+ exit 0;
+ }
+ }
+my $reload = $_[0];
+&start_html("Registration");
+print <<END;
+ <center>
+ <table width=500>
+ <tr>
+ <td>
+END
+ if ($reload eq "alias_exists") {
+print <<END;
+ <div class=b>
+ ACHTUNG!
+ </div>
+ <div>
+ Der von Dir gewählte Benutzername "$alias" existiert in unserer Datenbank bereits. Bitte versuch es erneuert mit
+ einem anderen Benutzernamen !
+ </div>
+ <hr>
+END
+} elsif ($reload eq "pw_wrong") {
+print <<END;
+ <div class=b>
+ ACHTUNG!
+ </div>
+ <div>
+ Deine beiden Passworteingaben stimmen nicht überein. Bitte geb das Passwort erneuert an um sicherzugehen, daß
+ kein falsches Passwort abgespeichert wird !
+ </div>
+ <hr>
+END
+} elsif ($reload eq "alias_prohibited") {
+print <<END;
+ <div class=b>
+ ACHTUNG!
+ </div>
+ <div>
+ Dein gewählter Benutername "$alias" enthält illegale Zeichen. Bitte versuch einen anderen Benutzernamen!
+ </div>
+ <hr>
+END
+} elsif ($reload eq "alias_length") {
+print <<END;
+ <div class=b>
+ ACHTUNG!
+ </div>
+ <div>
+ Dein gewählter Benutername "$alias" enthält zu viele Zeichen. Es sind maximal 15 Zeichen erlaubt!!
+ </div>
+ <hr>
+END
+} else {
+print <<END;
+ <div>
+ Hier kannst Du Dich registrieren. Bitte beachte, daß die Passworteingabefelder übereinstimmen!
+ </div>
+ <hr>
+END
+}
+print <<END;
+ <form action="chat">
+ <input type="hidden" name="request" value="start">
+ <input type="hidden" name="var" value="create_alias">
+ <div>
+ Dein Alias:
+ <font color="ffa500">
+ (Muß angegeben werden)
+ </font>
+ <br>
+ <input name="alias" VALUE="$alias">
+ </div>
+ <br>
+ <div>
+ Dein gewünschtes Passwort:
+ <br>
+ <input type="password" name="pw" value="$pw">
+ </div>
+ <br>
+ <div>
+ Geb hier Dein Passwort erneuert ein:
+ <br>
+ <input type="password" name="tmp">
+ </div>
+ <br>
+ <font color=ffffff>
+ <input type="submit" value="Registrieren">
+ </font>
+ <br>
+ </form>
+ <hr>
+ <div>
+ Um den Chat zu betreten müssen die Daten nach der Registration auf der Startseite erneuert bestätigt werden !
+ </div>
+ </td>
+ </tr>
+ </table>
+</center>
+</body>
+</html>
+END
+}
+
+sub checklogin { # Überprüfen, ob die Login-Daten korrekt sind.
+opendir(USERS,"data/online/users");
+ my @users = readdir(USERS);
+closedir(USERS);
+ my $users = $#users;
+ my $hierachie = &hierachie($alias);
+ if ($users > $limit && $hierachie ne "wa" && $hierachie ne "ow") {
+ $tmp = "full";
+ &login_html;
+ exit 0;
+ }
+ my $lognotexists = "true";
+ opendir(USERDIR,"data/user/options");
+ my @userdir = readdir(USERDIR);
+ closedir(USERDIR);
+ foreach $user (@userdir) {
+ if ($user eq $alias) {
+ open(OPTIONS,"<data/user/options/$alias");
+ my @options = <OPTIONS>;
+ close OPTIONS;
+ foreach(@options) {
+ chomp $_;
+ }
+ if ($options[0] eq $pw) {
+ open(BAN,"<data/ban");
+ my @ban = <BAN>;
+ close BAN;
+ foreach(@ban) {
+ chomp;
+ if ($_ eq $alias || $_ eq "ip://".$client->peerhost()) {
+ if (-f "data/online/users/$admin") {
+ &post_prv($admin,"<font color=ffffff><font color=ffa500>$_</font> kann sich nicht einloggen (Ist verbannt)!!</font>");
+ }
+ $tmp = "banned";
+ &login_html;
+ exit 0;
+ }
+ }
+ if ($options[1] eq undef) { $col = &random_color;}
+ else { $col = $options[1]; }
+ if ($options[2] eq undef) { $secol = &random_color;}
+ else { $secol = $options[2];}
+ if ($options[3] eq undef) { $maxVerlauf = "10";}
+ else { $maxVerlauf = $options[3];}
+ if ($options[4] eq undef) { $verlaufOrder = "1";}
+ else {$verlaufOrder = $options[4];}
+ my @digit = (A..Z, a..z, 0..9, "-", ".");
+ my $num1 = rand(@digit);
+ my $num2 = rand(@digit);
+ my $num3 = rand(@digit);
+ my $num4 = rand(@digit);
+ my $num5 = rand(@digit);
+ my $num6 = rand(@digit);
+ my $num7 = rand(@digit);
+ my $num8 = rand(@digit);
+ my $num9 = rand(@digit);
+ my $num10 = rand(@digit);
+ $tmpid = $digit[$num1].$digit[$num2].$digit[$num3].$digit[$num4].$digit[$num5].$digit[$num6].$digit[$num7].$digit[$num8].$digit[$num9].$digit[$num10];
+ open TMPID, ">data/online/tmpid/$alias.$tmpid";
+ print TMPID $alias;
+ close TMPID;
+ open IDENT, ">data/online/ident/$alias" ;
+ print IDENT $client->peerhost()."\n$tmpid\n".$client->peerhost().":".$client->peerport();
+ close IDENT;
+ open LASTLOGIN, ">data/user/lastlogin/$alias";
+ print LASTLOGIN time;
+ close LASTLOGIN;
+ &frameset_html;
+ $client->shutdown(2);
+ exit 0;
+ } else {
+ $lognotexists = "false";
+ }
+ }
+ }
+ &login_html; # Falls Login-Daten inkorrekt sind, zurück zur Startseite.
+}
+
+sub create_alias { # Erstellung eines neuen Benutzers.
+ if ($alias =~ /\W/ || $alias eq "") {
+ goto CREATE if ($alias =~ /[-]/ && $alias !~ /\W/);
+ &create_alias_html("alias_prohibited");;
+ $client->shutdown(2);
+ exit 0;
+ } elsif ($pw ne $tmp) {
+ &create_alias_html("pw_wrong");
+ $client->shutdown(2);
+ exit 0;
+ } elsif (length($alias) >= 15) {
+ &create_alias_html("alias_length");
+ $client->shutdown(2);
+ exit 0;
+ }
+CREATE:
+ opendir(USERDIR,"data/user/options");
+ my @user = readdir(USERDIR);
+ close USERDIR;
+ foreach $user (@user) {
+ if ($user eq $alias) {
+ &create_alias_html("alias_exists");
+ $client->shutdown(2);
+ exit 0;
+ }
+ }
+ open(OPTIONS,">data/user/options/$alias");
+ print OPTIONS $pw."\n";
+ close OPTIONS;
+
+ &login_html;
+}
+
+sub frameset_html {
+print <<END;
+<html>
+ <head>
+ <title>
+ $title
+ </title>
+ </head>
+<frameset border=0 frameborder=0 framespacing=0 cols="130,*">
+ <frameset border=0 frameborder=0 framespacing=0 rows="*,55">
+ <frame name="online" src="chat?request=online&room=$loginplace&alias=$alias&tmpid=$tmpid">
+ <frameset border=0 frameborder=0 framespacing=0 cols="70,*">
+ <frame name="logo" src="chat?request=htdocs&var=logo_html" scrolling="no">
+ <frame name="reload" src="chat?request=htdocs" scrolling="no">
+ </frameset>
+ </frameset>
+ <frameset border=0 frameborder=0 framespacing=0 rows="*,55">
+ <frame name='main' src='chat?request=loggedin&alias=$alias&col=$col&secol=$secol&tmpid=$tmpid&maxVerlauf=$maxVerlauf&verlaufOrder=$verlaufOrder'>
+ <frame name="input" src="chat?request=htdocs" scrolling="no">
+ </frameset>
+</frameset>
+</html>
+END
+}
+
+
+1;