summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2016-01-21 10:01:15 -0500
committerChristopher Speller <crspeller@gmail.com>2016-01-21 10:01:15 -0500
commitc7faefbedcf540e938ab79e498ca86fabc967c5b (patch)
tree731262af8f8ff916a3e0d9260864804c0aaf84af
parent868eece9879131e9f2093a0e858533c9df76b55c (diff)
parentff8df5bf7d45ddd39df8b265ed6af07bd3932d55 (diff)
downloadchat-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.md7
-rw-r--r--model/config.go10
-rw-r--r--utils/config.go3
-rw-r--r--web/react/stores/socket_store.jsx2
-rw-r--r--web/react/utils/utils.jsx11
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;