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 { &check_online; my $counter = undef; open COUNT, '; close COUNT; ++$counter; open COUNT, '>data/count'; flock COUNT, 2; print COUNT $counter; close COUNT; my(@users) = &get_online_users; opendir REGISTRED, 'data/user/options'; my(@registred) = readdir REGISTRED; closedir REGISTRED; my($logtin, $users) = ($#users + 1, $#registred - 1); &start_html("Created & Copyright by Paul C. B\374tow", 'start'); print qq[
\n \n \n \n \n
\n
\n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n
\n yChat: Version $version\n

\n Letztes Update: $datum\n

\n Seitenaufrufe: $counter\n

\n Benutzer registriert: $users\n

\n Benutzer online: $logtin\n

\n Benutzerlimit: $limit\n

\n Beta-yChat: www.java.yChat.de\n

[webchat]
\n
\n
\n \n
\n
\n]; if ($tmp eq 'true') { print qq[
\n ACHTUNG!\n
\n
\n Wahrscheinlich existiert Dein Alias "$alias" nicht,\n
\n Du hast Dich verschrieben oder das Passwort ist falsch.\n
\n Versuch es erneuert !\n
\n]; } elsif ($tmp eq 'quit') { print qq[
\n Du hast soeben den Chat verlassen.\n
\n Um den Chat erneuert zu betreten, einfach Daten eingeben und auf "Los Geht's" klicken :-)\n
\n]; } elsif ($tmp eq 'autologout') { print qq[
\n Du wurdest automatisch aus dem Chat ausgeloggt. Grund: Du warst 20 Minuten inaktiv.\n
\n Um den Chat erneuert zu betreten, einfach Daten eingeben und auf "Los Geht's" klicken :-)\n
\n]; } elsif ($tmp eq 'autokick') { print qq[
\n Du wurdest automatisch aus dem Chat katapultiert. Grund: Du hast den Chat geflutet!\n
\n Um den Chat erneuert zu betreten, einfach Daten eingeben und auf "Los Geht's" klicken :-)\n
\n]; } elsif ($tmp eq 'banned') { print "
\n ACHTUNG!\n
\n
\n Du wurdest aus dem Chat verbannt!!!\n
\n Z.z. kannst Du Dich leider nicht in den Chat einloggen.\n
\n Sorry!\n
\n"; } elsif ($tmp eq 'kick') { print "
\n ACHTUNG!\n
\n
\n Du wurdest soeben aus dem Chat katapultiert!\n
\n Schlechtes Verhalten mag die Ursache hierf\374r sein.\n
\n Sorry!\n
\n"; } elsif ($tmp eq 'selfkill') { print qq[
\n Du hast dich soeben ganz und gar aus dem System gel\366scht!\n
\n Wenn du dir einen neuen Nick angelen willst, dann einfach auf "Registrieren" klicken! :-)\n
\n]; } elsif ($tmp eq 'selfkill') { print "
\n ACHTUNG!\n
\n
\n Du wurdest soeben aus dem Chat ausgeloggt!\n
\n Ursache hierf\374r mag sein, da\337 der Chat voll war und Du Dich nicht am\n Geschehen beteiligt- und unn\366tige Chatkapazit\344ten in Anspruch\n genommen hast.\n
\n Sorry!\n
\n"; } elsif ($tmp eq 'full') { print "
ACHTUNG!
Der Chat ist leider voll! Bitte versuch Dich sp\344ter noch mal einzuloggen!
"; } elsif ($var eq 'create_alias') { print q[
Du hast sich soeben in die Datenbank eingetragen. Einfach auf "Los Geht's" klicken :-)
]; } else { print qq[
\n Herzlich willkommen!\n
\n Einfach Daten eingeben und auf "Los Geht's" klicken :-)\n
\n]; } print qq[
\n
\n \n \n \n \n \n \n \n
\n
\n Dein Alias:\n
\n \n
\n
\n
\n Dein Passwort:\n
\n \n
\n
\n
\n
\n
\n Solltest Du noch keinen Nick besitzen, dann auf "Registrieren" klicken!\n
\n
\n \n \n \n \n \n
\n \n \n \n \n \n
\n \n \n \n \n \n
\n
\n
\n]; if ($logtin > 0) { print q[
Folgende Personen sind eingeloggt:
]; foreach $_ (@users) { print "$_ " if -f "data/online/users/$_"; } print '
'; } print "
\n
\n\n\n"; unless (-d 'data/online/rooms') { mkdir 'data/online/rooms', 511; } } sub create_alias_html { open BAN, '; close BAN; foreach $_ (@ban) { chomp $_; if ($_ eq 'ip://' . $client->peerhost) { $tmp = 'banned'; &login_html; &del_away(); $client->shutdown(2); exit 0; } } my $reload = $_[0]; &start_html('Registration'); print "
\n \n \n \n \n
\n"; if ($reload eq 'alias_exists') { print qq[
\n ACHTUNG!\n
\n
\n Der von Dir gew\344hlte Benutzername "$alias" existiert in unserer Datenbank bereits. Bitte versuch es erneuert mit\n einem anderen Benutzernamen !\n
\n
\n]; } elsif ($reload eq 'pw_wrong') { print "
\n ACHTUNG!\n
\n
\n Deine beiden Passworteingaben stimmen nicht \374berein. Bitte geb das Passwort erneuert an um sicherzugehen, da\337\n kein falsches Passwort abgespeichert wird !\n
\n
\n"; } elsif ($reload eq 'alias_prohibited') { print qq[
\n ACHTUNG!\n
\n
\n Dein gew\344hlter Benutername "$alias" enth\344lt illegale Zeichen. Bitte versuch einen anderen Benutzernamen!\n
\n
\n]; } elsif ($reload eq 'alias_length') { print qq[
\n ACHTUNG!\n
\n
\n Dein gew\344hlter Benutername "$alias" enth\344lt zu viele Zeichen. Es sind maximal 15 Zeichen erlaubt!!\n
\n
\n]; } else { print "
\n Hier kannst Du Dich registrieren. Bitte beachte, da\337 die Passworteingabefelder \374bereinstimmen!\n
\n
\n"; } print qq[
\n \n \n
\n Dein Alias:\n \n (Mu\337 angegeben werden)\n \n
\n \n
\n
\n
\n Dein gew\374nschtes Passwort:\n
\n \n
\n
\n
\n Geb hier Dein Passwort erneuert ein:\n
\n \n
\n
\n \n \n \n
\n
\n
\n
\n Um den Chat zu betreten m\374ssen die Daten nach der Registration auf der Startseite erneuert best\344tigt werden !\n
\n
\n
\n\n\n]; } sub checklogin { opendir USERS, 'data/online/users'; my(@users) = readdir USERS; closedir USERS; my $users = $#users; if ($users > $limit && 3 > &hierachie($alias)) { $tmp = 'full'; &login_html; &del_away(); $client->shutdown(2); 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, "; close OPTIONS; foreach $_ (@options) { chomp $_; } if ((crypt $pw, $cryptkey) eq $options[0] || $options[0] eq $pw) { open BAN, '; close BAN; foreach $_ (@ban) { chomp $_; if ($_ eq $alias or $_ eq 'ip://' . $client->peerhost) { if (-f "data/online/users/$admin") { &post_prv($admin, "$_ kann sich nicht einloggen (Ist verbannt)!!"); } $tmp = 'banned'; &login_html; &del_away(); $client->shutdown(2); 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]; } &rm_if_loggedin($alias); # Sorry weil so ausführlich, der Code-Optimizer formulierte dies um! my(@digit) = (('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'), ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'), (0, 1, 2, 3, 4, 5, 6, 7, 8, 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; my $num11 = rand @digit; my $num12 = rand @digit; $tmpid = $digit[$num1] . $digit[$num2] . $digit[$num3] . $digit[$num4] . $digit[$num5] . $digit[$num6] . $digit[$num7] . $digit[$num8] . $digit[$num9] . $digit[$num10] . $digit[$num11] . $digit[$num12]; 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" . &get_online_time($alias) . "\n$col\n$secol\n"; close IDENT; open LASTLOGIN, ">data/user/lastlogin/$alias"; print LASTLOGIN time; close LASTLOGIN; &frameset_html; &del_away(); $client->shutdown(2); exit 0; } else { $lognotexists = 'false'; } } } &login_html; } sub create_alias { if ($alias =~ /\W/ or $alias eq '') { goto CREATE if $alias =~ /[-]/ and not $alias =~ /\W/; &create_alias_html('alias_prohibited'); &del_away(); $client->shutdown(2); exit 0; } elsif ($pw ne $tmp) { &create_alias_html('pw_wrong'); &del_away(); $client->shutdown(2); exit 0; } elsif (length $alias >= 15) { &create_alias_html('alias_length'); &del_away(); $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'); &del_away(); $client->shutdown(2); exit 0; } } $pw = crypt $pw, $cryptkey; open OPTIONS, ">data/user/options/$alias"; print OPTIONS $pw . "\n"; close OPTIONS; &login_html; } sub frameset_html { print qq[\n \n \n $title\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n\n]; } 1;