= 3) { $version_int = $major*10000+$minor*100+$patch_level; } else if(sscanf($version, "%d.%d%s", $major, $minor, $patch_level) >= 3) { $version_int = $major*10000+$minor*100; } else { $version_int = 0; // returns 0 such that navicat able to handle the server version } $str .= GetBlock($version_int); echo $str; } function EchoResultSetHeader($errno, $affectrows, $insertid, $numfields, $numrows) { $str = GetLongBinary($errno); $str .= GetLongBinary($affectrows); $str .= GetLongBinary($insertid); $str .= GetLongBinary($numfields); $str .= GetLongBinary($numrows); $str .= GetDummy(12); echo $str; } function EchoFieldsHeader($res, $numfields) { $str = ""; for( $i = 0; $i < $numfields; $i++ ) { $str .= GetBlock(pg_field_name($res, $i)); $str .= GetBlock(""); $type = pg_field_type($res, $i); $length = pg_field_size($res, $i); switch ($type){ case "boolean": $type=16; break; case "bytea": $type=17; break; case "bit": $type=1560; break; case "varbit": $type=1562; break; case "char": $type=18; break; case "name": $type=19; break; case "int2vector": $type=22; break; case "oidvector": $type=30; break; case "int8": $type=20; break; case "tid": $type=27; break; case "int2": $type=21; break; case "int4": $type=23; break; case "oid": $type=26; break; case "xid": $type=28; break; case "cid": $type=29; break; case "text": $type=25; break; case "money": $type=790; break; case "numeric": $type=1700; break; case "point": $type=600; break; case "lseg": $type=601; break; case "path": $type=602; break; case "box": $type=603; break; case "polygon": $type=604; break; case "line": $type=628; break; case "circle": $type=718; break; case "float4": $type=700; break; case "float8": $type=701; break; case "abstime": $type=702; break; case "tinterval": $type=704; break; case "timestamp": $type=1114; break; case "timestamptz": $type=1184; break; case "interval": $type=1186; break; case "timetz": $type=1266; break; case "unknown": $type=705; break; case "macaddr": $type=829; break; case "inet": $type=869; break; case "cidr": $type=650; break; case "bpchar": $type=1042; break; case "varchar": $type=1043; break; case "date": $type=1082; break; case "time": $type=1083; break; case "regproc": $type=24; break; case "refcursor": $type=1790; break; case "regprocedure": $type=2202; break; case "regoper": $type=2203; break; case "regoperator": $type=2204; break; case "regclass": $type=2205; break; case "regtype": $type=2206; break; default: 0; } $str .= GetLongBinary($type); $str .= GetLongBinary(0); $str .= GetLongBinary($length); } echo $str; } function EchoData($res, $numfields, $numrows) { for ($i=0; $i < $numrows; $i++ ) { $str = ""; $row = pg_fetch_row( $res ); for ($j=0; $j < $numfields; $j++ ){ if( is_null($row[$j]) ) $str .= "\xFF"; else $str .= GetBlock($row[$j]); } echo $str; } } if (phpversion_int() < 40005) { EchoHeader(201); echo GetBlock("unsupported php version"); exit(); } if (phpversion_int() < 40010) { global $HTTP_POST_VARS; $_POST = &$HTTP_POST_VARS; } if (!isset($_POST["actn"]) || !isset($_POST["host"]) || !isset($_POST["port"]) || !isset($_POST["login"])) { $testMenu = $allowTestMenu; if (!$testMenu){ EchoHeader(202); echo GetBlock("invalid parameters"); exit(); } } if (!$testMenu){ if ($_POST["encodeBase64"] == '1') { for($i=0;$i 0) { echo GetBlock($error_c); } elseif ($_POST["actn"] == "C") { EchoConnInfo($conn); } elseif ($_POST["actn"] == "Q") { for ($i=0; $i < count($_POST["q"]); $i++) { $query = $_POST["q"][$i]; if ($query == "") continue; if (phpversion_int() < 50400){ if(get_magic_quotes_gpc()) $query = stripslashes($query); } $res = pg_query($conn,$query); $error = pg_last_error($conn); if ($error <> "") $errno = 1; else $errno = 0; $affectedrows = pg_affected_rows($res); $insertid = 0; $numfields = pg_num_fields($res); $numrows = pg_num_rows($res); EchoResultSetHeader($errno, $affectedrows, $insertid, $numfields, $numrows); if($errno > 0) echo GetBlock($error); else { if ($numfields > 0) { EchoFieldsHeader($res, $numfields); EchoData($res, $numfields, $numrows); } else echo GetBlock(""); } if ($i < (count($_POST["q"])-1)) echo "\x01"; else echo "\x00"; pg_free_result($res); } } exit(); } function doSystemTest() { function output($description, $succ, $resStr) { echo "$description$resStr[0]" : "class=\"TestFail\">$resStr[1]"; } output("PHP version >= 4.0.5", phpversion_int() >= 40005, array("Yes", "No")); output("pg_connect() available", function_exists("pg_connect"), array("Yes", "No")); if (phpversion_int() >= 40302 && substr($_SERVER["SERVER_SOFTWARE"], 0, 6) == "Apache" && function_exists("apache_get_modules")){ if (in_array("mod_security2", apache_get_modules())) output("Mod Security 2 installed", false, array("No", "Yes")); } } header("Content-Type: text/html"); ?> Navicat HTTP Tunnel Tester

Navicat™
The gateway to your database!

System Environment Test ">
PHP installed properlyNo

Server Test
Hostname/IP Address:
Port:
Initial Database:
Username:
Password:
Database File: