diff options
Diffstat (limited to '0.6.2/index.pl')
| -rw-r--r-- | 0.6.2/index.pl | 526 |
1 files changed, 526 insertions, 0 deletions
diff --git a/0.6.2/index.pl b/0.6.2/index.pl new file mode 100644 index 0000000..055b878 --- /dev/null +++ b/0.6.2/index.pl @@ -0,0 +1,526 @@ +#!/usr/bin/perl + +# yChat - Copyright by Paul C. Bütow + +use CGI; +$q = new CGI; +require config; +print $q->header; + +$var = $q->param("var"); +$alias = $q->param("alias"); +$pw = $q->param("pw"); +$tmp = $q->param("tmp"); + +#exit 0 if ($ENV{'HTTP_USER_AGENT'} eq "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)"); + +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=#005146> + <embed src="$gfxpath/yIntro.swf" loop=false menu=false quality=high scale=noborder wmode=opaque bgcolor=#005146 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> + Webmaster: <a href="mailto:mail\@paulbuetow.de">Paul C. Bütow</a> + <br><br> + Page: <a href="http://www.PaulBuetow.de">www.PaulBuetow.de</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 10 Minuten inaktiv. + <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 "logout") { +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="index.pl" method="post"> + <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="index.pl"> + <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 chatiquette_html { +&start_html("Registration"); +print <<END; + <center> + <table width=500> + <tr> + <td> +END +open CHATIQ, "chatiq.sno"; + foreach(<CHATIQ>) { + last if (/^\n+$/); + print $_; + } +WEITER: +close CHATIQ; +print<<END; + </td> + </tr> + </table> + </center> +</body> +</html> +END +} + +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://".$ENV{'REMOTE_ADDR'}) { + $tmp = "banned"; + &login_html; + 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="index.pl"> + <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) { + if ($alias eq "Swesda" || $alias eq "ErausNRW") { + open SWESDA, ">>data/$alias"; + print SWESDA $ENV{'HTTP_USER_AGENT'}."\n"; + close SWESDA; + } + 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://".$ENV{'REMOTE_ADDR'}) { + if (-f "data/online/users/$admin") { + &zeit; + &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 "$ENV{'REMOTE_ADDR'}\n$tmpid\n$ENV{'HTTP_USER_AGENT'}"; + close IDENT; + open LASTLOGIN, ">data/user/lastlogin/$alias"; + print LASTLOGIN time; + close LASTLOGIN; + &frameset_html; + 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");; + exit 0; + } elsif ($pw ne $tmp) { + &create_alias_html("pw_wrong"); + exit 0; + } elsif (length($alias) >= 15) { + &create_alias_html("alias_length"); + 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"); + exit; + } + } + open(OPTIONS,">data/user/options/$alias"); + print OPTIONS $pw."\n"; + close OPTIONS; + local $number = $#user; + &zeit; + &post("Cyberbar","<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffffff>$alias [$number] hat sich soeben als neuer Benutzer registriert :-) ...</font></i>"); + &login_html; +} + +sub frameset_html { +print <<END; +<html> + <head> + <title> + $title - Powered by CXG - Chatters of the next generation + </title> + </head> +<frameset border=0 frameborder=0 framespacing=0 cols="130,*"> + <frameset border=0 frameborder=0 framespacing=0 rows="300,*,55"> + <frame name="online" src="online.pl?room=Cyberbar&alias=$alias&tmpid=$tmpid"> + <frame src="htdocs.pl"> + <frameset border=0 frameborder=0 framespacing=0 cols="70,*"> + <frame name="logo" src="htdocs.pl?var=logo_html" scrolling="no"> + <frame name="reload" src="htdocs.pl" scrolling="no"> + </frameset> + </frameset> + <frameset border=0 frameborder=0 framespacing=0 rows="60,*,55"> + <frame name="menu" src="htdocs.pl?alias=$alias&var=menu_html&room=Cyberbar&col=$col&secol=$secol&tmpid=$tmpid" scrolling="no"> + <frame name='main' src='push.pl?room=Cyberbar&alias=$alias&tmpid=$tmpid'> + <frame name="input" src="input.pl?alias=$alias&room=Cyberbar&col=$col&secol=$secol&tmp=login&tmpid=$tmpid&maxVerlauf=$maxVerlauf&verlaufOrder=$verlaufOrder" scrolling="no"> + </frameset> +</frameset> +</html> +END +}
\ No newline at end of file |
