Add better fatal error handling

This commit is contained in:
Daniel Winzen
2016-04-12 22:19:22 +02:00
parent 0092abe964
commit d4ef35e8ac
9 changed files with 38 additions and 26 deletions

View File

@ -8,6 +8,7 @@ Attempt to create database when there is no connection
Add fallback option for moderator approval
Fix guestaccess selection in setup
Add option to let guests register themselves
Add better fatal error handling
Version 1.15.3 - Mar. 6, 2016
Allow using html tags in linkfilter without breaking dereferrer or image embed

View File

@ -62,7 +62,7 @@ if(!isSet($_REQUEST['action'])){
send_messages(true);
}elseif($_REQUEST['action']==='jsrefresh'){
if(!extension_loaded('json')){
die($I['jsonextrequired']);
send_fatal_error($I['jsonextrequired']);
}
check_session();
ob_start();
@ -271,7 +271,6 @@ if(!isSet($_REQUEST['action'])){
}else{
send_login();
}
exit;
// html output subs
function print_stylesheet(){
@ -1305,7 +1304,7 @@ function send_notes($type){
if(isset($_REQUEST['text'])){
if(MSGENCRYPTED){
if(!extension_loaded('openssl')){
die($I['opensslextrequired']);
send_fatal_error($I['opensslextrequired']);
}
$_REQUEST['text']=openssl_encrypt($_REQUEST['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456');
}
@ -1339,7 +1338,7 @@ function send_notes($type){
}
if(MSGENCRYPTED){
if(!extension_loaded('openssl')){
die($I['opensslextrequired']);
send_fatal_error($I['opensslextrequired']);
}
$note['text']=openssl_decrypt($note['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456');
}
@ -1857,7 +1856,17 @@ function send_login(){
function send_error($err){
global $H, $I;
print_start('error');
echo "<h2>$I[error] $err</h2>$H[backtologin]";
echo "<h2>$I[error]: $err</h2>$H[backtologin]";
print_end();
}
function send_fatal_error($err){
global $H, $I;
echo "<!DOCTYPE html><html><head>$H[meta_html]";
echo "<title>$I[fatalerror]</title>";
echo "<style type=\"text/css\">body{background-color:#000000;color:#FF0033;}</style>";
echo '</head><body>';
echo "<h2>$I[fatalerror]: $err</h2>";
print_end();
}
@ -2781,7 +2790,7 @@ function write_message($message){
global $db;
if(MSGENCRYPTED){
if(!extension_loaded('openssl')){
die($I['opensslextrequired']);
send_fatal_error($I['opensslextrequired']);
}
$message['text']=openssl_encrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456');
}
@ -2876,7 +2885,7 @@ function print_messages($delstatus=''){
while($message=$stmt->fetch(PDO::FETCH_ASSOC)){
if(MSGENCRYPTED){
if(!extension_loaded('openssl')){
die($I['opensslextrequired']);
send_fatal_error($I['opensslextrequired']);
}
$message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456');
}
@ -2913,7 +2922,7 @@ function print_messages($delstatus=''){
while($message=$stmt->fetch(PDO::FETCH_ASSOC)){
if(MSGENCRYPTED){
if(!extension_loaded('openssl')){
die($I['opensslextrequired']);
send_fatal_error($I['opensslextrequired']);
}
$message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456');
}
@ -3285,7 +3294,7 @@ function update_db(){
update_setting('dbversion', DBVERSION);
if(get_setting('msgencrypted')!=MSGENCRYPTED){
if(!extension_loaded('openssl')){
die($I['opensslextrequired']);
send_fatal_error($I['opensslextrequired']);
}
$result=$db->query('SELECT id, text FROM ' . PREFIX . 'messages;');
$stmt=$db->prepare('UPDATE ' . PREFIX . 'messages SET text=? WHERE id=?;');
@ -3344,17 +3353,17 @@ function check_db(){
try{
if(DBDRIVER===0){
if(!extension_loaded('pdo_mysql')){
die($I['pdo_mysqlextrequired']);
send_fatal_error($I['pdo_mysqlextrequired']);
}
$db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $options);
}elseif(DBDRIVER===1){
if(!extension_loaded('pdo_pgsql')){
die($I['pdo_pgsqlextrequired']);
send_fatal_error($I['pdo_pgsqlextrequired']);
}
$db=new PDO('pgsql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $options);
}else{
if(!extension_loaded('pdo_sqlite')){
die($I['pdo_sqliteextrequired']);
send_fatal_error($I['pdo_sqliteextrequired']);
}
$db=new PDO('sqlite:' . SQLITEDBFILE, NULL, NULL, $options);
}
@ -3366,7 +3375,7 @@ function check_db(){
if(false!==$db->exec('CREATE DATABASE ' . DBNAME)){
$db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $options);
}else{
die($I['nodbsetup']);
send_fatal_error($I['nodbsetup']);
}
}elseif(DBDRIVER===1){
@ -3374,20 +3383,20 @@ function check_db(){
if(false!==$db->exec('CREATE DATABASE ' . DBNAME)){
$db=new PDO('pgsql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $options);
}else{
die($I['nodbsetup']);
send_fatal_error($I['nodbsetup']);
}
}
}catch(PDOException $e){
if(isSet($_REQUEST['action']) && $_REQUEST['action']==='setup'){
die($I['nodbsetup']);
send_fatal_error($I['nodbsetup']);
}else{
die($I['nodb']);
send_fatal_error($I['nodb']);
}
}
}
if(MEMCACHED){
if(!extension_loaded('memcached')){
die($I['memcachedextrequired']);
send_fatal_error($I['memcachedextrequired']);
}
$memcached=new Memcached();
$memcached->addServer(MEMCACHEDHOST, MEMCACHEDPORT);

View File

@ -180,7 +180,7 @@ $T=array(
'choosecol' => 'Gast, such dir eine Farbe aus:',
'randomcol' => 'Zufällige Farbe',
'enter' => 'Chat beitreten',
'error' => 'Fehler:',
'error' => 'Fehler',
'members' => 'Mitglieder',
'guests' => 'Gäste',
'approveguests' => '%d neue Gäste zum Hereinlassen',
@ -327,6 +327,7 @@ $T=array(
'regpass' => 'Zum registrieren<br>Passwort wiederholen<br>(optional)',
'guestreg' => 'Gäste sich selbst registrieren lassen',
'asmember' => 'Als Mitglied',
'assuguest' => 'Als Anwerber'
'assuguest' => 'Als Anwerber',
'fatalerror' => 'Fataler Fehler'
);
?>

View File

@ -180,7 +180,7 @@ $I=array(
'choosecol' => 'Guests, choose a colour:',
'randomcol' => 'Random Colour',
'enter' => 'Enter Chat',
'error' => 'Error:',
'error' => 'Error',
'members' => 'Members',
'guests' => 'Guests',
'approveguests' => '%d new guests to approve',
@ -327,6 +327,7 @@ $I=array(
'regpass' => 'Repeat password<br>to register<br>(optional)',
'guestreg' => 'Let guests register themselves',
'asmember' => 'As member',
'assuguest' => 'As applicant'
'assuguest' => 'As applicant',
'fatalerror' => 'Fatal error'
);
?>

View File

@ -180,7 +180,7 @@ $T=array(
'choosecol' => 'Invitado, elegí un color:',
'randomcol' => 'Color al azar',
'enter' => 'Entrar a la sala',
'error' => 'Error:',
'error' => 'Error',
'members' => 'Miembros',
'guests' => 'Invitados',
'approveguests' => '%d nuevos invitados para aprobar',

View File

@ -180,7 +180,7 @@ $T=array(
'choosecol' => 'Invitado, elija un color:',
'randomcol' => 'Color al azar',
'enter' => 'Ingresar a la sala',
'error' => 'Error:',
'error' => 'Error',
'members' => 'Miembros',
'guests' => 'Invitados',
'approveguests' => '%d nuevos invitados para aprobar',

View File

@ -180,7 +180,7 @@ $T=array(
'choosecol' => 'Invité, choisir une couleur:',
'randomcol' => 'Couleur aléatoire',
'enter' => 'Entrer',
'error' => 'Erreur:',
'error' => 'Erreur',
'members' => 'Membres',
'guests' => 'Invités',
'approveguests' => '%d nouveaux invités à approuver',

View File

@ -180,7 +180,7 @@ $T=array(
'choosecol' => 'Silahkan pilih warna:',
'randomcol' => 'Warna acak',
'enter' => 'Masuk obrolan',
'error' => 'Kesalahan:',
'error' => 'Kesalahan',
'members' => 'Anggota',
'guests' => 'Tamu',
'approveguests' => '%d tamu baru untuk disetujui',

View File

@ -180,7 +180,7 @@ $T=array(
'choosecol' => 'Гости выбирают цвет:',
'randomcol' => 'Случайный цвет',
'enter' => 'Войти в чат',
'error' => 'Ошибка:',
'error' => 'Ошибка',
'members' => 'Зарегистрированные',
'guests' => 'Гости',
'approveguests' => '%d новые гости для одобрения',