|
@@ -7,31 +7,35 @@ if Settings.redis.clsi_cookie_secondary?
|
|
|
Cookie = require('cookie')
|
|
Cookie = require('cookie')
|
|
|
logger = require "logger-sharelatex"
|
|
logger = require "logger-sharelatex"
|
|
|
|
|
|
|
|
-buildKey = (project_id)->
|
|
|
|
|
- return "clsiserver:#{project_id}"
|
|
|
|
|
|
|
|
|
|
clsiCookiesEnabled = Settings.clsiCookie?.key? and Settings.clsiCookie.key.length != 0
|
|
clsiCookiesEnabled = Settings.clsiCookie?.key? and Settings.clsiCookie.key.length != 0
|
|
|
|
|
|
|
|
|
|
|
|
|
-module.exports = ClsiCookieManager =
|
|
|
|
|
|
|
+module.exports = (backendGroup)->
|
|
|
|
|
+
|
|
|
|
|
+ buildKey : (project_id)->
|
|
|
|
|
+ if backendGroup?
|
|
|
|
|
+ return "clsiserver:#{backendGroup}:#{project_id}"
|
|
|
|
|
+ else
|
|
|
|
|
+ return "clsiserver:#{project_id}"
|
|
|
|
|
|
|
|
_getServerId : (project_id, callback = (err, serverId)->)->
|
|
_getServerId : (project_id, callback = (err, serverId)->)->
|
|
|
- rclient.get buildKey(project_id), (err, serverId)->
|
|
|
|
|
|
|
+ rclient.get @buildKey(project_id), (err, serverId)=>
|
|
|
if err?
|
|
if err?
|
|
|
return callback(err)
|
|
return callback(err)
|
|
|
if !serverId? or serverId == ""
|
|
if !serverId? or serverId == ""
|
|
|
- return ClsiCookieManager._populateServerIdViaRequest project_id, callback
|
|
|
|
|
|
|
+ return @_populateServerIdViaRequest project_id, callback
|
|
|
else
|
|
else
|
|
|
return callback(null, serverId)
|
|
return callback(null, serverId)
|
|
|
|
|
|
|
|
|
|
|
|
|
_populateServerIdViaRequest :(project_id, callback = (err, serverId)->)->
|
|
_populateServerIdViaRequest :(project_id, callback = (err, serverId)->)->
|
|
|
url = "#{Settings.apis.clsi.url}/project/#{project_id}/status"
|
|
url = "#{Settings.apis.clsi.url}/project/#{project_id}/status"
|
|
|
- request.get url, (err, res, body)->
|
|
|
|
|
|
|
+ request.get url, (err, res, body)=>
|
|
|
if err?
|
|
if err?
|
|
|
logger.err err:err, project_id:project_id, "error getting initial server id for project"
|
|
logger.err err:err, project_id:project_id, "error getting initial server id for project"
|
|
|
return callback(err)
|
|
return callback(err)
|
|
|
- ClsiCookieManager.setServerId project_id, res, (err, serverId)->
|
|
|
|
|
|
|
+ @setServerId project_id, res, (err, serverId)->
|
|
|
if err?
|
|
if err?
|
|
|
logger.err err:err, project_id:project_id, "error setting server id via populate request"
|
|
logger.err err:err, project_id:project_id, "error setting server id via populate request"
|
|
|
callback(err, serverId)
|
|
callback(err, serverId)
|
|
@@ -43,7 +47,7 @@ module.exports = ClsiCookieManager =
|
|
|
setServerId: (project_id, response, callback = (err, serverId)->)->
|
|
setServerId: (project_id, response, callback = (err, serverId)->)->
|
|
|
if !clsiCookiesEnabled
|
|
if !clsiCookiesEnabled
|
|
|
return callback()
|
|
return callback()
|
|
|
- serverId = ClsiCookieManager._parseServerIdFromResponse(response)
|
|
|
|
|
|
|
+ serverId = @_parseServerIdFromResponse(response)
|
|
|
if !serverId? # We don't get a cookie back if it hasn't changed
|
|
if !serverId? # We don't get a cookie back if it hasn't changed
|
|
|
return callback()
|
|
return callback()
|
|
|
if rclient_secondary?
|
|
if rclient_secondary?
|
|
@@ -53,19 +57,19 @@ module.exports = ClsiCookieManager =
|
|
|
|
|
|
|
|
_setServerIdInRedis: (rclient, project_id, serverId, callback = (err) ->) ->
|
|
_setServerIdInRedis: (rclient, project_id, serverId, callback = (err) ->) ->
|
|
|
multi = rclient.multi()
|
|
multi = rclient.multi()
|
|
|
- multi.set buildKey(project_id), serverId
|
|
|
|
|
- multi.expire buildKey(project_id), Settings.clsiCookie.ttl
|
|
|
|
|
|
|
+ multi.set @buildKey(project_id), serverId
|
|
|
|
|
+ multi.expire @buildKey(project_id), Settings.clsiCookie.ttl
|
|
|
multi.exec callback
|
|
multi.exec callback
|
|
|
|
|
|
|
|
clearServerId: (project_id, callback = (err)->)->
|
|
clearServerId: (project_id, callback = (err)->)->
|
|
|
if !clsiCookiesEnabled
|
|
if !clsiCookiesEnabled
|
|
|
return callback()
|
|
return callback()
|
|
|
- rclient.del buildKey(project_id), callback
|
|
|
|
|
|
|
+ rclient.del @buildKey(project_id), callback
|
|
|
|
|
|
|
|
getCookieJar: (project_id, callback = (err, jar)->)->
|
|
getCookieJar: (project_id, callback = (err, jar)->)->
|
|
|
if !clsiCookiesEnabled
|
|
if !clsiCookiesEnabled
|
|
|
return callback(null, request.jar())
|
|
return callback(null, request.jar())
|
|
|
- ClsiCookieManager._getServerId project_id, (err, serverId)=>
|
|
|
|
|
|
|
+ @_getServerId project_id, (err, serverId)=>
|
|
|
if err?
|
|
if err?
|
|
|
logger.err err:err, project_id:project_id, "error getting server id"
|
|
logger.err err:err, project_id:project_id, "error getting server id"
|
|
|
return callback(err)
|
|
return callback(err)
|