From bcad497c7fbb4dba48a65b34b6051e95038f47a0 Mon Sep 17 00:00:00 2001 From: Vincent Date: Tue, 7 Jul 2020 13:20:26 +1000 Subject: [PATCH] regex-for-http --- js/modules/loki_public_chat_api.js | 2 ++ ts/session/types/OpenGroup.ts | 22 +++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/js/modules/loki_public_chat_api.js b/js/modules/loki_public_chat_api.js index e37c01f3c..bbe64b8f6 100644 --- a/js/modules/loki_public_chat_api.js +++ b/js/modules/loki_public_chat_api.js @@ -7,6 +7,8 @@ const nodeFetch = require('node-fetch'); const validOpenGroupServer = async serverUrl => { // test to make sure it's online (and maybe has a valid SSL cert) try { + console.log('[vince] loki_public_chat_api --> serverUrl:', serverUrl); + const url = new URL(serverUrl); if (window.lokiFeatureFlags.useFileOnionRequests) { diff --git a/ts/session/types/OpenGroup.ts b/ts/session/types/OpenGroup.ts index 01c148515..b823b55f3 100644 --- a/ts/session/types/OpenGroup.ts +++ b/ts/session/types/OpenGroup.ts @@ -7,8 +7,10 @@ interface OpenGroupParams { } export class OpenGroup { + // Matches prefixes https:// http:// plus no prefix. + // Servers without prefix default to https:// private static readonly serverRegex = new RegExp( - '^([\\w-]{2,}.){1,2}[\\w-]{2,}$' + '^(https?:\\/\\/){0,1}([\\w-]{2,}.){1,2}[\\w-]{2,}$' ); private static readonly groupIdRegex = new RegExp( '^publicChat:[0-9]*@([\\w-]{2,}.){1,2}[\\w-]{2,}$' @@ -17,10 +19,22 @@ export class OpenGroup { public readonly channel: number; public readonly groupId?: string; public readonly conversationId: string; + private readonly rawServer: string; constructor(params: OpenGroupParams) { - const strippedServer = params.server.replace('https://', ''); - this.server = strippedServer; + // https will be prepended unless explicitly http + const prefixRegex = new RegExp('https:\//\//'); + this.rawServer = params.server.replace(prefixRegex, ''); + + const isHttps = Boolean(params.server.match('^(https:\/\/){1}')); + const isHttp = Boolean(params.server.match('^(http:\/\/){1}')); + const hasNoPrefix = !(params.server.match(prefixRegex)); + + console.log('[vince] isHttps:', isHttps); + console.log('[vince] isHttp:', isHttp); + console.log('[vince] hasNoPrefix:', hasNoPrefix); + + this.server = params.server; // Validate server format const isValid = OpenGroup.serverRegex.test(this.server); @@ -28,6 +42,8 @@ export class OpenGroup { throw Error('an invalid server or groupId was provided'); } + console.log('[vince] OpenGroup --> constructor:', this.server); + this.channel = params.channel; this.conversationId = params.conversationId; this.groupId = OpenGroup.getGroupId(this.server, this.channel);