Browse Source

Ticket #3847 - Don't store user's IP in track tables

AntonLV 4 years ago
parent
commit
d9265f0bb4

+ 2 - 2
inc/classes/BxDolScoreQuery.php

@@ -67,7 +67,7 @@ class BxDolScoreQuery extends BxDolObjectQuery
             $sWhereClause .= " AND `author_id` = :author_id";
         }
         else {
-            $aBindings['author_nip'] = ip2long($sAuthorIp);
+            $aBindings['author_nip'] = bx_get_ip_hash($sAuthorIp);
 
             $sWhereClause .= " AND `author_nip` = :author_nip";
         }
@@ -102,7 +102,7 @@ class BxDolScoreQuery extends BxDolObjectQuery
         if((int)$this->query("INSERT INTO `{$this->_sTableTrack}` SET " . $this->arrayToSQL(array(
             'object_id' => $iObjectId, 
             'author_id' => $iAuthorId, 
-            'author_nip' => ip2long($sAuthorIp), 
+            'author_nip' => bx_get_ip_hash($sAuthorIp), 
             'type' => $sType, 
             'date' => time()
         ))) > 0)

+ 1 - 1
inc/classes/BxDolViewQuery.php

@@ -51,7 +51,7 @@ class BxDolViewQuery extends BxDolObjectQuery
 
     public function doView($iObjectId, $iAuthorId, $sAuthorIp)
     {
-        $iAuthorNip = ip2long($sAuthorIp);
+        $iAuthorNip = bx_get_ip_hash($sAuthorIp);
 
         $aBindings = array(
             'object_id' => $iObjectId

+ 2 - 2
inc/classes/BxDolVoteQuery.php

@@ -45,7 +45,7 @@ class BxDolVoteQuery extends BxDolObjectQuery
             $sWhereClause .= " AND `author_id` = :author_id";
         }
         else {
-            $aBindings['author_nip'] = ip2long($sAuthorIp);
+            $aBindings['author_nip'] = bx_get_ip_hash($sAuthorIp);
 
             $sWhereClause .= " AND `author_nip` = :author_nip";
         }
@@ -85,7 +85,7 @@ class BxDolVoteQuery extends BxDolObjectQuery
             return $this->_deleteTrack($iObjectId, $iAuthorId);
 
         $iNow = time();
-        $iAuthorNip = ip2long($sAuthorIp);
+        $iAuthorNip = bx_get_ip_hash($sAuthorIp);
         $sQuery = $this->prepare("INSERT INTO `{$this->_sTableTrack}` SET `object_id` = ?, `author_id` = ?, `author_nip` = ?, `value` = ?, `date` = ?", $iObjectId, $iAuthorId, $iAuthorNip, $iValue, $iNow);
         if((int)$this->query($sQuery) > 0)
             return $this->lastId();

+ 1 - 1
inc/classes/BxDolVoteReactionsQuery.php

@@ -65,7 +65,7 @@ class BxDolVoteReactionsQuery extends BxDolVoteQuery
             return $this->_deleteTrack($iObjectId, $iAuthorId);
 
         $iNow = time();
-        $iAuthorNip = ip2long($sAuthorIp);
+        $iAuthorNip = bx_get_ip_hash($sAuthorIp);
         $sQuery = $this->prepare("INSERT INTO `{$this->_sTableTrack}` SET `object_id` = ?, `author_id` = ?, `author_nip` = ?, `reaction` = ?, `value` = ?, `date` = ?", $iObjectId, $iAuthorId, $iAuthorNip, $sReaction, $iValue, $iNow);
         if((int)$this->query($sQuery) > 0)
             return $this->lastId();

+ 5 - 0
inc/utils.inc.php

@@ -2174,6 +2174,11 @@ function bx_setcookie($sName, $sValue = "", $oExpiresOrOptions = 0, $sPath = 'au
     }
 }
 
+function bx_get_ip_hash($sIp)
+{
+    return sprintf("%u", crc32(crc32($sIp) + crc32(BX_DOL_SECRET)));
+}
+
 function is_private_ip ($sIp)
 {
     if (filter_var($sIp, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6) !== $sIp)

+ 1 - 1
modules/base/text/classes/BxBaseModTextModule.php

@@ -629,7 +629,7 @@ class BxBaseModTextModule extends BxBaseModGeneralModule implements iBxDolConten
     {
         if(empty($iAuthorId)) {
             $iAuthorId = bx_get_logged_profile_id();
-            $iAuthorIp = ip2long(getVisitorIP());
+            $iAuthorIp = bx_get_ip_hash(getVisitorIP());
         }
 
         return $this->_oDb->isPollPerformed($iObjectId, $iAuthorId, $iAuthorIp);

+ 1 - 1
modules/boonex/market/classes/BxMarketAlertsResponse.php

@@ -41,7 +41,7 @@ class BxMarketAlertsResponse extends BxBaseModTextAlertsResponse
     		return;
 
     	$oModule->_oDb->updateFile(array('downloads' => $aFile['downloads'] + 1), array('file_id' => $iFile));
-    	$oModule->_oDb->insertDownload($iFile, $oAlert->iSender, ip2long($oAlert->aExtras['profile_ip']));
+    	$oModule->_oDb->insertDownload($iFile, $oAlert->iSender, bx_get_ip_hash($oAlert->aExtras['profile_ip']));
     }
 
     protected function processBxMarketPhotosFileDeleted(&$oAlert)

+ 1 - 1
modules/boonex/polls/classes/BxPollsModule.php

@@ -203,7 +203,7 @@ class BxPollsModule extends BxBaseModTextModule
     {
         if(empty($iAuthorId)) {
             $iAuthorId = bx_get_logged_profile_id();
-            $iAuthorIp = ip2long(getVisitorIP());
+            $iAuthorIp = bx_get_ip_hash(getVisitorIP());
         }
 
         return $this->_oDb->isPerformed($iObjectId, $iAuthorId, $iAuthorIp);

+ 1 - 1
modules/boonex/timeline/classes/BxTimelineDb.php

@@ -102,7 +102,7 @@ class BxTimelineDb extends BxBaseModNotificationsDb
     public function insertRepostTrack($iEventId, $iAuthorId, $sAuthorIp, $iRepostedId)
     {
         $iNow = time();
-        $iAuthorNip = ip2long($sAuthorIp);
+        $iAuthorNip = bx_get_ip_hash($sAuthorIp);
         $sQuery = $this->prepare("INSERT INTO `{$this->_sTableRepostsTrack}` SET `event_id` = ?, `author_id` = ?, `author_nip` = ?, `reposted_id` = ?, `date` = ?", $iEventId, $iAuthorId, $iAuthorNip, $iRepostedId, $iNow);
         return (int)$this->query($sQuery) > 0;
     }

+ 1 - 1
template/scripts/BxBaseReport.php

@@ -279,7 +279,7 @@ class BxBaseReport extends BxDolReport
             return array('code' => 2, 'message' => $this->msgErrAllowedReport());
 
         $iAuthorId = $this->_getAuthorId();
-        $iAuthorNip = ip2long($this->_getAuthorIp());
+        $iAuthorNip = bx_get_ip_hash($this->_getAuthorIp());
 
         $iObjectId = $this->_iId;
         $iObjectAuthorId = $this->_oQuery->getObjectAuthorId($iObjectId);