diff options
author | Christopher Speller <crspeller@gmail.com> | 2016-01-21 10:01:15 -0500 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-01-21 10:01:15 -0500 |
commit | c7faefbedcf540e938ab79e498ca86fabc967c5b (patch) | |
tree | 731262af8f8ff916a3e0d9260864804c0aaf84af | |
parent | 868eece9879131e9f2093a0e858533c9df76b55c (diff) | |
parent | ff8df5bf7d45ddd39df8b265ed6af07bd3932d55 (diff) | |
download | chat-c7faefbedcf540e938ab79e498ca86fabc967c5b.tar.gz chat-c7faefbedcf540e938ab79e498ca86fabc967c5b.tar.bz2 chat-c7faefbedcf540e938ab79e498ca86fabc967c5b.zip |
Merge pull request #1924 from loafoe/master
[#1923] Make Websocket ports configurable
-rw-r--r-- | doc/install/Configuration-Settings.md | 7 | ||||
-rw-r--r-- | model/config.go | 10 | ||||
-rw-r--r-- | utils/config.go | 3 | ||||
-rw-r--r-- | web/react/stores/socket_store.jsx | 2 | ||||
-rw-r--r-- | web/react/utils/utils.jsx | 11 |
5 files changed, 32 insertions, 1 deletions
diff --git a/doc/install/Configuration-Settings.md b/doc/install/Configuration-Settings.md index 31d4551f6..7ee440b7c 100644 --- a/doc/install/Configuration-Settings.md +++ b/doc/install/Configuration-Settings.md @@ -41,6 +41,13 @@ Set the number of days before SSO sessions expire. ```"SessionCacheInMinutes" : 10``` Set the number of minutes to cache a session in memory. +```"WebsocketSecurePort": 443``` +The port to use for secure websocket connections being initiated from the client. By default wss:// uses port 443. Some server configurations (e.g. Cloudfoundry) support wss on a different port. + +```"WebsocketPort": 80``` +The port to use for websocket connections being initiated from the client. By default ws:// uses port 80. + + #### Webhooks ```"EnableIncomingWebhooks": true``` diff --git a/model/config.go b/model/config.go index ed56ed0c7..640eb49e5 100644 --- a/model/config.go +++ b/model/config.go @@ -40,6 +40,8 @@ type ServiceSettings struct { SessionLengthMobileInDays *int SessionLengthSSOInDays *int SessionCacheInMinutes *int + WebsocketSecurePort *int + WebsocketPort *int } type SSOSettings struct { @@ -330,6 +332,14 @@ func (o *Config) SetDefaults() { o.ServiceSettings.SessionCacheInMinutes = new(int) *o.ServiceSettings.SessionCacheInMinutes = 10 } + if o.ServiceSettings.WebsocketPort == nil { + o.ServiceSettings.WebsocketPort = new(int) + *o.ServiceSettings.WebsocketPort = 80 + } + if o.ServiceSettings.WebsocketSecurePort == nil { + o.ServiceSettings.WebsocketSecurePort = new(int) + *o.ServiceSettings.WebsocketSecurePort = 443 + } } func (o *Config) IsValid() *AppError { diff --git a/utils/config.go b/utils/config.go index 12d03b5de..c2ae1f7a0 100644 --- a/utils/config.go +++ b/utils/config.go @@ -223,5 +223,8 @@ func getClientConfig(c *model.Config) map[string]string { props["EnableLdap"] = strconv.FormatBool(*c.LdapSettings.Enable) + props["WebsocketPort"] = fmt.Sprintf("%v", *c.ServiceSettings.WebsocketPort) + props["WebsocketSecurePort"] = fmt.Sprintf("%v", *c.ServiceSettings.WebsocketSecurePort) + return props } diff --git a/web/react/stores/socket_store.jsx b/web/react/stores/socket_store.jsx index 24fa79ca6..f1fade305 100644 --- a/web/react/stores/socket_store.jsx +++ b/web/react/stores/socket_store.jsx @@ -49,7 +49,7 @@ class SocketStoreClass extends EventEmitter { protocol = 'wss://'; } - var connUrl = protocol + location.host + '/api/v1/websocket?' + Utils.getSessionIndex(); + var connUrl = protocol + location.host + ((/:\d+/).test(location.host) ? '' : Utils.getWebsocketPort(protocol)) + '/api/v1/websocket?' + Utils.getSessionIndex(); if (this.failCount === 0) { console.log('websocket connecting to ' + connUrl); //eslint-disable-line no-console diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx index 32373b4a3..71fd0852b 100644 --- a/web/react/utils/utils.jsx +++ b/web/react/utils/utils.jsx @@ -1101,6 +1101,17 @@ export function getFileName(path) { return split[split.length - 1]; } +// Gets the websocket port to use. Configurable on the server. +export function getWebsocketPort(protocol) { + if ((/^wss:/).test(protocol)) { // wss:// + return ':' + global.window.mm_config.WebsocketSecurePort; + } + if ((/^ws:/).test(protocol)) { + return ':' + global.window.mm_config.WebsocketPort; + } + return ''; +} + export function getSessionIndex() { if (global.window.mm_session_token_index >= 0) { return 'session_token_index=' + global.window.mm_session_token_index; |