#!/usr/bin/perl #!/usr/local/bin/perl # ------------- # Links # ------------- # Links Manager # # File: mail.cgi # Beschreibung: Adds a user to the mailing list. # Author: Alex Krohn # Email: alex@gossamer-threads.com # Web: http://www.gossamer-threads.com/ # Version: 2.01 # # (c) 1998 Gossamer Threads Inc. # # This script is not freeware! Please read the README for full details # on registration and terms of use. # ===================================================================== # # # # German Translation by Nicky # http://www.nicky.net # Deutsches Forum http://forum.nicky.net # Required Librariers # -------------------------------------------------------- eval { ($0 =~ m,(.*)/[^/]+,) && unshift (@INC, "$1"); # Get the script location: UNIX / ($0 =~ m,(.*)\\[^\\]+,) && unshift (@INC, "$1"); # Get the script location: Windows \ require "admin/links.cfg"; # Ändern Sie dieses zum vollen Pfad zu links.cfg, wenn Sie Probleme haben sollten. require "$db_lib_path/db_utils.pl"; require "$db_lib_path/links.def"; $build_use_templates ? require "$db_lib_path/site_html_templates.pl" : require "$db_lib_path/site_html.pl"; }; if ($@) { print "Content-type: text/plain\n\n"; print "Fehler beim einlesen von dazugehörigen Bibliothek Dateien: $@\n"; print "Überprüfen Sie ob diese existieren, Pfade richtig eingestellt sind, und ob die Dateien richtig CHMOD-ed sind."; exit; } # ======================================================== eval { &main; }; if ($@) { &cgierr("Allgemeiner Fehler: $@"); } exit; sub main { # -------------------------------------------------------- $|++; my %in = &parse_form; my $aktion = $in{'aktion'}; CASE: { ($aktion eq "anmelden") and do { &anmelden (%in); last CASE; }; ($aktion eq "abmelden") and do { &abmelden(%in); last CASE; }; &site_html_mailing(); }; } sub anmelden { # ----------------------------------------------------------- my %in = @_; my $list = $db_email_name; my $email = $in{'email'}; my $name = $in{'name'}; ($email =~ /.+@.+\..+/) or &site_html_mailing_error ("Die Email adresse: '$email' hat kein gültiges Format.") and return; ($name =~ /[A-Za-z]+/) or &site_html_mailing_error ("Bitte tragen Sie Ihren Namen sowie Ihre Email ein.") and return; my $users_r = &get_users ($list); ${$users_r}{$email} and &site_html_mailing_error ("Die Email adresse: $email ist bereits angemeldet.") and return; ${$users_r}{$email} = $name; open (LIST, ">$list") or &cgierr ("Kann die Datei bzw. Verzeichnis nicht öffnen: $list. Grund: $!"); if ($db_use_flock) { flock (LIST, 2) or &cgierr ("Fehler im System, bitte wenden Sie sich an den Webmaster! Grund: $!"); } foreach (sort keys %{$users_r}) { print LIST "$_$db_delim${$users_r}{$_}\n"; } close LIST; &site_html_mailing ('anmelden'); } sub abmelden { # ----------------------------------------------------------- my %in = @_; my $list = $db_email_name; my $email = $in{'email'}; my $name = $in{'name'}; my $users_r = &get_users ($list); ${$users_r}{$email} or &site_html_mailing_error ("Die Email adresse: $email ist nicht in der Liste.") and return; delete ${$users_r}{$email}; open (LIST, ">$list") or &cgierr ("Kann die Datei bzw. Verzeichnis nicht öffnen: $list. Grund: $!"); if ($db_use_flock) { flock (LIST, 2) or &cgierr ("Fehler im System, bitte wenden Sie sich an den Webmaster! Grund: $!"); } foreach (sort keys %{$users_r}) { print LIST "$_$db_delim${$users_r}{$_}\n"; } close LIST; &site_html_mailing ('abmelden'); } sub get_users { # ----------------------------------------------------------- my ($list) = shift; my $users_r; my $delim = quotemeta ($db_delim); open (LIST, "<$list") or &cgierr ("Kann die Datei bzw. Verzeichnis nicht öffnen: $config{'list_dir'}/$list. Grund: $!"); if ($db_use_flock) { flock (LIST, 1); } while () { chomp; (/(.*)$delim(.*)/o) and (${$users_r}{$1} = $2); } close LIST; return $users_r; }