文字内部の秘密のフォールバックはありません - 空白のパブリックチャットの秘密は503に答えます
セブン@Valueサイトとapplication.ymlがリテラルに戻りました dev-secret-change-in-prod (**************************************** が見つからない場合) そのため、シークレットなしでPodはリポジトリで読みやすい値を送りました。 X-I...
コネクターのリレーは予約済みクローズコードを送らない
KamoCameraServiceが転がったとき、バックエンドソケットはクローズフレーム(1006)と、 リレーはコネクターに1006を渡しました;1005、1006および1015は閉鎖だけを記述し、ないかもしれません 送信されるので、コンテナは1002プロトコルのエラーを置き換えました。すべてのロールアウトに住んでい...
コネクタソケットのクライアントアドレスは、最も公正なX-Forwarded-Forホップです
CameraAgentWebSocketHandlerは、FIRST X-Forwarded-For ホップを受け取りました。クライアントは、 つまり、そのアドレスは、KamoCameraService レートリムジンが未認証の登録者です。 現在、ClientIpResolverのルール(右端のパブリックホップ、他のX...
FreePBXヘルパーの1つのキーは電話を鳴らします
kamo-asterisk-support は、単一の API キーを保持します。, 文書化し、として発行 VOIP RECORDING UPLOADS 株式会社ドリテック リングイベントをキーで送る。 リング endpoint は VOIP CALL EVENTS だけ受け入れられ、すべてのリングの生産の助手 携...
パブリックチャットのメッセージ率の制限は、セッション1ではなく、
パブリック・チャット・パスは、/sessions/ 以下に住んでいるので、リミッターのinclude("sessions") テスト・パット セッション作成予算の会話自体: 1 分 IP あたりの 3 リクエスト (10 キーあたり), に対してカウント メニュー チャットウィジェットは、 ハンズフリーの音声モード(リ...
KamoAI内部エンドポイントはゲートウェイを離れません
カモアイ内部サブツリー(マスタースペック§7項目13)を7個入る ワイルドカードが転送され、サーバー・ツー・サーバーのエンドポイントで /api/security/internal/** と同じ接頭辞でプログラムを優先します。 /api/email/internal/**, 街並みオーバーライドレールと公共チャット エ...
ゲートウェイにメモリリクエストと制限を与える
デプロイメントはリソースが全くなかった:ブロックは全くなかった。 いいえ、そう要求します スケジューラは、このポッドの足跡を理由にすることはできません。 制限なし、 JVM の -XX:MaxRAMPercentage=70.0 ヒープの不足分の不足分を捕捉 ノード独自のRAM(各ノードは~126GiB)です。 このサ...
フォワード・コミッション・ストライプは、Webhooksを接続します
コミッションサービスレジスタ メニュー Stripe (OrgStripeSetupService) と直接、/api/commissions/** なし このゲートウェイのどこにも存在し、すべてのコールバック404'd エッジとコミッションのペイアウトは、Stripeが実際に何と一致しない お問い合わせ キャリアSM...
VOIPService の内部の SMS テンプレート API を継承し、クライアント自身の X-Internal-Auth を転送しません
同じ信託境界の2つの関連ギャップ。 /api/voip/sms/templates/** は /api/voip/** によって卸売を転送しました ワイルドカード。 VOIPService の内部AuthFilter は接頭辞 (and) をガードします。 /api/bulktext/send と共有された X-In...
クライアント独自のホップではなく、右端のホップからDerive X-Real-IP
forward() は、X-Real-IP を X-Forwarded-For.split()[0] に設定します。 そのヘッダーの1つの部分であるLEFT-mostホップはクライアント制御します outright: "X-Forwarded-For: 8.8.8.8" を運ぶ要求はで着きます 実際に見たアドレスとヘッ...
接続と読み込みタイムアウトによる境界上流呼び出し
RestTemplate の豆は bare JdkClientHttpRequestFactory から作られました タイムアウトなし。 接続を受け入れる1つの上流 決して答えない -- 雑草のポッド、デッドロック -- ゲートウェイスレッドを駐車 そのソケットは永遠に; それらの排気の十分な有限の Tomcat スレ...
ログセッショントークン、OTK、auth ヘッダーをリクエストごとに停止
forward() は、コピーしたヘッダーのマップ全体を 1 つの呼び出しごとに印刷しました。 System.out.println("APIService: コピーヘッダ:" + outHeaders) -- は、 X-***-Token、Cookie、X-OTK、Authorizationを完全にシリアライズし、プ...
ビルドされたダイジェストを解決する際に OCI のイメージインデックスを承諾 [skip ci]
画像は OCI の画像インデックスとして押し込まれているので、単一のレジストリを要求する 画像マニフェストは404にのみ答え、消化は空に戻り、チェック 失敗しました。 インデックスタイプを受け入れると、Pods レポートのダイジェストを返します.
同じコミットを再構築すると、古い消化器にポッドを残します [skip ci]
ロールアウトステップは、比較することによって、同じコミットを再構築を検出しようとしました デプロイメントのイメージリファレンスは、`set image` の前後です。 「適用マニフェスト」 既にk8s/deployment.yaml (イメージ:latest)を加えました、従って参照 常に変更され、再起動は消火されず、...
クライアントを優先したアイデンティティヘッダーを上流に転送しない
forward()、forwardWebhook()、forwardCallback()は、すべてのインバウンドをコピーしました ホスト以外のヘッダ(およびセッションレス2の場合、クレデンシャルヘッダ) 上流リクエストに。 BillingService は、許可なく、 X-Org-Id、X-Member-Id、および ...
運送業者 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 で書かれ、テスト、デプロイ インタ...
タグではなく、ダイジェストによるデプロイを生成
前のコミットは、 `set image` をサイレント no-op と停止します。 これは、 結果: ロールアウト後、タグはレジストリでダイジェストに解決され、 実行中のPodはそれに対してチェックされます。 Podが画像を実行していない場合、この実行 生成されたビルドは、レポートの成功の代わりに失敗します。 タグが...
同じコミットの再構築は何も展開し、成功を報告しました
この画像はコミット SHA でタグ付けされます。 同一の画像参照。 `kubectl set image` は何も変更しません。 デプロイメントは触れず、「ロールアウト状態」はすぐに反対に成功します OLD Pod と、このパイプラインは何もデプロイした成功したデプロイを報告します。 サービスが再構築されなければなら...
/api/settingsを先にドロップすると、何も意味しません
EmailService は、同期統合コントローラーを ************************************ /api/settings/integrations — なので、 転送は、サービスがマッピングされず、404を返すパスに達しました。 上記の /api/email ワイルドカードは既に持ち...
ルート/api/contacts、/api/calendar、/api/settingsをメールサービスへ
カモモバイルの連絡先とカレンダーは、すべてのリクエストで404'd画面を表示します。 ネイザー api ホストでパスがルーティングされたため、EmailService や 何も記録されていないサービス — 故障は遠くから見えない。 kamo-internal はこれらを必要としません: それは自分自身を通して3つに達...
15秒のminReadySecondsのロールアウトルームを今すぐコストで与える
progressDeadlineSeconds は 60 でした。 これは、ロールアウトが進行前に表示しなければならないウィンドウです Kubernetes は、失敗してマークアップし、以前のコミットは minReadySeconds の 15 を追加しました。 画面上の全てのロールアウトとアプリの起動。 冷たい引きだ...
APIServiceは、すべてで優雅にシャットダウンしません
デプロイは、各サービスの唯一のPodを、リクエストをキャッチするために何も交換しました フライト 車両全体に適用される3つの設定: - プロセスがSIGTERMを見る前に、プレストップスリープ10秒。 Kubernetesは、そのPodからPodを削除します EndpointSlice と信号を同時に、Traefik...
一度にデコードされたトークンを上流にエンコードする
21670e5 は、UpstreamUri の FULLY-PRE-ENCODED エントリーを通じてソーシャルWebhookController をルーティングしました しかし、その URL はハイブリッドです。 `token` は @PathVariable なので、春は手が getQueryString() が生...
コールワーのクエリバイトをパブリックフェーシングプロキシーで転送
ゲートウェイは 3c24d32 でダブルエンコード転送されたクエリ文字列を停止しましたが、4 このサービスの他のプロキシは、まだ、すでにパーセントエンコードされたバイトを連結 文字列に渡すと、ResendTemplate の文字列の積み過ぎに渡します。 URIテンプレートとして、2番目の時間をエンコードします。%2C ...
呼び出し者のクエリバイトを 2 回エンコーディングするのではなく転送します
全ての URL は getRequestURI() と getRequestURI() からビルドされます。 getQueryString() — 両方とも既にパーセントエンコード済みで、 RestTemplate を文字列として書きます。 RestTemplate の String のオーバーロードは URL を呼び...
Kubectlのダウンロードをフラッキ・エグレッシにハードン [skip ci]
dl.k8s.io オーバー ランナーのエグレッション 断続的にミッドトランスファーをドロップ: curl: (56) OpenSSL SSL read: 復号化が失敗したか、悪いレコードマック それ以外の緑のビルドでデプロイが失敗する。 繰り返し観察 kamo-signer-monorepoとkamo-transla...
フェーズ1に必須originを宣言 — OriginMatcher オプトイン (空の許可リスト / 欠如 許可)
Phase-0 ウィジェットはサーバー側のプロキシを介してまだ呼び出します。そのため、オリジンロックは何もありません しかし、すべてのライブパブリックチャットキーには空の許可リストがあります。 ストリクト 執行(empty=deny、欠落-Origin=deny)はマーケティング+記号.pinkを破りました チャットと...
キャッシュ無効なキーのみ、元の拒否されていない(有効なキーのDoSを防ぎます)
風邪のRedisキャッシュでは、間違った/機密の起源を持つ有効なpublic-chatキーが 60秒のINVALIDとしてキャッシュされ、その正しい起源の要求を否定 ウィンドウ。 HTTP と WebSocket の両方のコールドキャッシュフォールバックが区別できるようになりました ******************...
Bind WS はオリジンにハンドシェイクを中継 + コールドキャッシュキーの検証フォールバックを追加します
PublicChatController のプライベートな validateViaDownstream() を共有に抽出 PublicChatKeyResolver bean so PublicChatWebSocketHandler 同じを再利用することができます downstream DB のバリデーション + 強...
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...
アップロードサイズを500MBに上げる
Spring Boot のデフォルトは 1MB の複数の部分を、背景イメージを引き起こします アップロードして500リクエストで失敗します。.getParts()。 マッチセキュリティサービス 既存の 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 ...
重複したCorsFilterを削除し、ゲートウェイ内のCORSヘッダーを上流に除去
WebConfig.java は、CortsConfig と競合する第 2 回 CorsFilter ビーンを定義しました。 javaの bean、重複ヘッダーの書き込みを危険にさらす。 削除すると、CorsFilter が 1 つしか存在しません。 Forward() メソッドは、上流から Access-Contr...
SecurityService に転送される JSON ボディに application/json を設定
RestTemplate to upstream は、春とコンテンツタイプの互換性がないままにできます。 @RequestBody は 415 を引き起こします。 生体を読んだ後、力の適用 JSON ペイロードが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.
ホストを上書きする代わりに上流X-Forwarded-Hostを保存
上流プロキシ(Next.js)がX-Forwarded-Hostをブラウザにセットする場合 元のホスト、APIService は、上書きではなくそのまま保存されます。 独自のホストヘッダー。 リクエストが到着したときに、orgドメインの解像度を修正 内部K8sサービスURL.
