Merge pull request #1924 from loafoe/master

[#1923] Make Websocket ports configurable
This commit is contained in:
Christopher Speller
2016-01-21 10:01:15 -05:00
5 changed files with 32 additions and 1 deletions

View File

@@ -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```

View File

@@ -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 {

View File

@@ -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
}

View File

@@ -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

View File

@@ -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;