You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
6.3 KiB
208 lines
6.3 KiB
<?php |
|
|
|
class ModelIp extends Model { |
|
|
|
public function exists($address) { |
|
|
|
try { |
|
|
|
$query = $this->db->prepare('SELECT `ipId` FROM `ip` WHERE `address` = ? LIMIT 1'); |
|
|
|
$query->execute([$address]); |
|
|
|
return $query->rowCount() ? $query->fetch()['ipId'] : false; |
|
|
|
} catch (PDOException $e) { |
|
trigger_error($e->getMessage()); |
|
return false; |
|
} |
|
} |
|
|
|
public function getIps() { |
|
|
|
try { |
|
|
|
$query = $this->db->prepare('SELECT `ipId`, `address` FROM `ip`'); |
|
|
|
$query->execute(); |
|
|
|
return $query->rowCount() ? $query->fetchAll() : []; |
|
|
|
} catch (PDOException $e) { |
|
trigger_error($e->getMessage()); |
|
return false; |
|
} |
|
} |
|
|
|
public function getIsOnlineIps() { |
|
|
|
try { |
|
|
|
$query = $this->db->prepare('SELECT `address` FROM `ip` WHERE `isOnline` = "1"'); |
|
|
|
$query->execute(); |
|
|
|
return $query->rowCount() ? $query->fetchAll() : []; |
|
|
|
} catch (PDOException $e) { |
|
trigger_error($e->getMessage()); |
|
return false; |
|
} |
|
} |
|
|
|
public function getIsOfflineIps() { |
|
|
|
try { |
|
|
|
$query = $this->db->prepare('SELECT `address` FROM `ip` WHERE `isOnline` = "0"'); |
|
|
|
$query->execute(); |
|
|
|
return $query->rowCount() ? $query->fetchAll() : []; |
|
|
|
} catch (PDOException $e) { |
|
trigger_error($e->getMessage()); |
|
return false; |
|
} |
|
} |
|
|
|
public function add($address, $port) { |
|
|
|
try { |
|
|
|
$query = $this->db->prepare('INSERT INTO `ip` SET `address` = ?, `port` = ?, `isOnline` = "0", `isTOR` = "0"'); |
|
|
|
$query->execute([$address, $port]); |
|
|
|
return $this->db->lastInsertId(); |
|
|
|
} catch (PDOException $e) { |
|
trigger_error($e->getMessage()); |
|
return false; |
|
} |
|
} |
|
|
|
public function addOnline($ipId, |
|
$startingHeight, |
|
$timeConnection, |
|
$timeLastSend, |
|
$timeLastReceive, |
|
$bytesSent, |
|
$bytesReceive, |
|
$banscore, |
|
$inbound, |
|
$version, |
|
$subVersion, |
|
$subVersionCRC32, |
|
$syncNode) { |
|
|
|
try { |
|
|
|
$query = $this->db->prepare('INSERT INTO `ipOnline` SET `ipId` = ?, |
|
`startingHeight` = ?, |
|
`timeConnection` = ?, |
|
`timeLastSend` = ?, |
|
`timeLastReceive` = ?, |
|
`bytesSent` = ?, |
|
`bytesReceive` = ?, |
|
`banscore` = ?, |
|
`inbound` = ?, |
|
`version` = ?, |
|
`subVersion` = ?, |
|
`subVersionCRC32` = CRC32(?), |
|
`syncNode` = ?, |
|
|
|
`timeAdded` = UNIX_TIMESTAMP()'); |
|
|
|
$query->execute([ $ipId, |
|
$startingHeight, |
|
$timeConnection, |
|
$timeLastSend, |
|
$timeLastReceive, |
|
$bytesSent, |
|
$bytesReceive, |
|
$banscore, |
|
$inbound, |
|
$version, |
|
$subVersion, |
|
$subVersionCRC32, |
|
$syncNode]); |
|
|
|
return $this->db->lastInsertId(); |
|
|
|
} catch (PDOException $e) { |
|
trigger_error($e->getMessage()); |
|
return false; |
|
} |
|
} |
|
|
|
public function updateGeoData($ipId, $countryCode, $city, $latitude, $longitude) { |
|
|
|
try { |
|
|
|
$query = $this->db->prepare('UPDATE `ip` SET `countryCode` = ?, |
|
`city` = ?, |
|
`latitude` = ?, |
|
`longitude` = ? |
|
|
|
WHERE `ipId` = ? |
|
LIMIT 1'); |
|
|
|
$query->execute([$countryCode, $city, $latitude, $longitude, $ipId]); |
|
|
|
return $query->rowCount(); |
|
|
|
} catch (PDOException $e) { |
|
trigger_error($e->getMessage()); |
|
return false; |
|
} |
|
} |
|
|
|
public function resetIsOnline() { |
|
|
|
try { |
|
|
|
$query = $this->db->prepare('UPDATE `ip` SET `isOnline` = "0"'); |
|
|
|
$query->execute(); |
|
|
|
return $query->rowCount(); |
|
|
|
} catch (PDOException $e) { |
|
trigger_error($e->getMessage()); |
|
return false; |
|
} |
|
} |
|
|
|
public function setIsOnline($ipId) { |
|
|
|
try { |
|
|
|
$query = $this->db->prepare('UPDATE `ip` SET `isOnline` = "1" WHERE `ipId` = ? LIMIT 1'); |
|
|
|
$query->execute([$ipId]); |
|
|
|
return $query->rowCount(); |
|
|
|
} catch (PDOException $e) { |
|
trigger_error($e->getMessage()); |
|
return false; |
|
} |
|
} |
|
|
|
public function setIsTOR($ipId) { |
|
|
|
try { |
|
|
|
$query = $this->db->prepare('UPDATE `ip` SET `isTOR` = "1" WHERE `ipId` = ? LIMIT 1'); |
|
|
|
$query->execute([$ipId]); |
|
|
|
return $query->rowCount(); |
|
|
|
} catch (PDOException $e) { |
|
trigger_error($e->getMessage()); |
|
return false; |
|
} |
|
} |
|
}
|
|
|