Crawler toolkit for the twisterverse analytics
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.

177 lines
4.6 KiB

4 years ago
<?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) {
try {
$query = $this->db->prepare('INSERT INTO `ipOnline` SET `ipId` = ?,
`startingHeight` = ?,
`timeConnection` = ?,
`timeLastSend` = ?,
`timeLastReceive` = ?,
`timeAdded` = UNIX_TIMESTAMP()');
$query->execute([$ipId, $startingHeight, $timeConnection, $timeLastSend, $timeLastReceive]);
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;
}
}
}