-
Notifications
You must be signed in to change notification settings - Fork 4
/
inc.ssl.php
61 lines (57 loc) · 1.42 KB
/
inc.ssl.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
// By default it's supposed SSL is available and the app is accessible with HTTPS
//(isset($_GET['tryssl'])) ? $ssl = $_GET['tryssl'] : $ssl = true;
$ssl = true;
// Set error handler due to multiple possible erros (Exceptions, Throwables, ...)
set_error_handler
(
function($errno, $errstr, $errfile, $errline )
{
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
);
// Check if SSL is available on this server
try
{
if(!extension_loaded('openssl'))
{
throw new Exception('This app needs the Open SSL PHP extension. Continue with HTTP.');
}
}
catch(Exception $e)
{
// It's not available
//echo $e->getMessage() . '<br />';
$ssl = false;
}
// If OpenSSL is installed
if($ssl)
{
$protocol = 'https';
$url = HELPER::setURL($protocol);
// Test if this app is available via https
try
{
$code = HELPER::getHTTPStatusCode($url); // last status code
}
catch(ErrorException $e)
{
// Something went wrong - no SSL available
$code = 0;
$ssl = false;
}
if($code !== 200)
{
//echo 'No encrypted connection with HTTPS available, continue with HTTP.<br />';
$protocol = 'http';
}
}
// If all checks were passed
if($ssl)
{
// Set additional parameters
$params = array('sslokay' => $ssl);
// Redirect to new address
//header("Location: " . HELPER::setURL($protocol, '', $params));
header("Location: " . HELPER::setURL($protocol));
}