mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-02-17 00:40:56 -05:00
Added redirection to Chinese servers based on location and language
This commit is contained in:
parent
7f9301e8c6
commit
cfa09a3239
3 changed files with 23 additions and 0 deletions
|
@ -48,6 +48,7 @@
|
|||
"connect": "2.7.x",
|
||||
"express": "~3.0.6",
|
||||
"express-useragent": "~0.0.9",
|
||||
"geoip-lite": "^1.1.6",
|
||||
"graceful-fs": "~2.0.1",
|
||||
"gridfs-stream": "0.4.x",
|
||||
"jsondiffpatch": "0.1.17",
|
||||
|
|
|
@ -3,6 +3,7 @@ config = {}
|
|||
config.unittest = process.argv.indexOf('--unittest') > -1
|
||||
|
||||
config.tokyo = process.env.TOKYO or false
|
||||
config.chinaDomain = "http://cn.codecombat.com"
|
||||
config.port = process.env.COCO_PORT or process.env.COCO_NODE_PORT or 3000
|
||||
config.ssl_port = process.env.COCO_SSL_PORT or process.env.COCO_SSL_NODE_PORT or 3443
|
||||
config.cloudflare =
|
||||
|
|
|
@ -5,6 +5,7 @@ useragent = require 'express-useragent'
|
|||
fs = require 'graceful-fs'
|
||||
log = require 'winston'
|
||||
compressible = require 'compressible'
|
||||
geoip = require 'geoip-lite'
|
||||
|
||||
database = require './server/commons/database'
|
||||
baseRoute = require './server/routes/base'
|
||||
|
@ -77,6 +78,25 @@ setupPassportMiddleware = (app) ->
|
|||
app.use(authentication.initialize())
|
||||
app.use(authentication.session())
|
||||
|
||||
setupChinaRedirectMiddleware = (app) ->
|
||||
isInChina = (req) ->
|
||||
unless config.tokyo
|
||||
ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress
|
||||
geo = geoip.lookup(ip)
|
||||
if geo?.country isnt "CN" then return false
|
||||
firstAcceptedLanguage = req.acceptedLanguages[0]
|
||||
isChinese = firstAcceptedLanguage.indexOf? "zh"
|
||||
return isChinese? and isChinese isnt -1
|
||||
else
|
||||
return true
|
||||
|
||||
app.use (req, res, next) ->
|
||||
if isInChina req
|
||||
res.writeHead 302, "Location": config.chinaDomain + req.url
|
||||
res.end()
|
||||
else
|
||||
next()
|
||||
|
||||
setupOneSecondDelayMiddleware = (app) ->
|
||||
if(config.slow_down)
|
||||
app.use((req, res, next) -> setTimeout((-> next()), 1000))
|
||||
|
@ -111,6 +131,7 @@ setupTrailingSlashRemovingMiddleware = (app) ->
|
|||
next()
|
||||
|
||||
exports.setupMiddleware = (app) ->
|
||||
setupChinaRedirectMiddleware app
|
||||
setupMiddlewareToSendOldBrowserWarningWhenPlayersViewLevelDirectly app
|
||||
setupExpressMiddleware app
|
||||
setupPassportMiddleware app
|
||||
|
|
Loading…
Reference in a new issue