array(T_ZBX_STR, O_NO, NULL, NOT_EMPTY, 'isset({enter})'), "password"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({enter})'), "sessionid"=> array(T_ZBX_STR, O_OPT, NULL, NULL, NULL), "message"=> array(T_ZBX_STR, O_OPT, NULL, NULL, NULL), "reconnect"=> array(T_ZBX_INT, O_OPT, P_ACT, BETWEEN(0,65535),NULL), "enter"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL), "form"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL), "form_refresh"=> array(T_ZBX_INT, O_OPT, NULL, NULL, NULL) ); check_fields($fields); ?> '.(ZBX_LOGIN_ATTEMPTS-1). ' AND ('.time().'-attempt_clock)>'.ZBX_LOGIN_BLOCK.'))'; $login = $attempt = DBfetch(DBselect($sql)); if($login){ switch($config['authentication_type']){ case ZBX_AUTH_LDAP: $login = ldap_authentication($name,get_request('password','')); break; case ZBX_AUTH_HTTP: $login = true; break; case ZBX_AUTH_INTERNAL: default: $alt_auth = ZBX_AUTH_INTERNAL; $login = true; } } if($login){ $login = $row = DBfetch(DBselect('SELECT u.userid,u.alias,u.name,u.surname,u.url,u.refresh,u.passwd '. ' FROM users u, users_groups ug, usrgrp g '. ' WHERE u.alias='.zbx_dbstr($name). ((ZBX_AUTH_INTERNAL==$config['authentication_type'])?' AND u.passwd='.zbx_dbstr($password):''). ' AND '.DBin_node('u.userid', $ZBX_LOCALNODEID))); } /* update internal pass if it's different if($login && ($row['passwd']!=$password) && (ZBX_AUTH_INTERNAL!=$config['authentication_type'])){ DBexecute('UPDATE users SET passwd='.zbx_dbstr($password).' WHERE userid='.zbx_dbstr($row['userid'])); } */ if($login){ $login = (check_perm2login($row['userid']) && check_perm2system($row['userid'])); } if($login){ $sessionid = md5(time().$password.$name.rand(0,10000000)); zbx_setcookie('zbx_sessionid',$sessionid); DBexecute('INSERT INTO sessions (sessionid,userid,lastaccess) VALUES ('.zbx_dbstr($sessionid).','.$row['userid'].','.time().')'); add_audit(AUDIT_ACTION_LOGIN,AUDIT_RESOURCE_USER,"Correct login [".$name."]"); if(empty($row["url"])){ $USER_DETAILS['alias'] = $row['alias']; $USER_DETAILS['userid'] = $row['userid']; $row["url"] = get_profile('web.menu.view.last','index.php'); unset($USER_DETAILS); } Redirect($row["url"]); die(); // return; } else{ $row = NULL; $_REQUEST['message'] = 'Login name or password is incorrect'; add_audit(AUDIT_ACTION_LOGIN,AUDIT_RESOURCE_USER,'Login failed ['.$name.']'); if($attempt){ $ip = (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']))?$_SERVER['HTTP_X_FORWARDED_FOR']:$_SERVER['REMOTE_ADDR']; $attempt['attempt_failed']++; $sql = 'UPDATE users SET attempt_failed='.zbx_dbstr($attempt['attempt_failed']). ', attempt_clock='.time(). ', attempt_ip='.zbx_dbstr($ip). ' WHERE userid='.zbx_dbstr($attempt['userid']); DBexecute($sql); } } } include_once "include/page_header.php"; if(isset($_REQUEST['message'])) show_error_message($_REQUEST['message']); if(!isset($sessionid)){ switch($config['authentication_type']){ case ZBX_AUTH_HTTP: break; case ZBX_AUTH_LDAP: case ZBX_AUTH_INTERNAL: default: insert_login_form(); } } else{ echo '
Welcome to ZABBIX! You are connected as '.$USER_DETAILS['alias'].'.
'; } ?>