#!/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,"; 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 <
yChat: Version $version

Letztes Update: $datum

Seitenaufrufe: $counter

Benutzer registriert: $users

Benutzer online: $logtin

Benutzerlimit: $limit

Webmaster: Paul C. Bütow

Page: www.PaulBuetow.de


END if ($tmp eq "true") { print < ACHTUNG!
Wahrscheinlich existiert Dein Alias "$alias" nicht,
Du hast Dich verschrieben oder das Passwort ist falsch.
Versuch es erneuert !
END } elsif ($tmp eq "quit") { print < Du hast soeben den Chat verlassen.
Um den Chat erneuert zu betreten, einfach Daten eingeben und auf "Los Geht's" klicken :-) END } elsif ($tmp eq "autologout") { print < Du wurdest automatisch aus dem Chat ausgeloggt. Grund: Du warst 10 Minuten inaktiv.
Um den Chat erneuert zu betreten, einfach Daten eingeben und auf "Los Geht's" klicken :-) END } elsif ($tmp eq "banned") { print < ACHTUNG!
Du wurdest aus dem Chat verbannt!!!
Z.z. kannst Du Dich leider nicht in den Chat einloggen.
Sorry!
END } elsif ($tmp eq "kick") { print < ACHTUNG!
Du wurdest soeben aus dem Chat katapultiert!
Schlechtes Verhalten mag die Ursache hierfür sein.
Sorry!
END } elsif ($tmp eq "logout") { print < ACHTUNG!
Du wurdest soeben aus dem Chat ausgeloggt!
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.
Sorry!
END } elsif ($tmp eq "full") { print "
ACHTUNG!
Der Chat ist leider voll! Bitte versuch Dich später noch mal einzuloggen!
"; } elsif ($var eq "create_alias") { print "
Du hast sich soeben in die Datenbank eingetragen. Einfach auf \"Los Geht's\" klicken :-)
"; } else { print < Herzlich willkommen!
Einfach Daten eingeben und auf "Los Geht's" klicken :-) END } print <
Dein Alias:
Dein Passwort:


Solltest Du noch keinen Nick besitzen, dann auf "Registrieren" klicken!


END if ($logtin > 0) { print "
Folgende Personen sind eingeloggt:
"; foreach(@users) { print "$_ " if (-f "data/online/users/$_"); } print "
"; } print<
END if (-d "data/online/rooms") { } else { mkdir "data/online/rooms", 0777; } } sub chatiquette_html { &start_html("Registration"); print <
END open CHATIQ, "chatiq.sno"; foreach() { last if (/^\n+$/); print $_; } WEITER: close CHATIQ; print<
END } sub create_alias_html { # HTML-Form für Erstellung eines neuen Benutzers. open(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 if ($reload eq "alias_exists") { print < ACHTUNG!
Der von Dir gewählte Benutzername "$alias" existiert in unserer Datenbank bereits. Bitte versuch es erneuert mit einem anderen Benutzernamen !

END } elsif ($reload eq "pw_wrong") { print < ACHTUNG!
Deine beiden Passworteingaben stimmen nicht überein. Bitte geb das Passwort erneuert an um sicherzugehen, daß kein falsches Passwort abgespeichert wird !

END } elsif ($reload eq "alias_prohibited") { print < ACHTUNG!
Dein gewählter Benutername "$alias" enthält illegale Zeichen. Bitte versuch einen anderen Benutzernamen!

END } elsif ($reload eq "alias_length") { print < ACHTUNG!
Dein gewählter Benutername "$alias" enthält zu viele Zeichen. Es sind maximal 15 Zeichen erlaubt!!

END } else { print < Hier kannst Du Dich registrieren. Bitte beachte, daß die Passworteingabefelder übereinstimmen!
END } print <
Dein Alias: (Muß angegeben werden)

Dein gewünschtes Passwort:

Geb hier Dein Passwort erneuert ein:



Um den Chat zu betreten müssen die Daten nach der Registration auf der Startseite erneuert bestätigt werden !
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,"; close OPTIONS; foreach(@options) { chomp $_; } if ($options[0] eq $pw) { open(BAN,"; close BAN; foreach(@ban) { chomp; if ($_ eq $alias || $_ eq "ip://".$ENV{'REMOTE_ADDR'}) { if (-f "data/online/users/$admin") { &zeit; &post_prv($admin,"$_ kann sich nicht einloggen (Ist verbannt)!!"); } $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","($hours:$min:$sec) $alias [$number] hat sich soeben als neuer Benutzer registriert :-) ..."); &login_html; } sub frameset_html { print < $title - Powered by CXG - Chatters of the next generation END }