클라이언트 공급 identity headers upstream를 전달하십시오
forward(), forwardWebhook() 및 forwardCallback()는 모든 inbound를 복사했습니다. 호스트를 제외한 헤더 (및, sessionless two, credential headers) 업스트림 요청에. BillingService는 모두 허용되며 Call...
앞으로 캐리어 SMS webhooks, 모든 것에 아무것도 도달
Traefik은 api.kamocrm.com에서 경로 분할없이이 게이트웨이에 모든 경로를 보냅니다. 그리고 이 클래스는 /api/voip/** 그리고 아무것도 다른. · /api/bulktext/inbound/{carrier} — 서면, 테스트 및 VOIPService에 배포 — 인터넷...
앞으로 캐리어 SMS webhooks, 모든 것에 아무것도 도달
Traefik은 api.kamocrm.com에서 경로 분할없이이 게이트웨이에 모든 경로를 보냅니다. 그리고 이 클래스는 /api/voip/** 그리고 아무것도 다른. · /api/bulktext/inbound/{carrier} — 서면, 테스트 및 VOIPService에 배포 — 인터넷...
에 의해 배포 digest, 태그에 의해
Preceding commit stops `set image` 침묵의 no-op. 이 주장 outcome : 롤아웃 후, 태그는 레지스트리에서 소화로 해결됩니다. 실행된 파드는 그것에 대하여 검사됩니다. 팟이 실행되지 않은 경우 생성, 빌드는 성공보고 대신 실패. 태그는 그 질문에 대...
동일한 커밋의 재건은 아무것도 배포하고 성공을보고
이미지는 커밋 SHA로 태그되어 있으므로 동일한 커밋 생성을 재구성합니다. 동일한 이미지 참조. `kubectl set image` 그런 다음 아무것도 변경, 배포는 결코 터치되지 않습니다, `rollout status`는 즉시 성공 OLD pods, 그리고이 파이프라인은 아무것도 배포...
/api/settings forward를 떨어뜨리십시오
EmailService는 sync-integration 컨트롤러를 제공합니다. **************** not /api/settings/integrations — 그래서 앞으로는 서비스 경로에 도달하지 않고 404을 반환합니다. /api/email 와일드 카드는 이미 그것을 운반합...
Route /api/contacts, /api/calendar 및 /api/settings to EmailService
KamoMobile의 접촉 및 달력 스크린 404는 각 요구에 했습니다. 이름 * 경로는 api 호스트에서 경로로, 그래서 아무것도에 도달 EmailService 및 서비스는 모든 것에 아무것도 기록 — 실패는 멀리에서 보이지 않습니다. kamo-internal 결코 이것을 필요로 하...
두 개의 팟을 실행
복제 1 -> 2. 이 서비스는 @Scheduled 일을 실행하고 독점적 인 NATS 내구재를 묶지 않습니다, 그래서 두 번째 팟 중복 아무것도 - 그것은 무수한 요청 서빙, 그리고 단지에 그것을 유지 하나의 복제는 숫자를 제기하지 않았다. 한 복제 maxSurge는 깨끗한 배포 및 ...
지금 비용 15s minReadySeconds에 대한 롤아웃 룸 제공
progressDeadlineSeconds는 60이었다. 롤아웃이 진행되기 전에 쿠버네티스는 실패하고, 이전 커밋은 minReadySeconds의 15를 추가했습니다. 이미지 잡아당기기의 정상에 각 롤아웃 및 앱의 자신의 시동. 혼자 추운 잡아 이제 여행 할 수 그리고 작업이 실패. 6...
이 표현의 CRLF 라인 종료 복원
이전 커밋은 LF로 정상화 된 스크립트로 파일을 다시 변환합니다. 전체 파일 diff는 수십 개의 줄을 만지고 변화합니다. 콘텐츠 변경 없음; 종료 복원 파일은 항상 실제 편집이 검토 할 수 있었다.
APIService는 전혀 흠뻑 빠지지 않습니다
Deploys는 요청을 잡기 위해 아무것도와 함께 각 서비스의 유일한 파드를 대체 비행. 함대에 적용된 3개의 조정: - 프로세스가 SIGTERM을 참조하기 전에 10s를 잠그십시오. 쿠버네티스는 팟을 제거한다. EndpointSlice와 같은 순간에 신호, 그리고 Traefik는 제...
고객 PBX에서 라이브 통화 이벤트를위한 API 키 표면
VoipRecordingUploadController에 대한 이해, deliberately 별도의 VOIP CALL EVENTS 범위: 사실과 만들기 후 녹음 업로드 이제 누군가의 전화 링은 다른 힘이며 관리자 한 키가 침묵적으로 다른 것을 부여하지 않아야한다. 인스턴스는 X-Phon...
Forward /api/email/oauth/callback 에 이메일서비스
Google의 OAuth 리디렉션 대상. 이메일과 만나는 공급자로 동일한 모양 그것 외에 콜백: 대중과 sessionless, 이 팝업 땅 때문에 임차인 세션과 org는 ?state에 여행. 정확한 경로는 /api/email/** 와일드카드를 패턴 특성에 붙인다. auth-stripp...
추적 비콘을 MediaService로 전달
Clones forwardPublicWebinar 오히려 일반적인 운송 () : 그 방법 모든 URI, 헤더 맵 및 몸 길이를 인쇄하여 레벨을 사용하지 않고, 방문자 비콘은 IP와 참조를 수행. API 키는 여기에 속도 제한 및 학대 통제이며, 공상 경계가 아닙니다. 한국어 마케팅 팟...
공유-library @Lob LONGVARCHAR 수정에 대한 재건
Hibernate의 PostgreSQL 방언은 getLong()를 통해 OID로 @Lob String 칼럼을 읽습니다. Affects 메모, 연락처, 달력, OAuth 토큰, IMAP 암호, 이메일 캠페인 몸, webhook 비밀, Canva 및 소셜 자격.
YugabyteDB의 포인트 및 PostgreSQLDialect 사용
CockroachDB는 YugabyteDB에 의해 대체되었습니다. 연결 문자열에서 이동 cockroachdb-public:26257 yb-tserver-service:5433, 그리고 Hibernate 방언 ...에서 *********** 에 PostgreSQLDialect.
Google GCS 사본을 통해 Mirror Maven Central
모든 도커 스테이지는 추운 ~ / .m2에서 시작하여 전체 종속 나무를 굴절시킵니다. 그래서 중앙은 모든 동시 서비스 구조의 전체 무게. 그것은 429s와 함께 답변, 오늘 두 번, 손상 전송: BillingService 일어난 일에 태어난 "Tag mismatch" tomcat-emb...
한 번에 한 번에 디코딩 토큰을 인코딩
21670e5는 UpstreamUri의 FULLY-PRE-ENCODED 항목을 통해 SocialWebhookController를 routed 점, 그러나 그것의 URL은 잡종입니다: `token`는 @PathVariable입니다, 그래서 봄 손은 getQueryString()이 원합니다...
Public-facing 프록시에서 콜러의 쿼리 바이트를 전달
게이트웨이는 3c24d32의 전달된 쿼리 문자열을 중지하지만 4 이 서비스에 다른 프록시는 여전히 이미 인코딩된 바이트를 concatenated String으로, restTemplate의 String overload로 옮긴다. URI 템플릿으로, 두 번째로 인코딩: %2C는 %252C로...
Caller의 쿼리 바이트 대신 인코딩 두 번
모든 URL이 게이트웨이 빌드는 getRequestURI()에서 조립됩니다. getQueryString() — 이미 퍼센트 인코딩된 모두 — 그리고 그 때에 문자열로 restTemplate. restTemplate의 문자열 과부하는 URL을 가지고 있지 않습니다; 그들은 URI TEMP...
게이트웨이의 10개의 액세스 규칙을 강화하십시오
이 필터는 기록 된 이후로 비활성되었습니다. resolveOrgId read org:domain:<host> Redis에서 아무도 키를 썼고, null 반환은 허용하도록 떨어졌다. Geo 분지는 SecurityService에 대한 코멘트를 가진 빈 if-block이었습니다. 하지 않습니...
회의 제공 업체 OAuth 콜백
Zoom 및 Microsoft는 org Authorises 후이 게이트웨이에 브라우저를 리디렉션 Kamo의 앱. 여기에 팝업 토지는 열렬한 세션이 없습니다. — org 여행에서 ?state — 그래서 콜백은 sessionless, auth-stripping passthrough를 필요로...
Flaky egress에 대한 kubectl 다운로드를 Harden [skip ci]
dl.k8s.io 런너의 egress 간에 실수로 중간 전송을 삭제: 컬: (56) OpenSSL SSL read: 해독 실패 또는 나쁜 기록 맥 그렇지 않으면 녹색 빌드에 배포되지 않습니다. 반복적으로 관찰 kamo-signer-monorepo 및 카모 번역 사전. 추가 --retr...
Public AI->human 핸오프 루트 프록시
POST 추가 ************** MediaService에 proxied createSupportSession sibling에 따라. 이 Handoff 기능없이 도착에 죽었다 : MediaService의 엔드 포인트 X-Internal-Auth, X-Public-Chat-Org...
Api 호스트를 통한 Route /api/email + /api/support
(EmailService) 및 지원 (MediaService, /api/media와 같은 상류)는 루트 → 404. 이메일 발송 및 수정 localhost에서 service.url 클러스터 서비스에 기본값. 앞으로() 콜러의 세션만 전달 헤더 (X- *** - 토큰) - X-Intern...
GET /api/public-chat/bootstrap 게이트웨이 경로
기존 proxyWithAuth 파이프라인을 재사용하는 bootstrap 엔드포인트 추가 (key validation + opt-in Origin + PUBLIC CHAT 범위 + 속도 제한 + X-Public-Chat-Key-Hash) 및 MediaService 부츠 스트랩 엔드포인트에...
1단계 – OriginMatcher opt-in(empty allow-list / 누락된 Origin 허용)
Phase-0 위젯은 서버 측 프록시를 통해 여전히 호출됩니다, 그래서 원래 잠금이 없습니다 아직 혜택과 모든 라이브 공개 채팅 키는 빈 허용 목록이 있습니다. 사이트맵 집행 (empty=deny, missing-Origin=deny) 마케팅 + sign.pink VOIP-recordi...
진정한 잘못된 키 만 캐시가 유효하지 않습니다
추운 Redis 캐시에서 잘못된 /absent Origin의 유효 공개 채팅 키가되었습니다. 60s에 대한 INVALID로 캐시, 그에 대한 올바른 기원의 요청을 거부 창. HTTP 및 WebSocket Cold-cache fallbacks 모두 구별 *********** null 반환...
Bind WS 릴레이 handhake 원산지 + 콜드 캐시 키 검증을 추가
PublicChatController의 프라이빗 validateViaDownstream()을 공유합니다. PublicChatKeyResolver bean 그래서 PublicChatWebSocketHandler 같은 재사용 할 수 있습니다 downstream DB 유효성 검사 + 필수 O...
Proxy GET /lo-presence 에 미디어 서비스
Support-session proxy는 이미 익지않는 몸을 전달하므로 합병 된 위젯 선호하는AgentMemberId 도달 미디어 서비스 untouched. 존재 프록시 추가하기 차용 포털은 지정된 대출 임원이 온라인인지 확인할 수 있습니다.
이메일 OAuth 공급자 콜백을 위한 공개 passthrough
앞으로 GET *********** EmailService 세션에 대한 (strips auth, no redirect following), RingCentral OAuth 콜백 미러링. 이것은 Microsoft/Google/Zoho에 등록된 고정된 공중 리디렉션 URI입니다.
Public programmatic e-sign API 게이트웨이 (API SIGNATURE 범위)
/api/public/esign/**를 PublicApiController에 추가하십시오: org API 키를 유효하게 합니다. API SIGNATURE 범위, 속도 제한이 필요하며 ESigService의 기대 X-Internal-Auth + X-Org-Id를 가진 내부 봉투 API (...
Proxy support-message translate endpoint
Adds a passthrough route for the new MediaService endpoint that translates a single support-chat message into the visitor's URL locale. The marketing-side chat ...
Scope concurrency to build jobs, not Kubernetes deploys
Workflow-level concurrency serialized the whole pipeline (including kubectl rollouts). Move the group to the build job only so deploy jobs from different runs c...
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...
VoipRecordingUploadController for kamo-asterisk-support 파일 업로드
POST /api/voip/recordings/upload는 kamo-asterisk-support에서 multipart 몸을 받아들입니다 FreePBX 호스트에서 실행. X-Api-Key는 새로운 VOIP RECORDING UPLOADS를 제공합니다. 범위 ( *********** 유...
파일 업로드 크기 제한 500MB
봄 부트는 1MB에 모자 multipart 부속, 배경 이미지를 일으키는 원인이 되었습니다 으로 실패 500 요청에.getParts(). SecurityService의 일치 기존의 500MB의 한계 그래서 APIService는 큰 파일 업로드 할 수 있습니다.
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 ...
게이트웨이에서 중복 필터 및 스트립 업스트림 CORS 헤더 제거
WebConfig.java는 CorsConfig과 비교하여 두 번째 CorsFilter bean을 정의했습니다. java의 bean, 위험 중복 헤더 쓰기. 하나의 CorsFilter가 존재합니다. 앞으로 () 방법은 또한 상류에서 Access-Control-Allow-Origin을 ...
SecurityService에 전달된 JSON body용 application/json 설정
업스트림에 restTemplate는 봄과 호환이 되는 Content-Type을 남길 수 있었습니다 @RequestBody, 원인 415. 익지않는 몸을 읽는 후에, 강제 APPLICATION JSON 페이로드가 JSON처럼 보입니다.