#! /usr/bin/perl
use utf8;
use strict;
use vars qw( @SPR $Fehler %Aufruf $FehlerCode );

no utf8;

require "../_req_globalmonitoring.pl";


# nwp_login.pl
# by Rolf Mohr (MMworx) (webmaster@standort-dortmund.de)

# Login zur Mini-Administration für Netzwerkpartner

my $MailProg = '/usr/sbin/sendmail';
my $TFK = "4JuGsr52TrsHcVs9zTf36Gf7zRq4Gs7b";

my @Eingabeliste = (); my $Eingabe = 0; my $Eintrag = 0;
my $Name = 0; my $Wert = 0;

# *****************************************************************************************************

# Formulardaten (GET oder POST) einlesen und umformen ---------------------------------
if ($ENV{REQUEST_METHOD} eq "GET")
{
 @Eingabeliste = split(/&/, $ENV{'QUERY_STRING'});
}
else
{
 read(STDIN, $Eingabe, $ENV{'CONTENT_LENGTH'});
 @Eingabeliste = split(/[&;]/, $Eingabe);
}
foreach $Eintrag (@Eingabeliste)
{
 $Eintrag =~ s/\+/ /go;
 ($Name, $Wert) = split(/=/, $Eintrag);
 $Name =~ s/\%(..)/pack("c", hex($1))/ge;
 $Wert =~ s/\%(..)/pack("c", hex($1))/ge;
 $Wert =~ s/[{|+*}<>#~\t\r]//g;
 $Wert =~ s/[\']/`/g;
 if ($Name ne "NewInvoice") {$Wert =~ s/\n//g;}
 $Aufruf{$Name} = $Wert;
}

$Fehler = "";
$FehlerCode = 0;
@SPR = ();

# Param "LG" steuert sprache - hier zuweisen, wenn nicht vorhanden
if (length($Aufruf{'LG'}) < 1) {$Aufruf{'LG'} = "d";}

# Sprache laden
$Name = lc($Aufruf{'LG'}); $Wert = "_admin-text-$Name.pl";
if (-e $Wert) { open (DATEI,"<$Wert"); @SPR = <DATEI>;  close (DATEI);}
else { open (DATEI,"<_admin-text-d.pl"); @SPR = <DATEI>;  close (DATEI);}
for (@SPR) {chomp $_;}


if ($Aufruf{'S'} <= 1)
{
 &Start;
}
elsif ($Aufruf{'S'} == 2)
{
 &Check;
 if ($Fehler ne "") {&Start;}
}


exit(0);

# *****************************************************************************************************
#        SUBROUTINEN
# *****************************************************************************************************

# Check
sub Check
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $DN = ""; my $TM = time();
 my @LogKomp = (); my @Data1 = (); my @ET1 = (); my $LoginString = "";

 # login-DB einlesen. Aufbau:
 # Benutzername (Passwort), ID1 (Gruppe), ID2 (individuell), Klarname, Email, interne Info (für WTG Admin), 1 (Herr) oder 2 (Frau)
 # ID1 bestimmt die Verwaltung (Datei) für angelegte Test-Accounts etc.

 $Aufruf{'EML'} = lc($Aufruf{'EML'});

 open (DATEI,"<_login_db_nwp284_xx7ft.pl"); @Data1 = <DATEI>; close (DATEI); $Dummy = shift(@Data1); # kommentar entfernen
 $i = 0; # als Flag
 for (@Data1)
 {
  if (length($_) > 5)
  {
   @ET1 = split("\t", $_);
   if ($ET1[4] eq $Aufruf{'EML'})
   {
    $i = 1; # Email OK
    if ($ET1[0] eq lc($Aufruf{'BN'})) { $i = 2; $LoginString = $_; last; }
   }
  }
 }

 if ($i != 2)
 {
  if (! $i) { $FehlerCode = 1; $Fehler = $SPR[16]; return; } # EML nicht gefunden
  else { $FehlerCode = 2; $Fehler = $SPR[17]; return; } # PW nicht gefunden
 }

 # OK bis hier - VK erzeugen
 srand;
 my $VLG = "abcdefghjklmnpqrstuvwxyz23456789abcdefghjklmnpqrstuvwxyz23456789";

 my $VK = $TM; for ($i = 0; $i < 22; $i++) { $VK .= substr($VLG, int(rand 50), 1); } $VK = lc($VK);

 # Datei mit VK anlegen
 $Dummy = "_tmp/$VK".".pl";
 open (DATEI,">$Dummy"); print DATEI $LoginString; close (DATEI);


 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[1]\n"; # Administration
 print "</h1>\n\n";

 # Hauptfunktionen
 print "<ul id='navi-charts'>\n";
 print "&nbsp;\n"; # hier leer
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 # print "<ul class='header-logout-ul'><li><a href='ifs_main_771.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[63]</a></li></ul>\n\n";
 print "&nbsp;\n"; # hier leer

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 $Dummy = (split("\t", $LoginString))[3];
 print "$SPR[316] $Dummy!\n"; # "herzlich willkommen ...
 print "</h1>\n\n";

 print "<p>\n";
 print "<br><br><br><br>\n";

 print "<a class='rechts-weiterbutton-breit-a' href='nwp_main.pl?VK=$VK'>$SPR[313]</a>\n";

 print "</p>\n";


 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";


} # Check

# Startseite
sub Start
{
 my $Dummy = 0; my $DM = 0; my $i = 0; my $DN = ""; my $TM = time();

 my @LogKomp = (); my @Data1 = (); my @ET1 = ();


 # HTML Header aufbauen
 &Build_ADM_HTML;

 # Header mit Logo, Footer etc. aufbauen und linken Bereich öffnen
 &Build_ADM_Header;

 # linker Bereich: Headline / Tool-Arten aufzählen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1>\n";
 print "$SPR[315]\n"; # Administration
 print "</h1>\n\n";

 # Hauptfunktionen
 print "<ul id='navi-charts'>\n";
 print "&nbsp;\n"; # hier leer
 print "</ul>\n\n";


 print "</div>\n\n"; # linken Bereich abschließen

 # rechter Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 print "<div id='content-wrapper-rechts'>\n\n";

 # obere Links (hier keine)
 print "<div id='rechts-navi-content'>\n";

 # untere Links (hier keine)
 print "<div id='rechts-navi-content-footer'>\n";
 print "</div>\n\n";

 # Logout
 # print "<ul class='header-logout-ul'><li><a href='ifs_main_771.pl?S=9000&LG=$Aufruf{'LG'}&VK=$Aufruf{'VK'}'>$SPR[63]</a></li></ul>\n\n";
 print "&nbsp;\n"; # hier leer

 print "</div>\n\n"; # rechten Bereich abschließen

 # mittlerer Bereich +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 # Headline
 print "<h1 class='willkommen'>\n";
 print "$SPR[2]\n"; # Administration
 print "</h1>\n\n";

 print "<form id='navi-links' action='nwp_login.pl' method='post'>\n";
 print "<input type='hidden' name='S' value='2'>\n";
 print "<input type='hidden' name='LG' value='$Aufruf{'LG'}'>\n\n";

 print "<p>\n";
 print "<p class='header-p'>\n";
 print "$SPR[5]\n";
 if ($Fehler ne "") { print "<span class='error'>\n<br>$Fehler\n</span>\n\n"; }
 print "</p>\n\n";
 # Email
 if ($FehlerCode eq "1") { print "<input name='EML' type='text' maxlength='135' class='input-text-breit-error' value='$Aufruf{'EML'}'><br>\n"; }
 else
 {
  if ($Fehler ne "") {print "<input name='EML' type='text' maxlength='135' class='input-text-breit' value='$Aufruf{'EML'}'><br>\n";}
  else {print "<input name='EML' type='text' maxlength='135' class='input-text-breit' value='$SPR[19]' onFocus=\"if(this.value=='$SPR[19]') this.value=''\"><br>\n";}
 }


 print "<br>\n";

 # Passwort
 if ($FehlerCode eq "2") { print "<input name='BN' type='password' maxlength='135' class='input-text-breit-error' value=''><br>\n"; }
 else
 {
  if ($Fehler ne "") { print "<input name='BN' type='password' maxlength='135' class='input-text-breit' value=''><br>\n"; }
  else { print "<input name='BN' type='password' maxlength='135' class='input-text-breit' value='$SPR[20]' onFocus=\"if(this.value=='$SPR[20]') this.value=''\"><br>\n"; }
 }



 print "<br><br>\n<input type='submit' class='input-form-senden' value=''>\n</form>\n";
 print "</p>\n";


 # Divs / HTML abschließen
 print "</div>\n\n"; # Content-Wrapper
 print "</div>\n\n"; # Content
 print "</div>\n\n"; # wrapper

 print "</body>\n";
 print "</html>\n\n";

} # Start