mirror of
https://github.com/getnamingo/registry.git
synced 2025-06-25 21:54:46 +02:00
DAS and WHOIS update to use Monolog
This commit is contained in:
parent
0a4057f812
commit
0ecd7023d4
6 changed files with 261 additions and 87 deletions
5
das/composer.json
Normal file
5
das/composer.json
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"require": {
|
||||||
|
"monolog/monolog": "^3.5"
|
||||||
|
}
|
||||||
|
}
|
42
das/helpers.php
Normal file
42
das/helpers.php
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use Monolog\Logger;
|
||||||
|
use Monolog\Handler\StreamHandler;
|
||||||
|
use Monolog\Handler\RotatingFileHandler;
|
||||||
|
use Monolog\Formatter\LineFormatter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets up and returns a Logger instance.
|
||||||
|
*
|
||||||
|
* @param string $logFilePath Full path to the log file.
|
||||||
|
* @param string $channelName Name of the log channel (optional).
|
||||||
|
* @return Logger
|
||||||
|
*/
|
||||||
|
function setupLogger($logFilePath, $channelName = 'app') {
|
||||||
|
// Create a log channel
|
||||||
|
$log = new Logger($channelName);
|
||||||
|
|
||||||
|
// Set up the console handler
|
||||||
|
$consoleHandler = new StreamHandler('php://stdout', Logger::DEBUG);
|
||||||
|
$consoleFormatter = new LineFormatter(
|
||||||
|
"[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n",
|
||||||
|
"Y-m-d H:i:s.u", // Date format
|
||||||
|
true, // Allow inline line breaks
|
||||||
|
true // Ignore empty context and extra
|
||||||
|
);
|
||||||
|
$consoleHandler->setFormatter($consoleFormatter);
|
||||||
|
$log->pushHandler($consoleHandler);
|
||||||
|
|
||||||
|
// Set up the file handler
|
||||||
|
$fileHandler = new RotatingFileHandler($logFilePath, 0, Logger::DEBUG);
|
||||||
|
$fileFormatter = new LineFormatter(
|
||||||
|
"[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n",
|
||||||
|
"Y-m-d H:i:s.u" // Date format
|
||||||
|
);
|
||||||
|
$fileHandler->setFormatter($fileFormatter);
|
||||||
|
$log->pushHandler($fileHandler);
|
||||||
|
|
||||||
|
return $log;
|
||||||
|
}
|
|
@ -4,18 +4,22 @@ if (!extension_loaded('swoole')) {
|
||||||
die('Swoole extension must be installed');
|
die('Swoole extension must be installed');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require_once 'helpers.php';
|
||||||
|
$logFilePath = '/var/log/namingo/das.log';
|
||||||
|
$log = setupLogger($logFilePath, 'DAS');
|
||||||
|
|
||||||
// Create a Swoole TCP server
|
// Create a Swoole TCP server
|
||||||
$server = new Swoole\Server('0.0.0.0', 1043);
|
$server = new Swoole\Server('0.0.0.0', 1043);
|
||||||
$server->set([
|
$server->set([
|
||||||
'daemonize' => false,
|
'daemonize' => false,
|
||||||
'log_file' => '/var/log/namingo/das.log',
|
'log_file' => '/var/log/namingo/das_application.log',
|
||||||
'log_level' => SWOOLE_LOG_INFO,
|
'log_level' => SWOOLE_LOG_INFO,
|
||||||
'worker_num' => swoole_cpu_num() * 2,
|
'worker_num' => swoole_cpu_num() * 2,
|
||||||
'pid_file' => '/var/run/das.pid',
|
'pid_file' => '/var/run/das.pid',
|
||||||
'max_request' => 1000,
|
'max_request' => 1000,
|
||||||
'dispatch_mode' => 2,
|
'dispatch_mode' => 2,
|
||||||
'open_tcp_nodelay' => true,
|
'open_tcp_nodelay' => true,
|
||||||
'max_conn' => 10000,
|
'max_conn' => 1024,
|
||||||
'heartbeat_check_interval' => 60,
|
'heartbeat_check_interval' => 60,
|
||||||
'heartbeat_idle_time' => 120,
|
'heartbeat_idle_time' => 120,
|
||||||
'buffer_output_size' => 2 * 1024 * 1024, // 2MB
|
'buffer_output_size' => 2 * 1024 * 1024, // 2MB
|
||||||
|
@ -24,6 +28,7 @@ $server->set([
|
||||||
'open_eof_check' => true,
|
'open_eof_check' => true,
|
||||||
'package_eof' => "\r\n"
|
'package_eof' => "\r\n"
|
||||||
]);
|
]);
|
||||||
|
$log->info('server started.');
|
||||||
|
|
||||||
// Connect to the database
|
// Connect to the database
|
||||||
try {
|
try {
|
||||||
|
@ -31,17 +36,18 @@ try {
|
||||||
$pdo = new PDO("{$c['db_type']}:host={$c['db_host']};dbname={$c['db_database']}", $c['db_username'], $c['db_password']);
|
$pdo = new PDO("{$c['db_type']}:host={$c['db_host']};dbname={$c['db_database']}", $c['db_username'], $c['db_password']);
|
||||||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
$server->send($fd, "Error connecting to database");
|
$server->send($fd, "Error connecting to database");
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register a callback to handle incoming connections
|
// Register a callback to handle incoming connections
|
||||||
$server->on('connect', function ($server, $fd) {
|
$server->on('connect', function ($server, $fd) use ($log) {
|
||||||
echo "Client connected: {$fd}\r\n";
|
$log->info('new client connected: ' . $fd);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Register a callback to handle incoming requests
|
// Register a callback to handle incoming requests
|
||||||
$server->on('receive', function ($server, $fd, $reactorId, $data) use ($c, $pdo) {
|
$server->on('receive', function ($server, $fd, $reactorId, $data) use ($c, $pdo, $log) {
|
||||||
|
|
||||||
// Validate and sanitize the domain name
|
// Validate and sanitize the domain name
|
||||||
$domain = trim($data);
|
$domain = trim($data);
|
||||||
|
@ -115,33 +121,26 @@ $server->on('receive', function ($server, $fd, $reactorId, $data) use ($c, $pdo)
|
||||||
if ($f = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
if ($f = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||||
$server->send($fd, "1");
|
$server->send($fd, "1");
|
||||||
|
|
||||||
if ($fp = @fopen("/var/log/das/das_request.log",'a')) {
|
|
||||||
$clientInfo = $server->getClientInfo($fd);
|
$clientInfo = $server->getClientInfo($fd);
|
||||||
$remoteAddr = $clientInfo['remote_ip'];
|
$remoteAddr = $clientInfo['remote_ip'];
|
||||||
$currentDateTime = new DateTime();
|
$log->notice('new request from ' . $remoteAddr . ' | ' . $domain . ' | FOUND');
|
||||||
$milliseconds = $currentDateTime->format("v");
|
|
||||||
$timestampWithMilliseconds = $currentDateTime->format("Y-m-d H:i:s") . '.' . $milliseconds;
|
|
||||||
fwrite($fp, $timestampWithMilliseconds . "\t-\t" . $remoteAddr . "\t-\t" . $domain . "\n");
|
|
||||||
fclose($fp);
|
|
||||||
}
|
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
} else {
|
} else {
|
||||||
$server->send($fd, "0");
|
$server->send($fd, "0");
|
||||||
|
|
||||||
if ($fp = @fopen("/var/log/das/das_not_found.log",'a')) {
|
|
||||||
$clientInfo = $server->getClientInfo($fd);
|
$clientInfo = $server->getClientInfo($fd);
|
||||||
$remoteAddr = $clientInfo['remote_ip'];
|
$remoteAddr = $clientInfo['remote_ip'];
|
||||||
$currentDateTime = new DateTime();
|
$log->notice('new request from ' . $remoteAddr . ' | ' . $domain . ' | NOT FOUND');
|
||||||
$milliseconds = $currentDateTime->format("v");
|
|
||||||
$timestampWithMilliseconds = $currentDateTime->format("Y-m-d H:i:s") . '.' . $milliseconds;
|
|
||||||
fwrite($fp, $timestampWithMilliseconds . "\t-\t" . $remoteAddr . "\t-\t" . $domain . "\n");
|
|
||||||
fclose($fp);
|
|
||||||
}
|
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
$server->send($fd, "Error connecting to the das database");
|
$server->send($fd, "Error connecting to the das database");
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
$log->error('Error: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "General error");
|
||||||
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close the connection
|
// Close the connection
|
||||||
|
@ -149,8 +148,8 @@ $server->on('receive', function ($server, $fd, $reactorId, $data) use ($c, $pdo)
|
||||||
});
|
});
|
||||||
|
|
||||||
// Register a callback to handle client disconnections
|
// Register a callback to handle client disconnections
|
||||||
$server->on('close', function ($server, $fd) {
|
$server->on('close', function ($server, $fd) use ($log) {
|
||||||
echo "Client disconnected: {$fd}\r\n";
|
$log->info('client ' . $fd . ' connected.');
|
||||||
});
|
});
|
||||||
|
|
||||||
// Start the server
|
// Start the server
|
||||||
|
|
5
whois/port43/composer.json
Normal file
5
whois/port43/composer.json
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"require": {
|
||||||
|
"monolog/monolog": "^3.5"
|
||||||
|
}
|
||||||
|
}
|
42
whois/port43/helpers.php
Normal file
42
whois/port43/helpers.php
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use Monolog\Logger;
|
||||||
|
use Monolog\Handler\StreamHandler;
|
||||||
|
use Monolog\Handler\RotatingFileHandler;
|
||||||
|
use Monolog\Formatter\LineFormatter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets up and returns a Logger instance.
|
||||||
|
*
|
||||||
|
* @param string $logFilePath Full path to the log file.
|
||||||
|
* @param string $channelName Name of the log channel (optional).
|
||||||
|
* @return Logger
|
||||||
|
*/
|
||||||
|
function setupLogger($logFilePath, $channelName = 'app') {
|
||||||
|
// Create a log channel
|
||||||
|
$log = new Logger($channelName);
|
||||||
|
|
||||||
|
// Set up the console handler
|
||||||
|
$consoleHandler = new StreamHandler('php://stdout', Logger::DEBUG);
|
||||||
|
$consoleFormatter = new LineFormatter(
|
||||||
|
"[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n",
|
||||||
|
"Y-m-d H:i:s.u", // Date format
|
||||||
|
true, // Allow inline line breaks
|
||||||
|
true // Ignore empty context and extra
|
||||||
|
);
|
||||||
|
$consoleHandler->setFormatter($consoleFormatter);
|
||||||
|
$log->pushHandler($consoleHandler);
|
||||||
|
|
||||||
|
// Set up the file handler
|
||||||
|
$fileHandler = new RotatingFileHandler($logFilePath, 0, Logger::DEBUG);
|
||||||
|
$fileFormatter = new LineFormatter(
|
||||||
|
"[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n",
|
||||||
|
"Y-m-d H:i:s.u" // Date format
|
||||||
|
);
|
||||||
|
$fileHandler->setFormatter($fileFormatter);
|
||||||
|
$log->pushHandler($fileHandler);
|
||||||
|
|
||||||
|
return $log;
|
||||||
|
}
|
|
@ -4,18 +4,22 @@ if (!extension_loaded('swoole')) {
|
||||||
die('Swoole extension must be installed');
|
die('Swoole extension must be installed');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require_once 'helpers.php';
|
||||||
|
$logFilePath = '/var/log/namingo/whois.log';
|
||||||
|
$log = setupLogger($logFilePath, 'WHOIS');
|
||||||
|
|
||||||
// Create a Swoole TCP server
|
// Create a Swoole TCP server
|
||||||
$server = new Swoole\Server('0.0.0.0', 43);
|
$server = new Swoole\Server('0.0.0.0', 43);
|
||||||
$server->set([
|
$server->set([
|
||||||
'daemonize' => false,
|
'daemonize' => false,
|
||||||
'log_file' => '/var/log/namingo/whois.log',
|
'log_file' => '/var/log/namingo/whois_application.log',
|
||||||
'log_level' => SWOOLE_LOG_INFO,
|
'log_level' => SWOOLE_LOG_INFO,
|
||||||
'worker_num' => swoole_cpu_num() * 2,
|
'worker_num' => swoole_cpu_num() * 2,
|
||||||
'pid_file' => '/var/run/whois.pid',
|
'pid_file' => '/var/run/whois.pid',
|
||||||
'max_request' => 1000,
|
'max_request' => 1000,
|
||||||
'dispatch_mode' => 2,
|
'dispatch_mode' => 2,
|
||||||
'open_tcp_nodelay' => true,
|
'open_tcp_nodelay' => true,
|
||||||
'max_conn' => 10000,
|
'max_conn' => 1024,
|
||||||
'heartbeat_check_interval' => 60,
|
'heartbeat_check_interval' => 60,
|
||||||
'heartbeat_idle_time' => 120,
|
'heartbeat_idle_time' => 120,
|
||||||
'buffer_output_size' => 2 * 1024 * 1024, // 2MB
|
'buffer_output_size' => 2 * 1024 * 1024, // 2MB
|
||||||
|
@ -24,6 +28,7 @@ $server->set([
|
||||||
'open_eof_check' => true,
|
'open_eof_check' => true,
|
||||||
'package_eof' => "\r\n"
|
'package_eof' => "\r\n"
|
||||||
]);
|
]);
|
||||||
|
$log->info('server started.');
|
||||||
|
|
||||||
// Connect to the database
|
// Connect to the database
|
||||||
try {
|
try {
|
||||||
|
@ -31,17 +36,18 @@ try {
|
||||||
$pdo = new PDO("{$c['db_type']}:host={$c['db_host']};dbname={$c['db_database']}", $c['db_username'], $c['db_password']);
|
$pdo = new PDO("{$c['db_type']}:host={$c['db_host']};dbname={$c['db_database']}", $c['db_username'], $c['db_password']);
|
||||||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
$server->send($fd, "Error connecting to database");
|
$server->send($fd, "Error connecting to database");
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register a callback to handle incoming connections
|
// Register a callback to handle incoming connections
|
||||||
$server->on('connect', function ($server, $fd) {
|
$server->on('connect', function ($server, $fd) use ($log) {
|
||||||
echo "Client connected: {$fd}\r\n";
|
$log->info('new client connected: ' . $fd);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Register a callback to handle incoming requests
|
// Register a callback to handle incoming requests
|
||||||
$server->on('receive', function ($server, $fd, $reactorId, $data) use ($c, $pdo) {
|
$server->on('receive', function ($server, $fd, $reactorId, $data) use ($c, $pdo, $log) {
|
||||||
$privacy = $c['privacy'];
|
$privacy = $c['privacy'];
|
||||||
|
|
||||||
// Validate and sanitize the data
|
// Validate and sanitize the data
|
||||||
|
@ -134,35 +140,60 @@ $server->on('receive', function ($server, $fd, $reactorId, $data) use ($c, $pdo)
|
||||||
."\n";
|
."\n";
|
||||||
$server->send($fd, $res . "");
|
$server->send($fd, $res . "");
|
||||||
|
|
||||||
if ($fp = @fopen("/var/log/whois/whois_request.log",'a')) {
|
|
||||||
$clientInfo = $server->getClientInfo($fd);
|
$clientInfo = $server->getClientInfo($fd);
|
||||||
$remoteAddr = $clientInfo['remote_ip'];
|
$remoteAddr = $clientInfo['remote_ip'];
|
||||||
$currentDateTime = new DateTime();
|
$log->notice('new request from ' . $remoteAddr . ' | ' . $nameserver . ' | FOUND');
|
||||||
$milliseconds = $currentDateTime->format("v");
|
|
||||||
$timestampWithMilliseconds = $currentDateTime->format("Y-m-d H:i:s") . '.' . $milliseconds;
|
try {
|
||||||
fwrite($fp, $timestampWithMilliseconds . "\t-\t" . $remoteAddr . "\t-\t" . $nameserver . "\n");
|
$stmt = $pdo->prepare("UPDATE settings SET value = value + 1 WHERE name = :name");
|
||||||
fclose($fp);
|
$settingName = 'whois-43-queries';
|
||||||
|
$stmt->bindParam(':name', $settingName);
|
||||||
|
$stmt->execute();
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "Error connecting to the whois database");
|
||||||
|
$server->close($fd);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
$log->error('Error: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "General error");
|
||||||
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
} else {
|
} else {
|
||||||
//NOT FOUND or No match for;
|
//NOT FOUND or No match for;
|
||||||
$server->send($fd, "NOT FOUND");
|
$server->send($fd, "NOT FOUND");
|
||||||
|
|
||||||
if ($fp = @fopen("/var/log/whois/whois_not_found.log",'a')) {
|
|
||||||
$clientInfo = $server->getClientInfo($fd);
|
$clientInfo = $server->getClientInfo($fd);
|
||||||
$remoteAddr = $clientInfo['remote_ip'];
|
$remoteAddr = $clientInfo['remote_ip'];
|
||||||
$currentDateTime = new DateTime();
|
$log->notice('new request from ' . $remoteAddr . ' | ' . $nameserver . ' | NOT FOUND');
|
||||||
$milliseconds = $currentDateTime->format("v");
|
|
||||||
$timestampWithMilliseconds = $currentDateTime->format("Y-m-d H:i:s") . '.' . $milliseconds;
|
try {
|
||||||
fwrite($fp, $timestampWithMilliseconds . "\t-\t" . $remoteAddr . "\t-\t" . $nameserver . "\n");
|
$stmt = $pdo->prepare("UPDATE settings SET value = value + 1 WHERE name = :name");
|
||||||
fclose($fp);
|
$settingName = 'whois-43-queries';
|
||||||
|
$stmt->bindParam(':name', $settingName);
|
||||||
|
$stmt->execute();
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "Error connecting to the whois database");
|
||||||
|
$server->close($fd);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
$log->error('Error: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "General error");
|
||||||
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
$server->send($fd, "Error connecting to the whois database");
|
$server->send($fd, "Error connecting to the whois database");
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
$log->error('Error: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "General error");
|
||||||
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -242,35 +273,60 @@ $server->on('receive', function ($server, $fd, $reactorId, $data) use ($c, $pdo)
|
||||||
."\n";
|
."\n";
|
||||||
$server->send($fd, $res . "");
|
$server->send($fd, $res . "");
|
||||||
|
|
||||||
if ($fp = @fopen("/var/log/whois/whois_request.log",'a')) {
|
|
||||||
$clientInfo = $server->getClientInfo($fd);
|
$clientInfo = $server->getClientInfo($fd);
|
||||||
$remoteAddr = $clientInfo['remote_ip'];
|
$remoteAddr = $clientInfo['remote_ip'];
|
||||||
$currentDateTime = new DateTime();
|
$log->notice('new request from ' . $remoteAddr . ' | ' . $registrar . ' | FOUND');
|
||||||
$milliseconds = $currentDateTime->format("v");
|
|
||||||
$timestampWithMilliseconds = $currentDateTime->format("Y-m-d H:i:s") . '.' . $milliseconds;
|
try {
|
||||||
fwrite($fp, $timestampWithMilliseconds . "\t-\t" . $remoteAddr . "\t-\t" . $registrar . "\n");
|
$stmt = $pdo->prepare("UPDATE settings SET value = value + 1 WHERE name = :name");
|
||||||
fclose($fp);
|
$settingName = 'whois-43-queries';
|
||||||
|
$stmt->bindParam(':name', $settingName);
|
||||||
|
$stmt->execute();
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "Error connecting to the whois database");
|
||||||
|
$server->close($fd);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
$log->error('Error: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "General error");
|
||||||
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
} else {
|
} else {
|
||||||
//NOT FOUND or No match for;
|
//NOT FOUND or No match for;
|
||||||
$server->send($fd, "NOT FOUND");
|
$server->send($fd, "NOT FOUND");
|
||||||
|
|
||||||
if ($fp = @fopen("/var/log/whois/whois_not_found.log",'a')) {
|
|
||||||
$clientInfo = $server->getClientInfo($fd);
|
$clientInfo = $server->getClientInfo($fd);
|
||||||
$remoteAddr = $clientInfo['remote_ip'];
|
$remoteAddr = $clientInfo['remote_ip'];
|
||||||
$currentDateTime = new DateTime();
|
$log->notice('new request from ' . $remoteAddr . ' | ' . $registrar . ' | NOT FOUND');
|
||||||
$milliseconds = $currentDateTime->format("v");
|
|
||||||
$timestampWithMilliseconds = $currentDateTime->format("Y-m-d H:i:s") . '.' . $milliseconds;
|
try {
|
||||||
fwrite($fp, $timestampWithMilliseconds . "\t-\t" . $remoteAddr . "\t-\t" . $registrar . "\n");
|
$stmt = $pdo->prepare("UPDATE settings SET value = value + 1 WHERE name = :name");
|
||||||
fclose($fp);
|
$settingName = 'whois-43-queries';
|
||||||
|
$stmt->bindParam(':name', $settingName);
|
||||||
|
$stmt->execute();
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "Error connecting to the whois database");
|
||||||
|
$server->close($fd);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
$log->error('Error: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "General error");
|
||||||
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
$server->send($fd, "Error connecting to the whois database");
|
$server->send($fd, "Error connecting to the whois database");
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
$log->error('Error: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "General error");
|
||||||
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -588,34 +644,59 @@ $server->on('receive', function ($server, $fd, $reactorId, $data) use ($c, $pdo)
|
||||||
."\n";
|
."\n";
|
||||||
$server->send($fd, $res . "");
|
$server->send($fd, $res . "");
|
||||||
|
|
||||||
if ($fp = @fopen("/var/log/whois/whois_request.log",'a')) {
|
|
||||||
$clientInfo = $server->getClientInfo($fd);
|
$clientInfo = $server->getClientInfo($fd);
|
||||||
$remoteAddr = $clientInfo['remote_ip'];
|
$remoteAddr = $clientInfo['remote_ip'];
|
||||||
$currentDateTime = new DateTime();
|
$log->notice('new request from ' . $remoteAddr . ' | ' . $domain . ' | FOUND');
|
||||||
$milliseconds = $currentDateTime->format("v");
|
|
||||||
$timestampWithMilliseconds = $currentDateTime->format("Y-m-d H:i:s") . '.' . $milliseconds;
|
try {
|
||||||
fwrite($fp, $timestampWithMilliseconds . "\t-\t" . $remoteAddr . "\t-\t" . $domain . "\n");
|
$stmt = $pdo->prepare("UPDATE settings SET value = value + 1 WHERE name = :name");
|
||||||
fclose($fp);
|
$settingName = 'whois-43-queries';
|
||||||
|
$stmt->bindParam(':name', $settingName);
|
||||||
|
$stmt->execute();
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "Error connecting to the whois database");
|
||||||
|
$server->close($fd);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
$log->error('Error: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "General error");
|
||||||
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
} else {
|
} else {
|
||||||
//NOT FOUND or No match for;
|
//NOT FOUND or No match for;
|
||||||
$server->send($fd, "NOT FOUND");
|
$server->send($fd, "NOT FOUND");
|
||||||
|
|
||||||
if ($fp = @fopen("/var/log/whois/whois_not_found.log",'a')) {
|
|
||||||
$clientInfo = $server->getClientInfo($fd);
|
$clientInfo = $server->getClientInfo($fd);
|
||||||
$remoteAddr = $clientInfo['remote_ip'];
|
$remoteAddr = $clientInfo['remote_ip'];
|
||||||
$currentDateTime = new DateTime();
|
$log->notice('new request from ' . $remoteAddr . ' | ' . $domain . ' | NOT FOUND');
|
||||||
$milliseconds = $currentDateTime->format("v");
|
|
||||||
$timestampWithMilliseconds = $currentDateTime->format("Y-m-d H:i:s") . '.' . $milliseconds;
|
try {
|
||||||
fwrite($fp, $timestampWithMilliseconds . "\t-\t" . $remoteAddr . "\t-\t" . $domain . "\n");
|
$stmt = $pdo->prepare("UPDATE settings SET value = value + 1 WHERE name = :name");
|
||||||
fclose($fp);
|
$settingName = 'whois-43-queries';
|
||||||
|
$stmt->bindParam(':name', $settingName);
|
||||||
|
$stmt->execute();
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "Error connecting to the whois database");
|
||||||
|
$server->close($fd);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
$log->error('Error: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "General error");
|
||||||
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
|
$log->error('DB Connection failed: ' . $e->getMessage());
|
||||||
$server->send($fd, "Error connecting to the whois database");
|
$server->send($fd, "Error connecting to the whois database");
|
||||||
$server->close($fd);
|
$server->close($fd);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
$log->error('Error: ' . $e->getMessage());
|
||||||
|
$server->send($fd, "General error");
|
||||||
|
$server->close($fd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -624,8 +705,8 @@ $server->on('receive', function ($server, $fd, $reactorId, $data) use ($c, $pdo)
|
||||||
});
|
});
|
||||||
|
|
||||||
// Register a callback to handle client disconnections
|
// Register a callback to handle client disconnections
|
||||||
$server->on('close', function ($server, $fd) {
|
$server->on('close', function ($server, $fd) use ($log) {
|
||||||
echo "Client disconnected: {$fd}\r\n";
|
$log->info('client ' . $fd . ' connected.');
|
||||||
});
|
});
|
||||||
|
|
||||||
// Start the server
|
// Start the server
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue