/* Copyright (c) Rik Snel 2011, license GNU AGPLv3 */ require_once('config.php'); require_once('account.php'); require_once('mdb2_utils.php'); require_once('html.php'); require_once('mailfunc.php'); // check if mandatory config values are set if (!isset($mail_backend)) $mail_backend = 'default'; if (!isset($mail_inhibit)) $mail_inhibit = false; if (!isset($mail_emerg_from)) $mail_emerg_from = 'srv-ovc-linux@ovc.nl'; if (!isset($session_name)) error_system('$session_name not set'); if (!isset($sysop)) error_system('$sysop not set'); if (!isset($sysop_email)) error_system('$sysop_email not set'); if (!isset($environment)) error_system('$environment not set'); if ($environment != 'school' && $environment != 'rerun' && $environment != 'cube' && $environment != 'bhc') error_system('illegal value for $environment: '.$environment); if (!isset($timezone)) error_system('$timezone not set'); if (!isset($copy_year)) error_system('$copy_year not set'); if (!isset($title_prefix)) error_system('$title_prefix not set'); if (!isset($sourcerepo)) error_system('$sourcerepo not set'); if (!isset($datadir)) error_system('$datadir not set'); if (!isset($logfile)) error_system('$logfile not set'); if (!isset($server_type)) error_system('$server_type not set'); if (!isset($admins)) error_system('$admins not set'); if (!isset($admins_sql)) error_system('$admins_sql not set'); if (!is_array($admins)) error_system('$admins is not an array'); if (!is_array($admins_sql)) error_system('$admins_sql is not an array'); if ($server_type != 'mysql' && $server_type != 'sqlsrv') error_system('illegal value for $server_type: '.$server_type); if (!isset($backdoor_password)) error_system('$backdoor_password is not set'); if (strlen($backdoor_password) < 32) error_system('$backdoor_password is too short'); /* stolen from php-jwt */ function urlsafeB64Encode($input) { return str_replace('=', '', \strtr(\base64_encode($input), '+/', '-_')); } /* stolen from php-jwt */ function urlsafeB64Decode($input) { $remainder = \strlen($input) % 4; if ($remainder) { $padlen = 4 - $remainder; $input .= str_repeat('=', $padlen); } return base64_decode(\strtr($input, '-_', '+/')); } function check_and_extract($array, $key) { if (!is_array($array)) error_system("purported array is not an array"); if (!array_key_exists($key, $array)) error_system("array does not contain requested key \"$key\""); return $array[$key]; } /* function mail_backend_default($from, $to, $headers, $subject, $message) { return mail($to, $subject, $message, $headers, '-f '.$from); } function phplib_mail($from_name, $from_addr, $to, $extra_headers, $subject, $message) { global $data, $mail_backend, $mail_inhibit; if (!filter_var($from_addr, FILTER_VALIDATE_EMAIL)) error_system("emailadres FROM $from is invalid"); if (!filter_var($to, FILTER_VALIDATE_EMAIL)) error_system("emailadres TO $to is invalid"); if ($from_name) { $from_header = "From: $from_name <$from_addr>\r\n"; } else { $from_header = "From: $from_addr\r\n"; } $headers = $from_header.'X-Mailer: PHP/'.phpversion()."\r\n".$extra_headers; $now = date_create_from_format('U.u', $_SERVER['REQUEST_TIME_FLOAT']); $filename = 'mail_'.date_format($now, "YmdGisu").'_'.$to.'.txt'; $bytes = file_put_contents($data.$filename, ($mail_inhibit?"INHIBITED\n":'').$headers."Subject: ".$subject."\r\n".$message); echo("filename=$filename $bytes"); ?>
=$headers?>if ($mail_inhibit) return; switch ($mail_backend) { case 'default': $res = mail_backend_default($from_addr, $to, $headers, $subject, $message); break; default: error_system("impossible value for mail_backend $mail_backend"); } if ($res) logit("mail sent to $to, no error (yet) from backend"); else logit("error sending mail to $to"); } function phplib_mail_emerg($message) { global $mail_emerg_from, $mail_backend, $sysop_email; $headers = "From: $mail_emerg_from\r\n".'X-Mailer: PHP/'.phpversion()."\r\n"; switch ($mail_backend) { case 'default': return mail_backend_default($mail_emerg_from, $sysop_email, $headers, 'errormessage', $message); break; default: // fail silently, we don't want an error loop here } } */ /* moved to mdb2_utils.php // set some variables to help writing portable SQL switch ($server_type) { case 'mysql': $auto_increment = 'AUTO_INCREMENT'; $show_tables = "SHOW TABLES"; $show_columns = "SELECT * FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = '"; $show_columns_post = "'"; //$show_columns = "SHOW COLUMNS FROM "; //$show_columns_post = ""; $last_insert_id = 'SELECT LAST_INSERT_ID()'; $ifnull = 'IFNULL'; $concat_begin = 'CONCAT('; $concat_cont = ','; $concat_end = ')'; $as_varchar = 'AS CHAR'; $group_concat = 'GROUP_CONCAT'; $group_concat_d = 'GROUP_CONCAT'; $group_concat_d_sep = 'SEPARATOR'; break; case 'sqlsrv': $auto_increment = 'IDENTITY'; $last_insert_id = 'SELECT SCOPE_IDENTITY()'; $show_tables = "SELECT name FROM sys.Tables"; $show_columns = "SELECT * FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = '"; $show_columns_post = "'"; $ifnull = 'ISNULL'; $concat_begin = ''; $concat_cont = '+'; $concat_end = ''; $as_varchar = 'AS VARCHAR'; $group_concat = 'dbo.GROUP_CONCAT'; $group_concat_d = 'dbo.GROUP_CONCAT_D'; $group_concat_d_sep = ','; break; default: error_system('impossible'); }*/ // some setup mb_internal_encoding("UTF-8"); date_default_timezone_set($timezone); session_name($session_name); session_start(); function logdb($action, $fakeuser = NULL) { global $db, $logtable, $herinfo; if (!isset($logtable) || !$logtable) return; mdb2_exec($db, "INSERT INTO $logtable ( log_ip, log_session, log_euid, log_uid, log_admin, log_admin_sql, log_script, log_action, log_time_float, log_period_id ) VALUES ( '%q', '%q', '%q', '%q', %i, %i, '%q', '%q', '%q', %i )", $_SERVER['REMOTE_ADDR'], session_id(), $fakeuser?$fakeuser:(isset($_SESSION['username'])?$_SESSION['username']:NULL), isset($_SESSION['orig_username'])?$_SESSION['orig_username']:NULL, isset($_SESSION['admin'])?$_SESSION['admin']:NULL, isset($_SESSION['admin_sql'])?$_SESSION['admin_sql']:NULL, basename($_SERVER['PHP_SELF']), $action, $_SERVER['REQUEST_TIME_FLOAT'], isset($herinfo)?$herinfo['period_id']:NULL); } if (isset($_SESSION['username'])) { $log_username = $_SESSION['username']; if (isset($_SESSION['orig_username'])) $log_username .= ' '.$_SESSION['orig_username']; else $log_username .= ' '.$_SESSION['username']; if ($_SESSION['admin'] && $_SESSION['admin_sql']) $log_username .= ' *'; else if ($_SESSION['admin']) $log_username .= ' +'; else if ($_SESSION['admin_sql']) $log_username .= ' x'; apache_note('phplib_username', '\''.$session_name.'\' '.$log_username); } else apache_note('phplib_username', '\''.$session_name.'\' NONE NONE'); // is onze gebruiker ingelogd? (of probeert hij/zij in te loggen?) en is dat nodig (voor CLI is dat niet nodig) $pathinfo = strrchr($_SERVER['PHP_SELF'], '/'); if (($pathinfo != '/call.php' || ($_SERVER['QUERY_STRING'] != 'action=do_login' && !preg_match('/^action=do_sso&/', $_SERVER['QUERY_STRING']) && !preg_match('/^action=sso_trampoline&/', $_SERVER['QUERY_STRING']))) && (!isset($_SESSION['type']) || ($_SESSION['type'] != 'leerling' && $_SESSION['type'] != 'personeel')) && php_sapi_name() != 'cli') { //$_SESSION['cookietest'] = true; //$_SESSION['notice'][0] = 'Migratie'; //$_SESSION['notice'][1] = 'Van een aantal leerlingen is het wachtwoord niet goed overgezet. Deze leerlingen kunnen in de mediatheek of een computerlokaal hun wachtwoord resetten en vervolgens op een computer inloggen om een nieuw wachtwoord in te stellen.'; //$_SESSION['state'] = urlsafeB64Encode(random_bytes(32)); $email = ''; if (isset($_COOKIE['email'])) $email = trim($_COOKIE['email']); html_start('', 'Loginpagina'); //html_start("$(function(){ $('#login').focus(); });", 'Loginpagina'); ?>
} else { ?>