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 Add fallback option for moderator approval
Fix guestaccess selection in setup Fix guestaccess selection in setup
Add option to let guests register themselves Add option to let guests register themselves
Add better fatal error handling
Version 1.15.3 - Mar. 6, 2016 Version 1.15.3 - Mar. 6, 2016
Allow using html tags in linkfilter without breaking dereferrer or image embed 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); send_messages(true);
}elseif($_REQUEST['action']==='jsrefresh'){ }elseif($_REQUEST['action']==='jsrefresh'){
if(!extension_loaded('json')){ if(!extension_loaded('json')){
die($I['jsonextrequired']); send_fatal_error($I['jsonextrequired']);
} }
check_session(); check_session();
ob_start(); ob_start();
@ -271,7 +271,6 @@ if(!isSet($_REQUEST['action'])){
}else{ }else{
send_login(); send_login();
} }
exit;
// html output subs // html output subs
function print_stylesheet(){ function print_stylesheet(){
@ -1305,7 +1304,7 @@ function send_notes($type){
if(isset($_REQUEST['text'])){ if(isset($_REQUEST['text'])){
if(MSGENCRYPTED){ if(MSGENCRYPTED){
if(!extension_loaded('openssl')){ if(!extension_loaded('openssl')){
die($I['opensslextrequired']); send_fatal_error($I['opensslextrequired']);
} }
$_REQUEST['text']=openssl_encrypt($_REQUEST['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $_REQUEST['text']=openssl_encrypt($_REQUEST['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456');
} }
@ -1339,7 +1338,7 @@ function send_notes($type){
} }
if(MSGENCRYPTED){ if(MSGENCRYPTED){
if(!extension_loaded('openssl')){ if(!extension_loaded('openssl')){
die($I['opensslextrequired']); send_fatal_error($I['opensslextrequired']);
} }
$note['text']=openssl_decrypt($note['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $note['text']=openssl_decrypt($note['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456');
} }
@ -1857,7 +1856,17 @@ function send_login(){
function send_error($err){ function send_error($err){
global $H, $I; global $H, $I;
print_start('error'); 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(); print_end();
} }
@ -2781,7 +2790,7 @@ function write_message($message){
global $db; global $db;
if(MSGENCRYPTED){ if(MSGENCRYPTED){
if(!extension_loaded('openssl')){ if(!extension_loaded('openssl')){
die($I['opensslextrequired']); send_fatal_error($I['opensslextrequired']);
} }
$message['text']=openssl_encrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $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)){ while($message=$stmt->fetch(PDO::FETCH_ASSOC)){
if(MSGENCRYPTED){ if(MSGENCRYPTED){
if(!extension_loaded('openssl')){ if(!extension_loaded('openssl')){
die($I['opensslextrequired']); send_fatal_error($I['opensslextrequired']);
} }
$message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $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)){ while($message=$stmt->fetch(PDO::FETCH_ASSOC)){
if(MSGENCRYPTED){ if(MSGENCRYPTED){
if(!extension_loaded('openssl')){ if(!extension_loaded('openssl')){
die($I['opensslextrequired']); send_fatal_error($I['opensslextrequired']);
} }
$message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456');
} }
@ -3285,7 +3294,7 @@ function update_db(){
update_setting('dbversion', DBVERSION); update_setting('dbversion', DBVERSION);
if(get_setting('msgencrypted')!=MSGENCRYPTED){ if(get_setting('msgencrypted')!=MSGENCRYPTED){
if(!extension_loaded('openssl')){ if(!extension_loaded('openssl')){
die($I['opensslextrequired']); send_fatal_error($I['opensslextrequired']);
} }
$result=$db->query('SELECT id, text FROM ' . PREFIX . 'messages;'); $result=$db->query('SELECT id, text FROM ' . PREFIX . 'messages;');
$stmt=$db->prepare('UPDATE ' . PREFIX . 'messages SET text=? WHERE id=?;'); $stmt=$db->prepare('UPDATE ' . PREFIX . 'messages SET text=? WHERE id=?;');
@ -3344,17 +3353,17 @@ function check_db(){
try{ try{
if(DBDRIVER===0){ if(DBDRIVER===0){
if(!extension_loaded('pdo_mysql')){ 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); $db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $options);
}elseif(DBDRIVER===1){ }elseif(DBDRIVER===1){
if(!extension_loaded('pdo_pgsql')){ 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); $db=new PDO('pgsql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $options);
}else{ }else{
if(!extension_loaded('pdo_sqlite')){ if(!extension_loaded('pdo_sqlite')){
die($I['pdo_sqliteextrequired']); send_fatal_error($I['pdo_sqliteextrequired']);
} }
$db=new PDO('sqlite:' . SQLITEDBFILE, NULL, NULL, $options); $db=new PDO('sqlite:' . SQLITEDBFILE, NULL, NULL, $options);
} }
@ -3366,7 +3375,7 @@ function check_db(){
if(false!==$db->exec('CREATE DATABASE ' . DBNAME)){ if(false!==$db->exec('CREATE DATABASE ' . DBNAME)){
$db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $options); $db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $options);
}else{ }else{
die($I['nodbsetup']); send_fatal_error($I['nodbsetup']);
} }
}elseif(DBDRIVER===1){ }elseif(DBDRIVER===1){
@ -3374,20 +3383,20 @@ function check_db(){
if(false!==$db->exec('CREATE DATABASE ' . DBNAME)){ if(false!==$db->exec('CREATE DATABASE ' . DBNAME)){
$db=new PDO('pgsql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $options); $db=new PDO('pgsql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $options);
}else{ }else{
die($I['nodbsetup']); send_fatal_error($I['nodbsetup']);
} }
} }
}catch(PDOException $e){ }catch(PDOException $e){
if(isSet($_REQUEST['action']) && $_REQUEST['action']==='setup'){ if(isSet($_REQUEST['action']) && $_REQUEST['action']==='setup'){
die($I['nodbsetup']); send_fatal_error($I['nodbsetup']);
}else{ }else{
die($I['nodb']); send_fatal_error($I['nodb']);
} }
} }
} }
if(MEMCACHED){ if(MEMCACHED){
if(!extension_loaded('memcached')){ if(!extension_loaded('memcached')){
die($I['memcachedextrequired']); send_fatal_error($I['memcachedextrequired']);
} }
$memcached=new Memcached(); $memcached=new Memcached();
$memcached->addServer(MEMCACHEDHOST, MEMCACHEDPORT); $memcached->addServer(MEMCACHEDHOST, MEMCACHEDPORT);

View File

@ -180,7 +180,7 @@ $T=array(
'choosecol' => 'Gast, such dir eine Farbe aus:', 'choosecol' => 'Gast, such dir eine Farbe aus:',
'randomcol' => 'Zufällige Farbe', 'randomcol' => 'Zufällige Farbe',
'enter' => 'Chat beitreten', 'enter' => 'Chat beitreten',
'error' => 'Fehler:', 'error' => 'Fehler',
'members' => 'Mitglieder', 'members' => 'Mitglieder',
'guests' => 'Gäste', 'guests' => 'Gäste',
'approveguests' => '%d neue Gäste zum Hereinlassen', 'approveguests' => '%d neue Gäste zum Hereinlassen',
@ -327,6 +327,7 @@ $T=array(
'regpass' => 'Zum registrieren<br>Passwort wiederholen<br>(optional)', 'regpass' => 'Zum registrieren<br>Passwort wiederholen<br>(optional)',
'guestreg' => 'Gäste sich selbst registrieren lassen', 'guestreg' => 'Gäste sich selbst registrieren lassen',
'asmember' => 'Als Mitglied', '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:', 'choosecol' => 'Guests, choose a colour:',
'randomcol' => 'Random Colour', 'randomcol' => 'Random Colour',
'enter' => 'Enter Chat', 'enter' => 'Enter Chat',
'error' => 'Error:', 'error' => 'Error',
'members' => 'Members', 'members' => 'Members',
'guests' => 'Guests', 'guests' => 'Guests',
'approveguests' => '%d new guests to approve', 'approveguests' => '%d new guests to approve',
@ -327,6 +327,7 @@ $I=array(
'regpass' => 'Repeat password<br>to register<br>(optional)', 'regpass' => 'Repeat password<br>to register<br>(optional)',
'guestreg' => 'Let guests register themselves', 'guestreg' => 'Let guests register themselves',
'asmember' => 'As member', '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:', 'choosecol' => 'Invitado, elegí un color:',
'randomcol' => 'Color al azar', 'randomcol' => 'Color al azar',
'enter' => 'Entrar a la sala', 'enter' => 'Entrar a la sala',
'error' => 'Error:', 'error' => 'Error',
'members' => 'Miembros', 'members' => 'Miembros',
'guests' => 'Invitados', 'guests' => 'Invitados',
'approveguests' => '%d nuevos invitados para aprobar', 'approveguests' => '%d nuevos invitados para aprobar',

View File

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

View File

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

View File

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

View File

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