Kamwe mbele ya wateja-kutolewa utambulisho headers upstream
kuendeleza mwelekeo wa mbele, upande wa nyuma na nyuma. Kwa upande mwingine, upande wa pili, ni upande wa kulia wa mchezaji. kwenye maombi ya juu. Billing Servi...
Nenda kwenye wavuti ya SMS, ambayo haijafikia chochote
Al Azhar yasisitiza kuwa kuvaa Hijabu ni lazima kwa mujibu maamurisho ya Qur'ani Tukufu Na hii ni kwa ajili ya /api /voip / / / / / / / voip / / / / / / / / / /...
Nenda kwenye wavuti ya SMS, ambayo haijafikia chochote
Al Azhar yasisitiza kuwa kuvaa Hijabu ni lazima kwa mujibu maamurisho ya Qur'ani Tukufu Na hii ni kwa ajili ya /api /voip / / / / / / / voip / / / / / / / / / /...
Jaribu kuweka kwa digest, si kwa tag
Ahadi ya awali inaacha "kuweka picha" kuwa kimya hakuna-op. Hii inathibitisha kuwa matokeo: baada ya rollout, tag ni kutatuliwa kwa digest katika Usajili na Vio...
Ujenzi wa mradi huo haukuleta chochote na uliripoti mafanikio
Picha ni tagged na SHA ahadi, hivyo kujenga upya ahadi hiyo kuzalisha Mfano wa picha sawa. "Kuweka picha" kisha hakuna mabadiliko, Kufukuzwa ni kamwe kuguswa, '...
Drop the /api/settings forward, which pointed at nothing
EmailService serves the sync-integration controller at **************** not /api/settings/integrations ā so that forward reached a path the service does not map...
Route /api/contacts, /api/calendar and /api/settings to EmailService
KamoMobile's contacts and calendar screens 404'd on every request. Neither path was routed at the api host, so nothing reached EmailService and the service logg...
Run two pods
replicas 1 -> 2. This service runs no @Scheduled work and binds no exclusive NATS durable, so a second pod duplicates nothing ā it is stateless request serving,...
Give the rollout room for the 15s minReadySeconds now costs
progressDeadlineSeconds was 60. That is the window a rollout has to show progress before Kubernetes gives up and marks it failed, and the previous commit added ...
Restore this manifest's CRLF line endings
The previous commit rewrote the file with a script that normalised it to LF, which is a whole-file diff for a change that touched a dozen lines. No content chan...
APIService never shut down gracefully at all
Deploys replaced the only pod of each service with nothing to catch the requests in flight. Three settings, applied across the fleet: - preStop sleeps 10s befo...
API-key surface for live call events from a customer PBX
Companion to VoipRecordingUploadController, on a deliberately separate VOIP_CALL_EVENTS scope: uploading a recording after the fact and making somebody's phone ...
Forward /api/email/oauth/callback to EmailService
Google's OAuth redirect target. Same shape as the email and meet provider callbacks beside it: public and sessionless, because the popup lands on this gateway o...
Forward the tracking beacon to MediaService
Clones forwardPublicWebinar rather than the generic forward(): that method prints every URI, header map and body length to stdout with no level, and a visitor b...
Rebuild against shared-library @Lob LONGVARCHAR fix
Hibernate's PostgreSQL dialect read @Lob String columns as OIDs via getLong(). Affects notes, contacts, calendar, OAuth tokens, IMAP passwords, email campaign b...
Point at YugabyteDB and use PostgreSQLDialect
CockroachDB has been replaced by YugabyteDB. Connection strings move from cockroachdb-public:26257 to yb-tserver-service:5433, and the Hibernate dialect from **...
Mirror Maven Central through the Google GCS copy
Every Docker stage starts from a cold ~/.m2 and refetches the whole dependency tree, so Central sees the full weight of every concurrent service build. It answe...
Encode the decoded token exactly once on the way upstream
21670e5 routed SocialWebhookController through UpstreamUri's FULLY-PRE-ENCODED entry point, but its URL is a hybrid: `token` is an @PathVariable, so Spring hand...
Forward the caller's query bytes on the public-facing proxies
The gateway stopped double-encoding forwarded query strings in 3c24d32, but four other proxies in this service still concatenated already-percent-encoded bytes ...
Forward the caller's query bytes instead of encoding them twice
Every URL this gateway builds is assembled from getRequestURI() and getQueryString() ā both already percent-encoded ā and was then handed to RestTemplate as a S...
Enforce tenant access rules at the gateway
This filter has been inert since it was written. resolveOrgId read org:domain:<host> from Redis, nothing ever wrote that key, and the null return fell through t...
Route the meeting provider OAuth callback
Zoom and Microsoft redirect the browser to this gateway after an org authorises Kamo's app. The popup lands here with no tenant session ā the org travels in ?st...
Harden the kubectl download against flaky egress [skip ci]
dl.k8s.io over the runner's egress intermittently drops mid-transfer: curl: (56) OpenSSL SSL_read: decryption failed or bad record mac which fails the deploy ...
Proxy the public AI->human handoff route
Adds POST **************** proxied to MediaService alongside its createSupportSession sibling. Without this the handoff feature was dead on arrival: MediaServi...
Route /api/email + /api/support through the api host
(EmailService) and Support (MediaService, same upstream as /api/media) were unrouted ā 404. Add both forwards and fix email.service.url from a localhost default...
GET /api/public-chat/bootstrap gateway route
Add bootstrap endpoint that reuses the existing proxyWithAuth pipeline (key validation + opt-in origin + PUBLIC_CHAT scope + rate-limit + X-Public-Chat-Key-Hash...
Kutetea lazima-origin kwa Awamu ya 1 - OriginMatcher opt-in (empty kuruhusu-list / missing asili kuruhusiwa)
Phase-0 widgets still call via their server-side proxy, so origin-locking has no benefit yet and every live public-chat key has an empty allow-list. Strict enfo...
Usihifadhi funguo za kuthibitisha kwenye makosa ya chini ya mtiririko (tu kwenye batili ya mwisho)
Tu cache-kuthibitisha funguo kweli-invalid, si asili-denied (prevents halali-key DoS)
Kwenye cache ya baridi ya Redis, ufunguo wa wazi wa umma na asili isiyo sahihi / isiyokubalika ilikuwa Imehifadhiwa kama INVALID kwa 60s, kukataa maombi ya asil...
Bind WS relay handshake kwa asili + kuongeza baridi-cache muhimu uthibitisho fallback
Inaondoa PublicChatController ya binafsi kuhalalishaViaDownstream () katika pamoja PublicChatKeyResolver bean hivyo PublicChatWebSocketHandler inaweza kutumia t...
Verify *** PoW at the edge on public session create (enforced when payload present)
Make public-chat origin allow-list mandatory (deny on missing Origin / empty list)
Proxy GET /lo-presence to MediaService
Wakala wa uchunguzi wa msaada tayari hupeleka mwili mbichi, kwa hivyo widget ya kuunganishwa Huduma bora za Media Service hazipatikani. Ongeza nguvu za kiume kw...
Public passthrough for email OAuth provider callback
Forward GET **************** to EmailService sessionlessly (strips auth, no redirect following), mirroring the RingCentral OAuth callback. This is the fixed pub...
Forward x-twitter-webhooks-signature on the social webhook edge (X/Twitter Account Activity)
Migrate to k1m1 (registry+kubeconfig from k1m1, drop k2m1, simple kubectl install)
Public programmatic e-sign API gateway (API_SIGNATURE scope)
Add /api/public/esign/** to PublicApiController: validates the org API key, requires the API_SIGNATURE scope, rate-limits, and forwards to ESigService's interna...
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 uploads
POST /api/voip/recordings/upload accepts multipart bodies from kamo-asterisk-support running on FreePBX hosts. Validates the X-Api-Key has the new VOIP_RECORDIN...
Raise file upload size limit to 500MB
Spring Boot defaults cap multipart parts at 1MB, causing background image uploads to fail with 500 in request.getParts(). Match SecurityService's existing 500MB...
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 ...
Remove duplicate CorsFilter and strip upstream CORS headers in gateway
WebConfig.java defined a second CorsFilter bean competing with CorsConfig.java's bean, risking duplicate header writes. Deleted it so only one CorsFilter exists...
Set application/json for JSON bodies forwarded to SecurityService
RestTemplate to upstream could leave Content-Type incompatible with Spring @RequestBody, causing 415. After reading the raw body, force APPLICATION_JSON when th...
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.