|
1 | 1 | <?php |
2 | 2 |
|
3 | 3 | require '/etc/phpmyadmin/config.secret.inc.php'; |
| 4 | +require '/etc/phpmyadmin/helpers.php'; |
4 | 5 |
|
5 | 6 | /* Ensure we got the environment */ |
6 | 7 | $vars = [ |
|
28 | 29 | 'PMA_UPLOADDIR', |
29 | 30 | 'PMA_SAVEDIR', |
30 | 31 | 'PMA_SSL', |
| 32 | + 'PMA_SSL_VERIFY', |
| 33 | + 'PMA_SSL_CA', |
| 34 | + 'PMA_SSL_KEY', |
| 35 | + 'PMA_SSL_CERT', |
31 | 36 | 'PMA_SSLS', |
| 37 | + 'PMA_SSL_VERIFIES', |
| 38 | + 'PMA_SSL_CAS', |
| 39 | + 'PMA_SSL_KEYS', |
| 40 | + 'PMA_SSL_CERTS', |
| 41 | + 'PMA_PMA_SSL_DIR' |
32 | 42 | ]; |
33 | 43 |
|
34 | 44 | foreach ($vars as $var) { |
|
55 | 65 | $cfg['PmaAbsoluteUri'] = trim($_ENV['PMA_ABSOLUTE_URI']); |
56 | 66 | } |
57 | 67 |
|
| 68 | +if (isset($_ENV['PMA_SSL_CA_BASE64'])) { |
| 69 | + if (!is_dir(PMA_SSL_DIR)) { |
| 70 | + mkdir(PMA_SSL_DIR, 0755, true); |
| 71 | + } |
| 72 | + file_put_contents(PMA_SSL_DIR . '/pma-ssl-ca.pem', base64_decode($_ENV['PMA_SSL_CA_BASE64'])); |
| 73 | + $_ENV['PMA_SSL_CA'] = PMA_SSL_DIR . '/pma-ssl-ca.pem'; |
| 74 | +} |
| 75 | + |
| 76 | +/* Decode and save the SSL key from base64 */ |
| 77 | +if (isset($_ENV['PMA_SSL_KEY_BASE64'])) { |
| 78 | + if (!is_dir(PMA_SSL_DIR)) { |
| 79 | + mkdir(PMA_SSL_DIR, 0755, true); |
| 80 | + } |
| 81 | + file_put_contents(PMA_SSL_DIR . '/pma-ssl-key.key', base64_decode($_ENV['PMA_SSL_KEY_BASE64'])); |
| 82 | + $_ENV['PMA_SSL_KEY'] = PMA_SSL_DIR . '/pma-ssl-key.key'; |
| 83 | +} |
| 84 | + |
| 85 | +/* Decode and save the SSL certificate from base64 */ |
| 86 | +if (isset($_ENV['PMA_SSL_CERT_BASE64'])) { |
| 87 | + if (!is_dir(PMA_SSL_DIR)) { |
| 88 | + mkdir(PMA_SSL_DIR, 0755, true); |
| 89 | + } |
| 90 | + file_put_contents(PMA_SSL_DIR . '/pma-ssl-cert.pem', base64_decode($_ENV['PMA_SSL_CERT_BASE64'])); |
| 91 | + $_ENV['PMA_SSL_CERT'] = PMA_SSL_DIR . '/pma-ssl-cert.pem'; |
| 92 | +} |
| 93 | + |
| 94 | +/* Decode and save multiple SSL CA certificates from base64 */ |
| 95 | +if (isset($_ENV['PMA_SSL_CAS_BASE64'])) { |
| 96 | + $_ENV['PMA_SSL_CAS'] = decodeAndSaveSslFiles($_ENV['PMA_SSL_CAS_BASE64'], 'CA', 'pem'); |
| 97 | +} |
| 98 | + |
| 99 | +/* Decode and save multiple SSL keys from base64 */ |
| 100 | +if (isset($_ENV['PMA_SSL_KEYS_BASE64'])) { |
| 101 | + $_ENV['PMA_SSL_KEYS'] = decodeAndSaveSslFiles($_ENV['PMA_SSL_KEYS_BASE64'], 'CERT', 'cert'); |
| 102 | +} |
| 103 | + |
| 104 | +/* Decode and save multiple SSL certificates from base64 */ |
| 105 | +if (isset($_ENV['PMA_SSL_CERTS_BASE64'])) { |
| 106 | + $_ENV['PMA_SSL_CERTS'] = decodeAndSaveSslFiles($_ENV['PMA_SSL_CERTS_BASE64'], 'KEY', 'key'); |
| 107 | +} |
| 108 | + |
58 | 109 | /* Figure out hosts */ |
59 | 110 |
|
60 | 111 | /* Fallback to default linked */ |
|
66 | 117 | $verbose = [$_ENV['PMA_VERBOSE']]; |
67 | 118 | $ports = [$_ENV['PMA_PORT']]; |
68 | 119 | $ssls = [$_ENV['PMA_SSL']]; |
| 120 | + $ssl_verifies = [$_ENV['PMA_SSL_VERIFY']]; |
| 121 | + $ssl_cas = [$_ENV['PMA_SSL_CA']]; |
| 122 | + $ssl_keys = [$_ENV['PMA_SSL_KEY']]; |
| 123 | + $ssl_certs = [$_ENV['PMA_SSL_CERT']]; |
69 | 124 | } elseif (! empty($_ENV['PMA_HOSTS'])) { |
70 | 125 | $hosts = array_map('trim', explode(',', $_ENV['PMA_HOSTS'])); |
71 | 126 | $verbose = array_map('trim', explode(',', $_ENV['PMA_VERBOSES'])); |
72 | 127 | $ports = array_map('trim', explode(',', $_ENV['PMA_PORTS'])); |
73 | 128 | $ssls = array_map('trim', explode(',', $_ENV['PMA_SSLS'])); |
| 129 | + $ssl_verifies = array_map('trim', explode(',', $_ENV['PMA_SSL_VERIFIES'])); |
| 130 | + $ssl_cas = array_map('trim', explode(',', $_ENV['PMA_SSL_CAS'])); |
| 131 | + $ssl_keys = array_map('trim', explode(',', $_ENV['PMA_SSL_KEYS'])); |
| 132 | + $ssl_certs = array_map('trim', explode(',', $_ENV['PMA_SSL_CERTS'])); |
74 | 133 | } |
75 | 134 |
|
76 | 135 | if (! empty($_ENV['PMA_SOCKET'])) { |
|
84 | 143 | if (isset($ssls[$i - 1]) && $ssls[$i - 1] === '1') { |
85 | 144 | $cfg['Servers'][$i]['ssl'] = $ssls[$i - 1]; |
86 | 145 | } |
| 146 | + if (isset($ssl_verifies[$i - 1]) && $ssl_verifies[$i - 1] === '1') { |
| 147 | + $cfg['Servers'][$i]['ssl_verify'] = $ssl_verifies[$i - 1]; |
| 148 | + } |
| 149 | + if (isset($ssl_cas[$i - 1])) { |
| 150 | + $cfg['Servers'][$i]['ssl_ca'] = $ssl_cas[$i - 1]; |
| 151 | + } |
| 152 | + if (isset($ssl_keys[$i - 1])) { |
| 153 | + $cfg['Servers'][$i]['ssl_key'] = $ssl_keys[$i - 1]; |
| 154 | + } |
| 155 | + if (isset($ssl_certs[$i - 1])) { |
| 156 | + $cfg['Servers'][$i]['ssl_cert'] = $ssl_certs[$i - 1]; |
| 157 | + } |
87 | 158 | $cfg['Servers'][$i]['host'] = $hosts[$i - 1]; |
88 | 159 | if (isset($verbose[$i - 1])) { |
89 | 160 | $cfg['Servers'][$i]['verbose'] = $verbose[$i - 1]; |
|
0 commit comments