add ip2int and int2ip functions to be able to store on pg IPV4 ip addresses
authorMatteo Nastasi (mop) <nastasi@alternativeoutput.it>
Thu, 3 Sep 2015 06:22:34 +0000 (08:22 +0200)
committerMatteo Nastasi (mop) <nastasi@alternativeoutput.it>
Wed, 16 Sep 2015 05:17:28 +0000 (07:17 +0200)
web/Obj/brisk.phh
web/Obj/dbase_pgsql.phh
webtest/test_db.php

index 6c18990..f221518 100644 (file)
@@ -345,6 +345,20 @@ $G_PG_cons_n = 345;
     /*     printf("\n"); */
     /* } */
 
+function ip2int($s)
+{
+    $v = ip2long($s);
+    if (PHP_INT_SIZE == 4)
+        return ($v);
+
+    return ( ($v & 0x80000000 ? 0xffffffff00000000 : 0x00) | $v );
+}
+
+function int2ip($i)
+{
+    return long2ip($i & 0xffffffff);
+}
+
 function nickserv_msg($dt, $msg) {
     return sprintf('chatt_sub("%s",[0x040003,"%s"],"%s");', $dt, NICKSERV, $msg);
 }
index 2b4467c..b882c63 100644 (file)
@@ -122,6 +122,11 @@ class BriskDB
         return ($res);
     }
 
+    function last_error()
+    {
+        return pg_last_error($this->dbconn->db);
+    }
+
     function users_load()
     {
     }
index a656631..8817058 100644 (file)
@@ -56,7 +56,7 @@ function main() {
         }
         succ("COMMIT");
 
-        $arr_ip = array("1.1.1.1", "127.0.0.1", "255.255.255.255", "255.255.0.0" );
+        $arr_ip = array("1.1.1.1", "127.0.0.1", "255.255.255.255", "255.255.0.0", "201.102.123.111", "5.9.11.13" );
 
         if ($bdb->query("DROP TABLE IF EXISTS test_ip;") == FALSE) {
             fail("DROP TABLE test_ip");
@@ -75,16 +75,15 @@ function main() {
         succ("CREATE TABLE test_ip");
 
         foreach ($arr_ip as $i) {
-            $v = $v_or = ip2long($i);
-            if (PHP_INT_SIZE == 8 && $v & 0x80000000)
-                $v = 0xffffffff00000000 | $v_or;
+            $v = ip2int($i);
 
-            if ($bdb->query(sprintf("INSERT INTO test_ip (ip, atime) VALUES (CAST(%d AS integer), '1999-01-08 04:05:06');",  $v)) == FALSE) {
+            $msg = sprintf("&nbsp;&nbsp;INSERT INTO test_ip [%s]  val: [%d (%x)]", $i, $v, $v);
+            if ($bdb->query(sprintf("INSERT INTO test_ip (ip, atime) VALUES (%d, '1999-01-08 04:05:06');", $v)) == FALSE) {
                 printf("%s<br>\n", $bdb->last_error());
-                fail("INSERT INTO test_ip ".$i."  V: ".$v."  V_or: ".$v_or);
+                fail($msg);
                 break;
             }
-            succ("INSERT INTO test_ip ".$i."  V: ".$v."  V_or: ".$v_or);
+            succ($msg);
         }
 
         if (($ip_pg = $bdb->query(sprintf("SELECT * FROM test_ip ORDER BY code;"))) == FALSE) {
@@ -97,18 +96,15 @@ function main() {
         for ($r = 0 ; $r < pg_numrows($ip_pg) ; $r++) {
             $ip_obj = pg_fetch_object($ip_pg, $r);
 
-            if (PHP_INT_SIZE == 8)
-                $v =  $ip_obj->ip & 0x00000000ffffffff;
-            else
-                $v = $ip_obj->ip;
+            $v = int2ip($ip_obj->ip);
 
-            if ($arr_ip[$r] != long2ip($v)) {
-                fail(sprintf("  Expected: %s, retrieved: %s", $arr_ip[$r], long2ip($v)));
+            if ($arr_ip[$r] != $v) {
+                fail(sprintf("&nbsp;&nbsp;Expected: %s, retrieved: %s", $arr_ip[$r], $v));
             }
             else {
-                succ(sprintf("  Expected: %s", $arr_ip[$r]));
+                succ(sprintf("&nbsp;&nbsp;Expected: %s", $arr_ip[$r]));
             }
-            // printf("RET IP: %d V: %d  IP: %s<br>\n", $ip_obj->ip, $v, long2ip($v));
+            // printf("RET IP: %d  IP: %s<br>\n", $ip_obj->ip, $v));
 
         }