Your host is proxying SSL on a completely different server, and not passing on any of the standard/recommended settings that denote that it's running in SSL.
They've not even set up their proxying smartly ... they're specifically proxying for the purposes of SSL, but they're not even bothering to set the HTTP_X_FORWARDED_SSL or HTTP_X_FORWARDED_PROTO values.
Here are two possible courses of action:
1. Edit /includes/init_includes/init_file_db_names.php
Code:
(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && (strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'ssl' || strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https')) ||
(isset($_SERVER['HTTP_X_FORWARDED_SERVER']) && strpos(strtolower($_SERVER['HTTP_X_FORWARDED_SERVER']), str_replace('https://', '', HTTPS_SERVER)) !== false) ||
(isset($_SERVER['HTTP_SSLSESSIONID']) && $_SERVER['HTTP_SSLSESSIONID'] != '') ||
In fact, you could add this change to the ssltest.php script first, and see what its output is. I'd like to know what you discover from it.
But you'd need to copy your define for HTTPS_SERVER from your configure.php onto the 2nd line of the ssltest.php file for it to give accurate results.
2. If that doesn't work, you might get around it by adding your specific host's forwarding address to the list of things checked:
(And, yes, you can test it in ssltest.php first ... if you have to use this second approach, please post the results from ssltest.php for further inspection.)
Code:
(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && (strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'ssl' || strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https')) ||
(isset($_SERVER['HTTP_X_FORWARDED_SERVER']) && $_SERVER['HTTP_X_FORWARDED_SERVER'] == 'secure30.prositehosting.co.uk') ||
(isset($_SERVER['HTTP_SSLSESSIONID']) && $_SERVER['HTTP_SSLSESSIONID'] != '') ||
NOTE TO FUTURE READERS OF THIS POST: This code suggestion is unique to this particular site setup, and would need to be adapted uniquely to your own specific setup if you were to try using it on your site.