| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?php
- error_reporting(E_ALL);
- class db extends mysqli {
- private $host = 'localhost';
- private $user = 'ban';
- private $pass = 'Blubb123-';
- private $db = 'ban';
- public function __construct() {
- @parent::__construct($this->host, $this->user, $this->pass, $this->db);
- if($this->connect_errno){
- die($this->connect_error);
- }
- $this->set_charset('utf8');
- }
- }
- class checkToken {
- private $db = null;
- public function __construct() {
- $this->db = new db();
- }
- private function getRole($token) {
- $dbAction = $this->db->prepare("SELECT role FROM clients WHERE token = ?");
- $dbAction->bind_param('s',$token);
- $dbAction->execute();
- $dbAction->store_result();
- $dbAction->bind_result($role);
- $dbAction->fetch();
- if ($dbAction->num_rows() == 1){
- return $role;
- }
- return false;
- }
- public function isAdmin($token) {
- if($this->getRole($token) == 'admin') {
- return true;
- }
- return false;
- }
- public function isClient($token) {
- if($this->getRole($token) == 'client') {
- return true;
- }
- return false;
- }
- }
- class action {
- use db;
- public function __construct() {
- $this->db = new db();
- }
- private function isListed($ip) {
- $dbAction = $this->db->prepare("SELECT ip FROM list WHERE ip = ?");
- $dbAction->bind_param('i',ip2long($ip));
- $dbAction->execute();
- $dbAction->store_result();
- if($dbAction->num_rows() == 0) {
- return false;
- }
- return true;
- }
- private function deListCount($ip) {
- $dbAction = $this->db->prepare("SELECT count FROM delist WHERE ip = ?");
- $dbAction->bind_param('i',ip2long($ip));
- $dbAction->execute();
- $dbAction->store_result();
- $dbAction->bind_result($count);
- $dbAction->fetch();
- return $count;
- }
- public function set($ip) {
- $dbAction = $this->db->prepare("INSERT IGNORE INTO list VALUES (?)");
- $dbAction->bind_param('i',ip2long($ip));
- return $dbAction->execute();
- }
- public function delist($ip) {
- if(!islisted($ip)) {
- return false;
- }
- //check delisting count
- if (delistCount($ip) > 3){
- echo "Fatal: ". $ip . " delisted to often!\n";
- return false;
- }
- //delist ip
- $dbAction = $this->db->prepare("DELETE FROM list WHERE ip = ?");
- $dbAction->bind_param('i',ip2long($ip));
- $dbAction->execute();
- //update delist count
- $dbAction = $this->db->prepare("INSERT INTO delist (ip) VALUES (?) ON DUPLICATE KEY UPDATE count = count + 1");
- $dbAction->bind_param('i',ip2long($ip));
- $dbAction->execute();
- return true;
- }
- }
- $ip = trim($_GET['ip']);
- $token = trim($_GET['token']);
- $action = trim($_GET['action']);
- switch($action) {
- case 'delist':
- if((new action)->delist($ip)){
- echo "$ip delisted\n";
- } else {
- echo "$ip not delisted\n";
- };
- break;
- case 'blacklist':
- break;
- case 'whitelist':
- break;
- default:
- if ((new checkToken)->isClient($token)){
- if((new action)->set($ip)){
- echo " inserted " . $ip ."\n";
- } else {
- echo " fehler\n";
- };
- } else {
- echo "Client token " . $token . " not registered\n";
- };
- }
|