Skip to content

Commit 6070214

Browse files
committed
Добавил лог IP адреса при hook.
1 parent 8619a2e commit 6070214

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

Lib/RestAPI/Controllers/ApiController.php

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
namespace Modules\ModuleAmoCrm\Lib\RestAPI\Controllers;
1111

1212
use MikoPBX\Common\Providers\LoggerProvider;
13+
use MikoPBX\Core\System\SystemMessages;
14+
use MikoPBX\Core\System\Util;
1315
use MikoPBX\PBXCoreREST\Controllers\Modules\ModulesControllerBase;
1416
use Modules\ModuleAmoCrm\bin\ConnectorDb;
1517
use Modules\ModuleAmoCrm\bin\WorkerAmoCrmAMI;
@@ -84,6 +86,16 @@ public function changeSettingsAction():void
8486

8587
public function amoEntityUpdateAction():void
8688
{
89+
$tmpFileName = '/tmp/amo-server-ip';
90+
$ip = $this->getClientIp();
91+
$oldIp = '';
92+
if(file_exists($tmpFileName)){
93+
$oldIp = file_get_contents($tmpFileName);
94+
}
95+
if($oldIp !== $ip){
96+
SystemMessages::sysLogMsg('amoCrm-hook', 'from: ', $this->getClientIp());
97+
file_put_contents($tmpFileName, $ip);
98+
}
8799
ConnectorDb::invoke('entityUpdate', [$_REQUEST], false);
88100
}
89101

@@ -132,4 +144,33 @@ private function echoResponse($result):void
132144
echo 'Error json encode: '. print_r($result, true);
133145
}
134146
}
147+
148+
/**
149+
* Возвращает IP адрес клиента.
150+
* @return string
151+
*/
152+
private function getClientIp() {
153+
$ipKeys = [
154+
'HTTP_CF_CONNECTING_IP', // Cloudflare
155+
'HTTP_X_FORWARDED_FOR',
156+
'HTTP_X_REAL_IP',
157+
'HTTP_X_FORWARDED',
158+
'HTTP_FORWARDED_FOR',
159+
'HTTP_FORWARDED',
160+
'HTTP_CLIENT_IP',
161+
'REMOTE_ADDR'
162+
];
163+
164+
foreach ($ipKeys as $key) {
165+
if (array_key_exists($key, $_SERVER) && $_SERVER[$key]) {
166+
// Некоторые заголовки могут содержать несколько IP (например, X-Forwarded-For)
167+
$ips = explode(',', $_SERVER[$key]);
168+
$ip = trim($ips[0]); // Берём первый IP — это обычно клиент
169+
if (filter_var($ip, FILTER_VALIDATE_IP)) {
170+
return $ip;
171+
}
172+
}
173+
}
174+
return '127.0.0.1';
175+
}
135176
}

0 commit comments

Comments
 (0)