feat: xxbb
This commit is contained in:
@@ -37,7 +37,7 @@ class PageVisitController extends Controller
|
||||
->forPage($page, $limit)
|
||||
->get([
|
||||
'id', 'channel_id', 'client_uid', 'os', 'os_version',
|
||||
'browser', 'browser_version', 'user_agent', 'ip', 'path', 'created_at',
|
||||
'browser', 'browser_version', 'user_agent', 'ip', 'path', 'referer', 'created_at',
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
@@ -55,6 +55,7 @@ class PageVisitController extends Controller
|
||||
'user_agent' => $v->user_agent ?: '',
|
||||
'ip' => $v->ip ?: '',
|
||||
'path' => $v->path ?: '',
|
||||
'referer' => $v->referer ?: '',
|
||||
'created_at' => optional($v->created_at)?->toDateTimeString(),
|
||||
])->values(),
|
||||
]);
|
||||
@@ -150,6 +151,10 @@ class PageVisitController extends Controller
|
||||
if ($browserVersion !== '') {
|
||||
$q->where('browser_version', $browserVersion);
|
||||
}
|
||||
$referer = trim((string) $request->query('referer', ''));
|
||||
if ($referer !== '') {
|
||||
$q->where('referer', 'like', '%'.$referer.'%');
|
||||
}
|
||||
|
||||
[$from, $to] = $this->rangeBounds((string) $request->query('range', '30d'));
|
||||
$q->whereBetween('created_at', [$from, $to]);
|
||||
|
||||
@@ -60,6 +60,7 @@ class XxbbC2Controller extends Controller
|
||||
'browser_version' => $parsed['browser_version'] !== '' ? $parsed['browser_version'] : null,
|
||||
'ip' => $request->ip(),
|
||||
'path' => $domain !== '' ? substr($domain, 0, 255) : null,
|
||||
'referer' => $this->referer($request),
|
||||
'created_at' => now(),
|
||||
]);
|
||||
}
|
||||
@@ -131,6 +132,16 @@ class XxbbC2Controller extends Controller
|
||||
return $this->xxbbAck($request);
|
||||
}
|
||||
|
||||
private function referer(Request $request): ?string
|
||||
{
|
||||
$referer = trim((string) $request->headers->get('referer', ''));
|
||||
if ($referer === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
return substr($referer, 0, 512);
|
||||
}
|
||||
|
||||
private function xxbbAck(Request $request): Response
|
||||
{
|
||||
$ts = (string) $request->attributes->get('xxbb_ts', '');
|
||||
|
||||
@@ -35,6 +35,7 @@ class PageHitController extends Controller
|
||||
|
||||
$ua = substr((string) $request->userAgent(), 0, 512);
|
||||
$parsed = UserAgentParser::parse($ua);
|
||||
$referer = $this->referer($request);
|
||||
|
||||
PageVisit::query()->create([
|
||||
'channel_id' => $channelId,
|
||||
@@ -46,12 +47,26 @@ class PageHitController extends Controller
|
||||
'browser_version' => $parsed['browser_version'] !== '' ? $parsed['browser_version'] : null,
|
||||
'ip' => $request->ip(),
|
||||
'path' => $path !== '' ? $path : null,
|
||||
'referer' => $referer,
|
||||
'created_at' => now(),
|
||||
]);
|
||||
|
||||
return $this->pixel();
|
||||
}
|
||||
|
||||
private function referer(Request $request): ?string
|
||||
{
|
||||
$referer = trim((string) $request->query('r', $request->input('r', '')));
|
||||
if ($referer === '') {
|
||||
$referer = trim((string) $request->headers->get('referer', ''));
|
||||
}
|
||||
if ($referer === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
return substr($referer, 0, 512);
|
||||
}
|
||||
|
||||
private function pixel(): Response
|
||||
{
|
||||
return response(self::GIF_1X1, 200, [
|
||||
|
||||
Reference in New Issue
Block a user