|
2 | 2 |
|
3 | 3 | // Sourced from https://github.com/phpmyadmin/docker/blob/master/config.inc.php |
4 | 4 |
|
5 | | -require('/config/phpmyadmin/config.secret.inc.php'); |
| 5 | +require_once '/config/phpmyadmin/config.secret.inc.php'; |
| 6 | +require_once '/config/phpmyadmin/helpers.php'; |
6 | 7 |
|
7 | 8 | /* Ensure we got the environment */ |
8 | | -$vars = array( |
| 9 | +$vars = [ |
9 | 10 | 'PMA_ARBITRARY', |
10 | 11 | 'PMA_HOST', |
11 | 12 | 'PMA_HOSTS', |
|
26 | 27 | 'PMA_QUERYHISTORYDB', |
27 | 28 | 'PMA_QUERYHISTORYMAX', |
28 | 29 | 'MAX_EXECUTION_TIME', |
29 | | - 'MEMORY_LIMIT' |
30 | | -); |
| 30 | + 'MEMORY_LIMIT', |
| 31 | + 'PMA_UPLOADDIR', |
| 32 | + 'PMA_SAVEDIR', |
| 33 | + 'PMA_SSL', |
| 34 | + 'PMA_SSLS', |
| 35 | + 'PMA_SSL_DIR', |
| 36 | + 'PMA_SSL_VERIFY', |
| 37 | + 'PMA_SSL_VERIFIES', |
| 38 | + 'PMA_SSL_CA', |
| 39 | + 'PMA_SSL_CAS', |
| 40 | + 'PMA_SSL_CA_BASE64', |
| 41 | + 'PMA_SSL_CAS_BASE64', |
| 42 | + 'PMA_SSL_KEY', |
| 43 | + 'PMA_SSL_KEYS', |
| 44 | + 'PMA_SSL_KEY_BASE64', |
| 45 | + 'PMA_SSL_KEYS_BASE64', |
| 46 | + 'PMA_SSL_CERT', |
| 47 | + 'PMA_SSL_CERTS', |
| 48 | + 'PMA_SSL_CERT_BASE64', |
| 49 | + 'PMA_SSL_CERTS_BASE64', |
| 50 | +]; |
| 51 | + |
31 | 52 | foreach ($vars as $var) { |
32 | 53 | $env = getenv($var); |
33 | 54 | if (!isset($_ENV[$var]) && $env !== false) { |
34 | 55 | $_ENV[$var] = $env; |
35 | 56 | } |
36 | 57 | } |
| 58 | + |
| 59 | +if (! defined('PMA_SSL_DIR')) { |
| 60 | + define('PMA_SSL_DIR', $_ENV['PMA_SSL_DIR'] ?? '/config/phpmyadmin/ssl'); |
| 61 | +} |
| 62 | + |
37 | 63 | if (isset($_ENV['PMA_QUERYHISTORYDB'])) { |
38 | | - $cfg['QueryHistoryDB'] = boolval($_ENV['PMA_QUERYHISTORYDB']); |
| 64 | + $cfg['QueryHistoryDB'] = (bool) $_ENV['PMA_QUERYHISTORYDB']; |
39 | 65 | } |
40 | 66 |
|
41 | 67 | if (isset($_ENV['PMA_QUERYHISTORYMAX'])) { |
42 | | - $cfg['QueryHistoryMax'] = intval($_ENV['PMA_QUERYHISTORYMAX']); |
| 68 | + $cfg['QueryHistoryMax'] = (int) $_ENV['PMA_QUERYHISTORYMAX']; |
43 | 69 | } |
44 | 70 |
|
45 | 71 | /* Arbitrary server connection */ |
|
52 | 78 | $cfg['PmaAbsoluteUri'] = trim($_ENV['PMA_ABSOLUTE_URI']); |
53 | 79 | } |
54 | 80 |
|
| 81 | +if (isset($_ENV['PMA_SSL_CA_BASE64'])) { |
| 82 | + $_ENV['PMA_SSL_CA'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_CA_BASE64'], 'phpmyadmin-ssl-CA', 'pem', PMA_SSL_DIR); |
| 83 | +} |
| 84 | + |
| 85 | +/* Decode and save the SSL key from base64 */ |
| 86 | +if (isset($_ENV['PMA_SSL_KEY_BASE64'])) { |
| 87 | + $_ENV['PMA_SSL_KEY'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_KEY_BASE64'], 'phpmyadmin-ssl-CERT', 'cert', PMA_SSL_DIR); |
| 88 | +} |
| 89 | + |
| 90 | +/* Decode and save the SSL certificate from base64 */ |
| 91 | +if (isset($_ENV['PMA_SSL_CERT_BASE64'])) { |
| 92 | + $_ENV['PMA_SSL_CERT'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_CERT_BASE64'], 'phpmyadmin-ssl-CERT', 'cert', PMA_SSL_DIR); |
| 93 | +} |
| 94 | + |
| 95 | +/* Decode and save multiple SSL CA certificates from base64 */ |
| 96 | +if (isset($_ENV['PMA_SSL_CAS_BASE64'])) { |
| 97 | + $_ENV['PMA_SSL_CAS'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_CAS_BASE64'], 'phpmyadmin-ssl-CA', 'pem', PMA_SSL_DIR); |
| 98 | +} |
| 99 | + |
| 100 | +/* Decode and save multiple SSL keys from base64 */ |
| 101 | +if (isset($_ENV['PMA_SSL_KEYS_BASE64'])) { |
| 102 | + $_ENV['PMA_SSL_KEYS'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_KEYS_BASE64'], 'phpmyadmin-ssl-CERT', 'cert', PMA_SSL_DIR); |
| 103 | +} |
| 104 | + |
| 105 | +/* Decode and save multiple SSL certificates from base64 */ |
| 106 | +if (isset($_ENV['PMA_SSL_CERTS_BASE64'])) { |
| 107 | + $_ENV['PMA_SSL_CERTS'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_CERTS_BASE64'], 'phpmyadmin-ssl-KEY', 'key', PMA_SSL_DIR); |
| 108 | +} |
| 109 | + |
55 | 110 | /* Figure out hosts */ |
56 | 111 |
|
57 | 112 | /* Fallback to default linked */ |
58 | | -$hosts = array('db'); |
| 113 | +$hosts = ['db']; |
59 | 114 |
|
60 | 115 | /* Set by environment */ |
61 | | -if (!empty($_ENV['PMA_HOST'])) { |
62 | | - $hosts = array($_ENV['PMA_HOST']); |
63 | | - $verbose = array($_ENV['PMA_VERBOSE']); |
64 | | - $ports = array($_ENV['PMA_PORT']); |
65 | | -} elseif (!empty($_ENV['PMA_HOSTS'])) { |
| 116 | +if (! empty($_ENV['PMA_HOST'])) { |
| 117 | + $hosts = [$_ENV['PMA_HOST']]; |
| 118 | + $verbose = [$_ENV['PMA_VERBOSE']]; |
| 119 | + $ports = [$_ENV['PMA_PORT']]; |
| 120 | + $ssls = [$_ENV['PMA_SSL']]; |
| 121 | + $ssl_verifies = [$_ENV['PMA_SSL_VERIFY']]; |
| 122 | + $ssl_cas = [$_ENV['PMA_SSL_CA']]; |
| 123 | + $ssl_keys = [$_ENV['PMA_SSL_KEY']]; |
| 124 | + $ssl_certs = [$_ENV['PMA_SSL_CERT']]; |
| 125 | +} elseif (! empty($_ENV['PMA_HOSTS'])) { |
66 | 126 | $hosts = array_map('trim', explode(',', $_ENV['PMA_HOSTS'])); |
67 | 127 | $verbose = array_map('trim', explode(',', $_ENV['PMA_VERBOSES'])); |
68 | 128 | $ports = array_map('trim', explode(',', $_ENV['PMA_PORTS'])); |
| 129 | + $ssls = array_map('trim', explode(',', $_ENV['PMA_SSLS'])); |
| 130 | + $ssl_verifies = array_map('trim', explode(',', $_ENV['PMA_SSL_VERIFIES'])); |
| 131 | + $ssl_cas = array_map('trim', explode(',', $_ENV['PMA_SSL_CAS'])); |
| 132 | + $ssl_keys = array_map('trim', explode(',', $_ENV['PMA_SSL_KEYS'])); |
| 133 | + $ssl_certs = array_map('trim', explode(',', $_ENV['PMA_SSL_CERTS'])); |
69 | 134 | } |
70 | | -if (!empty($_ENV['PMA_SOCKET'])) { |
71 | | - $sockets = array($_ENV['PMA_SOCKET']); |
72 | | -} elseif (!empty($_ENV['PMA_SOCKETS'])) { |
| 135 | + |
| 136 | +if (! empty($_ENV['PMA_SOCKET'])) { |
| 137 | + $sockets = [$_ENV['PMA_SOCKET']]; |
| 138 | +} elseif (! empty($_ENV['PMA_SOCKETS'])) { |
73 | 139 | $sockets = explode(',', $_ENV['PMA_SOCKETS']); |
74 | 140 | } |
75 | 141 |
|
76 | 142 | /* Server settings */ |
77 | 143 | for ($i = 1; isset($hosts[$i - 1]); $i++) { |
| 144 | + if (isset($ssls[$i - 1]) && $ssls[$i - 1] === '1') { |
| 145 | + $cfg['Servers'][$i]['ssl'] = $ssls[$i - 1]; |
| 146 | + } |
| 147 | + if (isset($ssl_verifies[$i - 1]) && $ssl_verifies[$i - 1] === '1') { |
| 148 | + $cfg['Servers'][$i]['ssl_verify'] = $ssl_verifies[$i - 1]; |
| 149 | + } |
| 150 | + if (isset($ssl_cas[$i - 1])) { |
| 151 | + $cfg['Servers'][$i]['ssl_ca'] = $ssl_cas[$i - 1]; |
| 152 | + } |
| 153 | + if (isset($ssl_keys[$i - 1])) { |
| 154 | + $cfg['Servers'][$i]['ssl_key'] = $ssl_keys[$i - 1]; |
| 155 | + } |
| 156 | + if (isset($ssl_certs[$i - 1])) { |
| 157 | + $cfg['Servers'][$i]['ssl_cert'] = $ssl_certs[$i - 1]; |
| 158 | + } |
78 | 159 | $cfg['Servers'][$i]['host'] = $hosts[$i - 1]; |
79 | 160 | if (isset($verbose[$i - 1])) { |
80 | 161 | $cfg['Servers'][$i]['verbose'] = $verbose[$i - 1]; |
|
126 | 207 | $cfg['Servers'][$i]['compress'] = false; |
127 | 208 | $cfg['Servers'][$i]['AllowNoPassword'] = true; |
128 | 209 | } |
129 | | -for ($i = 1; isset($sockets[$i - 1]); $i++) { |
130 | | - $cfg['Servers'][$i]['socket'] = $sockets[$i - 1]; |
131 | | - $cfg['Servers'][$i]['host'] = 'localhost'; |
| 210 | +// Avoid overwriting the last server id $i, use another variable name |
| 211 | +for ($socketHostId = 1; isset($sockets[$socketHostId - 1]); $socketHostId++) { |
| 212 | + $cfg['Servers'][$socketHostId]['socket'] = $sockets[$socketHostId - 1]; |
| 213 | + $cfg['Servers'][$socketHostId]['host'] = 'localhost'; |
132 | 214 | } |
133 | 215 | /* |
134 | 216 | * Revert back to last configured server to make |
|
137 | 219 | $i--; |
138 | 220 |
|
139 | 221 | /* Uploads setup */ |
140 | | -$cfg['UploadDir'] = ''; |
141 | | -$cfg['SaveDir'] = ''; |
142 | | -$cfg['TempDir'] = '/tmp'; |
| 222 | +if (isset($_ENV['PMA_UPLOADDIR'])) { |
| 223 | + $cfg['UploadDir'] = $_ENV['PMA_UPLOADDIR']; |
| 224 | +} |
| 225 | + |
| 226 | +if (isset($_ENV['PMA_SAVEDIR'])) { |
| 227 | + $cfg['SaveDir'] = $_ENV['PMA_SAVEDIR']; |
| 228 | +} |
143 | 229 |
|
144 | 230 | if (isset($_ENV['MAX_EXECUTION_TIME'])) { |
145 | 231 | $cfg['ExecTimeLimit'] = $_ENV['MAX_EXECUTION_TIME']; |
|
151 | 237 |
|
152 | 238 | /* Include User Defined Settings Hook */ |
153 | 239 | if (file_exists('/config/phpmyadmin/config.user.inc.php')) { |
154 | | - include('/config/phpmyadmin/config.user.inc.php'); |
| 240 | + include '/config/phpmyadmin/config.user.inc.php'; |
| 241 | +} |
| 242 | + |
| 243 | +/* Support additional configurations */ |
| 244 | +if (is_dir('/config/phpmyadmin/conf.d/')) { |
| 245 | + foreach (glob('/config/phpmyadmin/conf.d/*.php') as $filename) { |
| 246 | + include $filename; |
| 247 | + } |
155 | 248 | } |
0 commit comments