function get_remote_IP ($socket) { $status = socket_getpeerinfo($socket, $result); if (!$status) return false; return $result; } function socket_accept_nbl ($listener, $blacklist) { $newsocket = socket_accept($listener); if ($newsocket === false) return false; $ip = get_remote_IP($newsocket); if (array_search($ip, $blacklist) !== false) { socket_close($newsocket); return false; } return $newsocket; }