fix(gateway): forward the real client IP to the backend on every call (last-login IP was the docker addr) #264
Reference in New Issue
Block a user
Delete Branch "feature/forward-client-ip"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Реальный client IP теперь пробрасывается в backend на каждом вызове (last-login IP в админке был
172.19.0.9у всех).Корень
172.19.0.9= докер-адрес самого gateway (он дёргает backend). Цепочка:peerIPчитает).transcodeкладётClientIPлишь туда). Все прочие вызовы (в т.ч. profile-fetch, который штампитlast_login_ipчерезStampLastLogin) шли без XFF → backendclientIP(c)= peer =172.19.0.9.Фикс (узкий)
backendclient:WithClientIP/clientIPFromContext(зеркалоWithPlatform);do()берёт clientIP из ctx, если явный параметр пуст → ставитX-Forwarded-For.server.goExecute):ctx = backendclient.WithClientIP(ctx, clientIP)один раз на запрос → XFF на всех downstream-вызовах.client_ip(c.ClientIP()— теперь резолвит проброшенный XFF).Тесты
TestXForwardedForInjection:WithClientIPедет на не-chat вызове (Profile) как XFF; без IP — заголовка нет.Проверю живьём после раската: last-login IP в админке — реальный, не докерный.
New commits pushed, approval review dismissed automatically according to repository settings