Mai inoltrare intestazioni di identità fornite dal cliente a monte
forward(), forwardWebhook() e forwardCallback() copiato ogni inbound intestazione eccetto Host (e, per i senza sessione due, le intestazioni credenziali) sulla ...
Supporto avanzato SMS webhooks, che non ha raggiunto nulla affatto
Traefik invia ogni percorso su api.kamocrm.com a questo gateway senza percorso diviso, e questa classe ha inoltrato /api/voip/** e nient'altro. Quindi... /api/b...
Supporto avanzato SMS webhooks, che non ha raggiunto nulla affatto
Traefik invia ogni percorso su api.kamocrm.com a questo gateway senza percorso diviso, e questa classe ha inoltrato /api/voip/** e nient'altro. Quindi... /api/b...
Prove the deploy by digest, not by tag
Il commit precedente si ferma `set image` essendo un no-op silenzioso. Questo afferma che risultato: dopo il rollout, il tag viene risolto per digerire al Regis...
Una ricostruzione dello stesso commit non ha dispiegato nulla e ha riferito il successo
L'immagine è contrassegnata con il commit SHA, così la ricostruzione dello stesso commit produce un riferimento di immagine identico. `kubectl set immagine` qui...
Getta la /api/settings in avanti, che non ha indicato nulla
EmailService serve il controller di sincronizzazione al ********************************************************************************************************...
Route /api/contacts, /api/calendar e /api/settings to EmailService
Contatti e schermi di calendario di KamoMobile 404'd su ogni richiesta. Né percorso è stato percorso presso l'host api, quindi nulla ha raggiunto EmailService e...
Eseguire due baccelli
repliche 1 -> 2. Questo servizio non funziona @Scheduled lavoro e non lega NATS esclusivo durevole, quindi un seconda capsula non duplica nulla — è richiesta se...
Dare il rollout stanza per il 15s minReadySeconds ora i costi
progressoDeadlineSeconds era 60. Questa è la finestra che un rollout deve mostrare i progressi prima Kubernetes rinuncia e segna il fallimento, e il commit prec...
Ripristinare la linea CRLF di questo manifesto
Il commit precedente ha riscritto il file con uno script che lo ha normalizzato a LF, che è un diff per un cambiamento che ha toccato una dozzina di righe. Ness...
APIService non si chiude mai con grazia
Deploys ha sostituito l'unico pod di ogni servizio con nulla per catturare le richieste in volo. Tre impostazioni, applicate attraverso la flotta: - preStop do...
Superficie API-chiave per eventi live call da un cliente PBX
Compagno a VoipRecordingUploadController, su un deliberatamente separato VOIP CALL EVENTS: caricare una registrazione dopo il fatto e fare l'anello telefonico d...
Avanti /api/email/oauth/callback a EmailService
Obiettivo di reindirizzamento di Google OAuth. Stessa forma dell'email e del fornitore di incontrare callbacks accanto a esso: pubblico e senza sessione, perché...
Avviare il segnale di tracciamento a MediaService
Clones forwardPublicWebinar piuttosto che generico forward(): che metodo stampa ogni URI, mappa dell'intestazione e lunghezza del corpo a stdout senza livello, ...
Ricostruisci contro la correzione condivisa @Lob LONGVARCHAR
Il dialetto PostgreSQL di Hibernate legge le colonne di stringa @Lob come OID via getLong(). Affetti note, contatti, calendario, OAuth tokens, password IMAP, ca...
Punta a YugabyteDB e usa PostgreSQLDialect
CockroachDB è stato sostituito da YugabyteDB. Le stringhe di connessione si muovono da scarroachdb-public:26257 a yb-tserver-service:5433, e il dialetto Hiberna...
Mirror Maven Central tramite la copia GCS di Google
Ogni stadio di Docker parte da un freddo ~/.m2 e refetches l'intero albero di dipendenza, quindi Central vede il peso pieno di ogni servizio concomitante costru...
Codificare il token decodificato esattamente una volta sulla strada a monte
21670e5 ha percorso SocialWebhookController attraverso la voce FULLY-PRE-ENCODED di UpstreamUri punto, ma il suo URL è un ibrido: `token` è un @PathVariable, qu...
Inoltra i byte di query del chiamante sui proxy pubblici
Il gateway ha interrotto le stringhe di query a doppia codifica in avanti in 3c24d32, ma quattro altri proxy in questo servizio ancora concatenati byte già codi...
Inoltra i byte di query del chiamante invece di codificarli due volte
Ogni URL che questo gateway costruisce è assemblato da getRequestURI() e getQueryString() — entrambi già codificati per cento — ed è stato poi consegnato a Rest...
Fornire regole di accesso inquilino al gateway
Questo filtro è inerte da quando è stato scritto. risolvereOrgId lettura org:dominio: da Redis, nulla ha mai scritto quella chiave, e il ritorno nullo è caduto ...
Percorso del fornitore di meeting OAuth callback
Zoom e Microsoft reindirizzare il browser a questo gateway dopo un org autorizza L'app di Kamo. Il popup atterra qui senza inquilino sessione — il org viaggia i...
Harden il kubectl download contro l'egresso sfacciato [skip ci]
dl.k8s.io sopra l'ingresso del corridore cade in modo intermittente metà del trasferimento: curl: (56) OpenSSL SSL read: decryption fail or bad record mac che f...
Proxy il percorso pubblico AI->human handoff
Aggiunta di POST. proxied a MediaService accanto alla sua creazioneSupportSession fratello. Senza questo la funzione di consegna era morta all'arrivo: il punto...
Route /api/email + /api/supporto attraverso l'host api
(EmailService) e Supporto (MediaService, stesso a monte di /api/media) sono stati dirottato → 404. Aggiungere sia in avanti che correggere e-mail. service.url d...
GET /api/pubblico-chat/bootstrap gateway route
Aggiungi un endpoint bootstrap che riutilizza il proxy esistenteCon pipeline Auth (valida chiave + origine opt-in + PUBLIC CHAT portata + tasso-limit + X-Public...
Deferire l'orientamento obbligatorio alla Fase 1 — Opt-in OriginMatcher (permetta la lista dei permessi/origine mancante)
I widget Phase-0 chiamano ancora tramite il proxy server-side, quindi il blocco di origine non ha beneficio ancora e ogni chiave a catena pubblica dal vivo ha u...
Non memorizzare le chiavi in cache sugli errori a valle transitori (solo su invalidità definitiva)
Solo cache-invalidate chiavi genuinamente invalide, non Origin-denied (previene-chiave DoS)
Su una fredda cache Redis, una chiave pubblica valida con un'origine sbagliata/absent memorizzato come INVALID per 60s, negando le richieste di origine corretta...
La stretta di mano del relè di WS Bind a Origin + aggiungere il ripiegamento della chiave di convalida a freddo
Estrae la convalida privata di PublicChatControllerViaDownstream() in un condiviso PublicChatKeyResolver fagiolo così PublicChatWebSocketHandler può riutilizzar...
Verificare ***** PoW al bordo della sessione pubblica creare (applicato quando payload presente)
Proxy GET /lo-presenza a MediaService
Il proxy di supporto-sessione già inoltra il corpo grezzo, quindi il widget fuso preferenzialeAgentMemberId raggiunge MediaService intatto. Aggiungi il proxy di...
Passaggio pubblico per email OAuth provider callback
Avanti GET *****************************************************************************************************************************************************...
Inoltrare x-twitter-webhooks-signature sul bordo social webhook (X / attività account Twitter)
Migra a k1m1 (registry+kubeconfig da k1m1, drop k2m1, semplice installazione kubectl)
Gateway API e-sign programmatico pubblico (ambito API SIGNATURE)
Aggiungi /api/public/esign/** a PublicApiController: convalida la chiave API org, richiede il campo API SIGNATURE, limiti di velocità e inoltro a ESigService bu...
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 per upload di supporto kamo-asterisk
POST /api/voip/registrazioni/upload accetta corpi multiparti da supporto kamo-asterisk in esecuzione su host FreePBX. Convalida la X-Api-Key ha il nuovo VOIP RE...
Aumentare il limite di dimensione del file di upload a 500MB
Spring Boot predefinisce il tappo di parti multipart a 1MB, causando l'immagine di sfondo caricamenti per fallire con 500 in request.getParts(). Match SecurityS...
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 ...
Rimuovere duplicati CorsFilter e striscia a monte intestazioni CORS nel gateway
WebConfig.java ha definito un secondo fagiolo CorsFilter in competizione con CorsConfig. Java bean, rischiando di scrivere l'intestazione duplicata. L'ha cancel...
Impostare l'applicazione/json per i corpi JSON inoltrati a SecurityService
RestTemplate a monte potrebbe lasciare Contenuto-Tipo incompatibile con la primavera @RequestBody, causando 415. Dopo aver letto il corpo grezzo, forza APPLICAT...
Come quello che vedi la spedizione?
Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.