#!/usr/bin/perl use warnings; use strict; use DBI; use CGI; use CGI::Session; use HTML::Template; use Crypt::PasswdMD5; my $title = 'Email Administration Login'; my $cgi = CGI->new; my $self = $cgi->url; my %login = $cgi->Vars; my $session = CGI::Session->new or die CGI::Session->errstr; my $template = HTML::Template->new( filename => '../../html/emadmin/login.tmpl', associate => [$session], die_on_bad_params => 0, global_vars => 1, cache => 0, ); $session->clear if $cgi->param('logout'); $session->param('hostname', `hostname`); if ( $cgi->param('Login') ) { my $home = 'http://emailadmin.company.com/admin/search.pl'; print $cgi->redirect($home) if authenticated_user(\%login); } print $session->header; print $template->output; ################################################################################ sub authenticated_user { my $login = shift; $session->param('login_failed', 'Invalid username, or password...Please try again'); if ( defined $login->{'username'} && defined $login->{'password'} ) { my ($encrypted_pass, $roll, $name) = query_DB($login->{'username'}); if ( $encrypted_pass ) { my $salt = substr($encrypted_pass, 3,8); my $password = unix_md5_crypt( $login->{'password'}, $salt ); if ( $password eq $encrypted_pass ) { $session->clear('login_failed'); $session->param('logged_in', 1); $template->param('logged_in', 1); $session->param('admin', $login->{'username'}); $session->param('roll', $roll); $session->param('gic', 1) if $roll eq 'admin'; return 1; } } } return 0; }