From 8721ab65ceec19cb2d38e00fc3b245d1d762ad57 Mon Sep 17 00:00:00 2001 From: Fabricio Silva Date: Sat, 17 Jun 2023 13:44:20 +0100 Subject: [PATCH] fix(irc): urlencode SSEKey for SSE streams (#990) apply RFC4648 to base64 sseKey to fix urlEncoding --- internal/irc/service.go | 2 +- web/src/screens/settings/Irc.tsx | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/irc/service.go b/internal/irc/service.go index 8c29abd..9eb7dd7 100644 --- a/internal/irc/service.go +++ b/internal/irc/service.go @@ -654,5 +654,5 @@ func (s *service) removeSSEStream(networkId int64, channel string) { } func genSSEKey(networkId int64, channel string) string { - return base64.URLEncoding.EncodeToString([]byte(fmt.Sprintf("%d%s", networkId, strings.ToLower(channel)))) + return base64.RawURLEncoding.EncodeToString([]byte(fmt.Sprintf("%d%s", networkId, strings.ToLower(channel)))) } diff --git a/web/src/screens/settings/Irc.tsx b/web/src/screens/settings/Irc.tsx index 16dccee..86e4a3f 100644 --- a/web/src/screens/settings/Irc.tsx +++ b/web/src/screens/settings/Irc.tsx @@ -629,7 +629,11 @@ export const Events = ({ network, channel }: EventsProps) => { }; useEffect(() => { - const key = btoa(`${network.id}${channel.toLowerCase()}`); + // Following RFC4648 + const key = window.btoa(`${network.id}${channel.toLowerCase()}`) + .replaceAll("+", "-") + .replaceAll("/", "_") + .replaceAll("=", ""); const es = APIClient.irc.events(key); es.onmessage = (event) => {