From 1579b16afdd263c866187f653f5658631cd93082 Mon Sep 17 00:00:00 2001 From: Julien VAUBOURG Date: Fri, 14 Nov 2014 20:44:38 +0100 Subject: [PATCH] Clean PHP exceptions --- sources/controller.php | 106 ++++++++++++++++++++--------------------- 1 file changed, 52 insertions(+), 54 deletions(-) diff --git a/sources/controller.php b/sources/controller.php index fb74079..ec0fccd 100644 --- a/sources/controller.php +++ b/sources/controller.php @@ -55,60 +55,58 @@ dispatch_put('/settings', function() { $ip6_net = empty($_POST['ip6_net']) ? 'none' : $_POST['ip6_net']; $ip6_addr = 'none'; - if(empty($_POST['server_name']) || empty($_POST['server_port']) || empty($_POST['server_proto'])) { - flash('error', T_('The Server Address, the Server Port and the Protocol cannot be empty.')); - goto redirect; - } - - if(!preg_match('/^\d+$/', $_POST['server_port'])) { - flash('error', T_('The Server Port must be only composed of digits.')); - goto redirect; - } - - if($_POST['server_proto'] != 'udp' && $_POST['server_proto'] != 'tcp') { - flash('error', T_('The Protocol must be "udp" or "tcp".')); - goto redirect; - } - - if(($_FILES['crt_client']['error'] == UPLOAD_ERR_OK && $_FILES['crt_client_key']['error'] != UPLOAD_ERR_OK && (!$crt_client_key_exists || $_POST['crt_client_key_delete'] == 1)) - || ($_FILES['crt_client_key']['error'] == UPLOAD_ERR_OK && $_FILES['crt_client']['error'] != UPLOAD_ERR_OK && (!$crt_client_exists || $_POST['crt_client_delete'] == 1))) { - - flash('error', T_('A Client Certificate is needed when you suggest a Key (or vice versa).')); - goto redirect; - } - - if(empty($_POST['login_user']) xor empty($_POST['login_passphrase'])) { - flash('error', T_('A Password is needed when you suggest a Username (or vice versa).')); - goto redirect; - } - - if($_FILES['crt_server_ca']['error'] != UPLOAD_ERR_OK && !$crt_server_ca_exists) { - flash('error', T_('You need a Server CA.')); - goto redirect; - } - - if(($_FILES['crt_client_key']['error'] != UPLOAD_ERR_OK && (!$crt_client_key_exists || $_POST['crt_client_key_delete'] == 1)) && empty($_POST['login_user'])) { - flash('error', T_('You need either a Client Certificate, either a Username (or both).')); - goto redirect; - } - - if($ip6_net != 'none') { - $ip6_net = ipv6_expanded($ip6_net); - - if(empty($ip6_net)) { - flash('error', T_('The IPv6 Delegated Prefix format looks bad.')); - goto redirect; + try { + if(empty($_POST['server_name']) || empty($_POST['server_port']) || empty($_POST['server_proto'])) { + throw new Exception(T_('The Server Address, the Server Port and the Protocol cannot be empty')); + } + + if(!preg_match('/^\d+$/', $_POST['server_port'])) { + throw new Exception(T_('The Server Port must be only composed of digits')); + } + + if($_POST['server_proto'] != 'udp' && $_POST['server_proto'] != 'tcp') { + throw new Exception(T_('The Protocol must be "udp" or "tcp"')); + } + + if(($_FILES['crt_client']['error'] == UPLOAD_ERR_OK && $_FILES['crt_client_key']['error'] != UPLOAD_ERR_OK && (!$crt_client_key_exists || $_POST['crt_client_key_delete'] == 1)) + || ($_FILES['crt_client_key']['error'] == UPLOAD_ERR_OK && $_FILES['crt_client']['error'] != UPLOAD_ERR_OK && (!$crt_client_exists || $_POST['crt_client_delete'] == 1))) { + + throw new Exception(T_('A Client Certificate is needed when you suggest a Key, or vice versa')); + } + + if(empty($_POST['login_user']) xor empty($_POST['login_passphrase'])) { + throw new Exception(T_('A Password is needed when you suggest a Username, or vice versa')); + } + + if($_FILES['crt_server_ca']['error'] != UPLOAD_ERR_OK && !$crt_server_ca_exists) { + throw new Exception(T_('You need a Server CA.')); + } + + if(($_FILES['crt_client_key']['error'] != UPLOAD_ERR_OK && (!$crt_client_key_exists || $_POST['crt_client_key_delete'] == 1)) && empty($_POST['login_user'])) { + throw new Exception(T_('You need either a Client Certificate, either a Username, or both')); + } + + if($ip6_net != 'none') { + $ip6_net = ipv6_expanded($ip6_net); + + if(empty($ip6_net)) { + throw new Exception(T_('The IPv6 Delegated Prefix format looks bad')); + } + + $ip6_blocs = explode(':', $ip6_net); + $ip6_addr = "${ip6_blocs[0]}:${ip6_blocs[1]}:${ip6_blocs[2]}:${ip6_blocs[3]}:${ip6_blocs[4]}:${ip6_blocs[5]}:${ip6_blocs[6]}:1"; + + $ip6_net = ipv6_compressed($ip6_net); + $ip6_addr = ipv6_compressed($ip6_addr); } - $ip6_blocs = explode(':', $ip6_net); - $ip6_addr = "${ip6_blocs[0]}:${ip6_blocs[1]}:${ip6_blocs[2]}:${ip6_blocs[3]}:${ip6_blocs[4]}:${ip6_blocs[5]}:${ip6_blocs[6]}:1"; - - $ip6_net = ipv6_compressed($ip6_net); - $ip6_addr = ipv6_compressed($ip6_addr); + } catch(Exception $e) { + flash('error', $e->getMessage().T_(' (configuration not updated).')); + goto redirect; } - + stop_service(); - + moulinette_set('server_name', $_POST['server_name']); moulinette_set('server_port', $_POST['server_port']); moulinette_set('server_proto', $_POST['server_proto']); @@ -116,23 +114,23 @@ dispatch_put('/settings', function() { moulinette_set('login_passphrase', $_POST['login_passphrase']); moulinette_set('ip6_net', $ip6_net); moulinette_set('ip6_addr', $ip6_addr); - + if($_FILES['crt_client']['error'] == UPLOAD_ERR_OK) { move_uploaded_file($_FILES['crt_client']['tmp_name'], '/etc/openvpn/keys/user.crt'); } elseif($_POST['crt_client_delete'] == 1) { unlink('/etc/openvpn/keys/user.crt'); } - + if($_FILES['crt_client_key']['error'] == UPLOAD_ERR_OK) { move_uploaded_file($_FILES['crt_client_key']['tmp_name'], '/etc/openvpn/keys/user.key'); } elseif($_POST['crt_client_key_delete'] == 1) { unlink('/etc/openvpn/keys/user.key'); } - + if($_FILES['crt_server_ca']['error'] == UPLOAD_ERR_OK) { move_uploaded_file($_FILES['crt_server_ca']['tmp_name'], '/etc/openvpn/keys/ca-server.crt'); } - + if(!empty($_POST['login_user'])) { file_put_contents('/etc/openvpn/keys/credentials', "${_POST['login_user']}\n${_POST['login_passphrase']}"); } else {