Никогда не перенаправляйте предоставленные клиентом заголовки идентификации вверх по течению
форвард(), впередWebhook() и впередCallback() скопировали каждый входящий Заголовок, кроме Host (и, для двух без сеанса, заголовок учетных данных) на запрос выш...
Переносчик SMS веб-хуков, который вообще ничего не достиг
Traefik отправляет каждый путь на api.kamocrm.com к этому шлюзу без разделения пути. и этот класс пересылается /api/voip/** и ничего больше. Так /api/bulktext/i...
Переносчик SMS веб-хуков, который вообще ничего не достиг
Traefik отправляет каждый путь на api.kamocrm.com к этому шлюзу без разделения пути. и этот класс пересылается /api/voip/** и ничего больше. Так /api/bulktext/i...
Доказать развертывание по дайджесту, а не по тегу
Предыдущее обязательство останавливает «установленное изображение» как молчаливое бездействие. Это утверждает, что результат: после развертывания тег решается н...
Восстановление одного и того же обязательства ничего не привело к успеху
Изображение помечено фиксированным SHA, поэтому восстановление одного и того же фикса производит Идентичная ссылка на изображение. «Объектное заданное изображен...
Бросьте /api/настройки вперед, которые ни на что не указывают
EmailService обслуживает контроллер синхронизации **************** не /api/settings/integrations — так что В любом случае сервис не отображает путь и возвращает...
Маршрут /api/контакты, /api/календарь и /api/настройки в EmailService
Контакты и экраны календаря KamoMobile 404'd по каждому запросу. Ни то ни другое Путь был маршрутизирован на хосте api, поэтому ничего не дошло до EmailService....
Дайте место для развертывания для 15-минутных ReadySeconds теперь стоит
progressDeadlineSeconds исполнилось 60 лет. Это окно, в котором развёртывание должно показать прогресс до того, как Kubernetes сдается и отмечает, что он потерп...
APIService никогда не закрывается
Деплойты заменили единственный блок каждой службы, в котором не было ничего, чтобы поймать запросы. Полёт. Три настройки, применяемые по всему флоту: Престоп с...
Закодируйте декодированный токен ровно один раз на пути вверх по течению
21670e5 маршрутизированный SocialWebhookController через вход UpstreamUri точка, но ее URL-адрес является гибридом: «токен» - это переменная @PathVariable, так ...
Вперед байты запросов абонента на публичных прокси
Шлюз остановил двойное кодирование переадресованных строк запросов в 3c24d32, но четыре Другие прокси-серверы в этой службе по-прежнему содержат уже закодирован...
Передайте байты запросов абонента вместо того, чтобы кодировать их дважды
Каждый URL-адрес, который строит этот шлюз, собирается из getRequestURI(). getQueryString() — оба уже закодированы в процентах — и затем были переданы Восстанов...
Укрепите загрузку kububl против шелушащегося выхода [skip ci]
dl.k8s.io по выходу бегуна периодически падает в середине передачи: Curl: (56) OpenSSL SSL read: расшифровка не удалась или не удалась который не справляется с ...
Отложите обязательное начало фазы 1 — OriginMatcher opt-in (пустый список разрешений / отсутствующий Origin разрешен)
Виджеты фазы 0 по-прежнему звонят через прокси-сервер, поэтому блокировка происхождения не имеет При этом каждый открытый публичный чат имеет пустой список разр...
Только кэш-инвалидные подлинно-инвалидные ключи, а не отклоненные по происхождению (предотвращают DoS с действительным ключом)
На холодном кэше Redis был действительный открытый ключ с неправильным / отсутствующим Origin. Кэшируется как INVALID для 60-х годов, отрицая правильные запросы...
Bind WS передаст рукопожатие Origin + добавит запасной ключ проверки холодного кэша
Выдержки из частной проверки PublicChatControllerViaDownstream() в общий PublicChatKeyResolver bean, чтобы PublicChatWebSocketHandler мог повторно использовать ...
Обязательный список разрешений для публичных чатов (отрицание пропущенного списка)
Carve /api/voip/recordings/** out of the wildcard VOIP forwarder
The /api/voip/** catch-all in APIGatewayController was shadowing the dedicated VoipRecordingUploadController POST /api/voip/recordings/upload mapping when Sprin...
Увеличить размер загрузки файла до 500 МБ
Spring Boot по умолчанию колпачок многочастных частей на 1 МБ, вызывая фоновое изображение Загружается, чтобы выйти из строя с 500 в request.getParts(). Служба ...
Move CORS to Traefik via kamo-middlewares, remove in-app CorsFilter
The CorsFilter @Bean in the Spring app was silently not applying headers after WebConfig.java was removed. CORS is now handled entirely at the Traefik layer by ...
Удалите дубликаты CorsFilter и разберите заголовки CORS в шлюзе
WebConfig.java определил второй CorsFilter, конкурирующий с CorsConfig. Ява бобы, рискуя дублировать заголовки. Удален, поэтому существует только один CorsFilte...
Настройка приложения/json для органов JSON, направляемых в Службу безопасности
RestTemplate может оставить Content-Type несовместимым с Spring @RequestBody, вызывает 415. После прочтения необработанного тела, нажмите APPLICATION JSON Полез...
Validate Forgejo HMAC-SHA256 signature instead of plain secret header
Forgejo sends webhook secret as X-Gitea-Signature / X-Forgejo-Signature HMAC-SHA256 hash, not as a plain header value. Read body, verify HMAC, then forward to S...
Include SUBSCRIPTION_CATALOG in default scopes fallback
When MediaService doesn't return scopes in the validation response, default to including both PUBLIC_CHAT and SUBSCRIPTION_CATALOG scopes. This ensures public c...
Use getServerName() instead of getHeader(Host) for original host resolution
ForwardedHeaderFilter consumes X-Forwarded-Host and adapts getServerName() accordingly, while getHeader(Host) returns the raw HTTP Host which may be a K8s inter...
Use HTTP on port 80 for meet service URL to match other services
The HTTPS endpoint on 8443 causes SSL cert mismatch when routing through K8s internal DNS. All other services use HTTP on port 80.
Используйте правильный URL-адрес MediaService (порт HTTPS 8443) для meet.service.url
Добавить meet.service.url в K8s configmap для предотвращения сбоя APIService
Сохраняйте вышестоящий X-Forwarded-Host вместо перезаписи с собственным Host
Когда восходящий прокси (Next.js) устанавливает X-Forwarded-Host для браузера Оригинальный хост, APIService теперь сохраняет его вместо перезаписи Собственный H...
Explicitly forward visitor IP to downstream services
ForwardedHeaderFilter consumes X-Forwarded-For from the incoming request, so when APIService forwards to SecurityService via RestTemplate the header is missing....
Move AccessEnforcementFilter to scanned package, revert ComponentScan
The widened @ComponentScan caused a corsFilter bean conflict between CorsConfig and WebConfig. Moved the filter into com.kamo.api.app.config (already scanned by...
Add Redis connection config to K8s configmap
APIService pod was failing to start because spring-boot-starter-data-redis auto-configuration couldn't connect to Redis at localhost:6379. Points to redis.kamo....
Use JdkClientHttpRequestFactory to support PATCH method forwarding
The default RestTemplate uses SimpleClientHttpRequestFactory (HttpURLConnection) which doesn't support the PATCH HTTP method, causing branch-titles save to fail...
Добавьте настройку Buildx с небезопасной конфигурацией реестра для устранения ошибок 401 auth
Add preStop hooks, probes, and increase termination grace period to prevent deployment timeouts
Properly forward multipart/form-data by rebuilding parts for RestTemplate
Как вы видите судоходство?
Каждое из этих обновлений автоматически попадает в ваше рабочее пространство. Начните бесплатно и смотрите, как он растет неделю за неделей.