19 |
19 |
20 if ( isset($_POST['_cont']) ) |
20 if ( isset($_POST['_cont']) ) |
21 { |
21 { |
22 $allow_go = true; |
22 $allow_go = true; |
23 // Do we have everything? If so, continue with installation. |
23 // Do we have everything? If so, continue with installation. |
24 foreach ( array('db_host', 'db_name', 'db_user', 'db_pass') as $field ) |
24 foreach ( array('db_host', 'db_name', 'db_user', 'db_pass', 'db_port') as $field ) |
25 { |
25 { |
26 if ( empty($_POST[$field]) ) |
26 if ( empty($_POST[$field]) ) |
27 { |
27 { |
28 $allow_go = false; |
28 $allow_go = false; |
29 } |
29 } |
71 'mode' => 'error', |
71 'mode' => 'error', |
72 'error' => 'Exception in JSON decoder' |
72 'error' => 'Exception in JSON decoder' |
73 ))); |
73 ))); |
74 } |
74 } |
75 |
75 |
|
76 if ( !is_int($info['db_port']) ) |
|
77 { |
|
78 $return['host_good'] = false; |
|
79 echo enano_json_encode($return); |
|
80 exit; |
|
81 } |
|
82 |
|
83 $port = $info['db_port'] ? $info['db_port'] : 5432; |
|
84 |
76 // Try to connect as the normal user |
85 // Try to connect as the normal user |
77 // generate connection string |
86 // generate connection string |
78 $conn_string = "dbname = '" . addslashes($info['db_name']) . "' port = '5432' host = '" . addslashes($info['db_host']) . "' " . |
87 $conn_string = "dbname = '" . addslashes($info['db_name']) . "' port = '$port' host = '" . addslashes($info['db_host']) . "' " . |
79 "user= '" . addslashes($info['db_user']) . "' password = '" . addslashes($info['db_pass']) . "'"; |
88 "user= '" . addslashes($info['db_user']) . "' password = '" . addslashes($info['db_pass']) . "'"; |
80 $test = @pg_connect($conn_string); |
89 $test = @pg_connect($conn_string); |
81 if ( !$test ) |
90 if ( !$test ) |
82 { |
91 { |
83 // Connection as normal user failed. PgSQL doesn't give us an error string so |
92 // Connection as normal user failed. PgSQL doesn't give us an error string so |
84 // just try to connect as root. If even that fails, exit with an error |
93 // just try to connect as root. If even that fails, exit with an error |
85 $return['creating_user'] = true; |
94 $return['creating_user'] = true; |
86 if ( !empty($info['db_root_user']) && !empty($info['db_root_pass']) ) |
95 if ( !empty($info['db_root_user']) && !empty($info['db_root_pass']) ) |
87 { |
96 { |
88 $conn_string_root = "dbname = '" . addslashes($info['db_name']) . "' port = '5432' host = '" . addslashes($info['db_host']) . "' " . |
97 $conn_string_root = "dbname = '" . addslashes($info['db_name']) . "' port = '$port' host = '" . addslashes($info['db_host']) . "' " . |
89 "user= '" . addslashes($info['db_root_user']) . "' password = '" . addslashes($info['db_root_pass']) . "'"; |
98 "user= '" . addslashes($info['db_root_user']) . "' password = '" . addslashes($info['db_root_pass']) . "'"; |
90 // Attempt connection as root |
99 // Attempt connection as root |
91 $test_root = @pg_connect($conn_string_root); |
100 $test_root = @pg_connect($conn_string_root); |
92 if ( !$test_root ) |
101 if ( !$test_root ) |
93 { |
102 { |
179 } |
188 } |
180 var frm = document.forms.database_info; |
189 var frm = document.forms.database_info; |
181 // List of fields |
190 // List of fields |
182 var fields = { |
191 var fields = { |
183 db_host: frm.db_host, |
192 db_host: frm.db_host, |
|
193 db_port: frm.db_port, |
184 db_name: frm.db_name, |
194 db_name: frm.db_name, |
185 db_user: frm.db_user, |
195 db_user: frm.db_user, |
186 db_pass: frm.db_pass, |
196 db_pass: frm.db_pass, |
187 table_prefix: frm.table_prefix, |
197 table_prefix: frm.table_prefix, |
188 db_root_user: frm.db_root_user, |
198 db_root_user: frm.db_root_user, |
195 var matches = fields.db_host.value.match(/^([a-z0-9_-]+)((\.([a-z0-9_-]+))*)?$/); |
205 var matches = fields.db_host.value.match(/^([a-z0-9_-]+)((\.([a-z0-9_-]+))*)?$/); |
196 document.getElementById('s_db_host').src = ( matches ) ? img_neu : img_bad; |
206 document.getElementById('s_db_host').src = ( matches ) ? img_neu : img_bad; |
197 if ( !matches ) |
207 if ( !matches ) |
198 passed = false; |
208 passed = false; |
199 } |
209 } |
|
210 if ( field == fields.db_port || !field ) |
|
211 { |
|
212 var matches = fields.db_port.value.match(/^[0-9]+$/); |
|
213 document.getElementById('s_db_port').src = ( matches ) ? img_neu : img_bad; |
|
214 if ( !matches ) |
|
215 passed = false; |
|
216 } |
200 if ( field == fields.db_name || !field ) |
217 if ( field == fields.db_name || !field ) |
201 { |
218 { |
202 var matches = fields.db_name.value.match(/^[A-z0-9_-]+$/); |
219 var matches = fields.db_name.value.match(/^[A-z0-9_-]+$/); |
203 document.getElementById('s_db_name').src = ( matches ) ? img_neu : img_bad; |
220 document.getElementById('s_db_name').src = ( matches ) ? img_neu : img_bad; |
204 if ( !matches ) |
221 if ( !matches ) |
241 install_set_ajax_loading(); |
258 install_set_ajax_loading(); |
242 |
259 |
243 var frm = document.forms.database_info; |
260 var frm = document.forms.database_info; |
244 var connection_info = 'info=' + ajaxEscape(toJSONString({ |
261 var connection_info = 'info=' + ajaxEscape(toJSONString({ |
245 db_host: frm.db_host.value, |
262 db_host: frm.db_host.value, |
|
263 db_port: parseInt(frm.db_port.value), |
246 db_name: frm.db_name.value, |
264 db_name: frm.db_name.value, |
247 db_user: frm.db_user.value, |
265 db_user: frm.db_user.value, |
248 db_pass: frm.db_pass.value, |
266 db_pass: frm.db_pass.value, |
249 db_root_user: frm.db_root_user.value, |
267 db_root_user: frm.db_root_user.value, |
250 db_root_pass: frm.db_root_pass.value |
268 db_root_pass: frm.db_root_pass.value |
307 document.getElementById('e_db_host').innerHTML = $lang.get('dbpgsql_msg_err_connect', { db_host: frm.db_host.value, pg_error: response.last_error }); |
325 document.getElementById('e_db_host').innerHTML = $lang.get('dbpgsql_msg_err_connect', { db_host: frm.db_host.value, pg_error: response.last_error }); |
308 document.getElementById('s_db_host').src = img_bad; |
326 document.getElementById('s_db_host').src = img_bad; |
309 } |
327 } |
310 if ( !response.version.good ) |
328 if ( !response.version.good ) |
311 { |
329 { |
312 document.getElementById('e_pgsql_version').innerHTML = $lang.get('dbpgsql_msg_err_version', { pg_version: response.version.version }); |
330 if ( response.version.version == 'indeterminate' ) |
|
331 document.getElementById('e_pgsql_version').innerHTML = $lang.get('dbpgsql_msg_warn_pg_version'); |
|
332 else |
|
333 document.getElementById('e_pgsql_version').innerHTML = $lang.get('dbpgsql_msg_err_version', { pg_version: response.version.version }); |
313 document.getElementById('s_pgsql_version').src = img_bad; |
334 document.getElementById('s_pgsql_version').src = img_bad; |
314 } |
335 } |
315 } |
336 } |
316 } |
337 } |
317 }); |
338 }); |
338 <td> |
359 <td> |
339 <input onkeyup="verify(this);" tabindex="1" name="db_host" size="30" type="text" /> |
360 <input onkeyup="verify(this);" tabindex="1" name="db_host" size="30" type="text" /> |
340 </td> |
361 </td> |
341 <td> |
362 <td> |
342 <img id="s_db_host" alt="Good/bad icon" src="../images/checkbad.png" /> |
363 <img id="s_db_host" alt="Good/bad icon" src="../images/checkbad.png" /> |
|
364 </td> |
|
365 </tr> |
|
366 <tr> |
|
367 <td> |
|
368 <b><?php echo $lang->get('dbpgsql_field_port_title'); ?></b> |
|
369 <br /><?php echo $lang->get('dbpgsql_field_port_body'); ?> |
|
370 <br /><span style="color: #993300" id="e_db_port"></span> |
|
371 </td> |
|
372 <td> |
|
373 <input onkeyup="verify(this);" tabindex="2" name="db_port" size="5" type="text" value="5432" /> |
|
374 </td> |
|
375 <td> |
|
376 <img id="s_db_port" alt="Good/bad icon" src="../images/checkbad.png" /> |
343 </td> |
377 </td> |
344 </tr> |
378 </tr> |
345 <tr> |
379 <tr> |
346 <td> |
380 <td> |
347 <b><?php echo $lang->get('dbpgsql_field_dbname_title'); ?></b><br /> |
381 <b><?php echo $lang->get('dbpgsql_field_dbname_title'); ?></b><br /> |