diff --git a/gm-server/config/config.sq2.ts b/gm-server/config/config.sq2.ts new file mode 100644 index 000000000..9504fd802 --- /dev/null +++ b/gm-server/config/config.sq2.ts @@ -0,0 +1,46 @@ +import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; +import defaultConfig from './config.default'; + +export default (appInfo: EggAppInfo) => { + const config = {} as PowerPartial; + + // add your special config in here + + config.mongoose = { + url: 'mongodb://dbop:zyzSQ2021@dds-8vb7d5060bb271d41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7d5060bb271d42.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7d5060bb271d43.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-508112745', // 内网 + options: { useNewUrlParser: true, useUnifiedTopology: true }, + }; + + config.gmmongoose = { + url: 'mongodb://dbop:zyzSQGm2021@dds-8vb5de93552a67941.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5de93552a67942.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5de93552a67943.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?readPreference=secondary&replicaSet=mgset-508112742', // 内网 + options: { useNewUrlParser: true, useUnifiedTopology: true }, + }; + + config.redis = { + url: 'r-8vb7l1s8ne4vm6v6x6.redis.zhangbei.rds.aliyuncs.com', // 内网 + pw: 'PANl3Vr2eozkq4N2' + }; + + + config.customLogger = { + linkLogger: { + file: '/zyz_logs/gm-server/link-log.log', + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + + config.logrotator = { + filesRotateBySize: [ + '/zyz_logs/gm-server/link-log.log', + ], + maxFileSize: 1024, + }; + + // the return config will combines to EggAppConfig + return { + ...defaultConfig(appInfo), + ...config, + }; +}; diff --git a/pushdocker.sh b/pushdocker.sh index 5d00411c9..948aa1163 100755 --- a/pushdocker.sh +++ b/pushdocker.sh @@ -33,7 +33,7 @@ elif [ ${1} == 'sq1' ] ; then elif [ ${1} == 'sq2' ] ; then destUrl="root@sq2:/root/zyz/" port=3737 - env='sq1' + env='sq2' elif [ ${1} == 'sq3' ] ; then destUrl="root@sq3:/root/zyz/" port=3737 diff --git a/web-server/app/middleware/proxy.ts b/web-server/app/middleware/proxy.ts index 24f086987..581749f89 100644 --- a/web-server/app/middleware/proxy.ts +++ b/web-server/app/middleware/proxy.ts @@ -1,4 +1,67 @@ +import { RegionModel } from '@db/Region'; +import { ServerlistModel } from '@db/Serverlist'; import proxy from 'egg-http-proxy-middleware'; -module.exports = proxy; +module.exports = () => { + return async function (ctx, next) { + if(!ctx.app.config.envToHost) { + let envToHost = new Map(); + let regions = await RegionModel.getAllRegion(); + for(let { env, webHost } of regions) { + envToHost.set(env, webHost); + } + ctx.app.config.envToHost = envToHost; + } + if(!ctx.app.config.sidToHost) { + let envToHost = ctx.app.config.envToHost||new Map(); + let sidToHost = new Map(); + let servers = await ServerlistModel.getAllServerList(); + for(let { id, env } of servers) { + let webHost = envToHost.get(env); + sidToHost.set(id.toString(), webHost); + } + ctx.app.config.sidToHost = sidToHost; + } + let options = {}; + for(let [env, webHost] of ctx.app.config.envToHost) { + options[`/web/${env}/`] = { + target: webHost, + changeOrigin: true, + secure: true, + pathRewrite: function(path) { + console.log('proxy', path, path.replace(`/web/${env}/`, '/web/')) + return path.replace(`/web/${env}/`, '/web/') + } + } + } + if(ctx.request.header['is-proxy'] != 'true') { + let url = getProxyUrl(ctx.request.url); + if(url) { + let sid = ctx.request.method == 'GET'? ctx.query.sid.toString(): ctx.request.body.sid.toString(); + options[url] = { + target: ctx.app.config.sidToHost.get(sid), + changeOrigin: true, + secure: true, + headers: { "is-proxy": "true" } + } + } + } + + return proxy(options)(ctx, next); + }; + }; + + function getProxyUrl(url: string) { + const urls = [ + '/cb/treatusername', + '/cb/treatguildname', + '/cb/getguildbyuser', + '/cb/refundioscallback' + ]; + for(let str of urls) { + if(url && url.startsWith(str)) { + return str; + } + } + } \ No newline at end of file diff --git a/web-server/config/config.default.ts b/web-server/config/config.default.ts index 24b7ae133..f8964e79f 100644 --- a/web-server/config/config.default.ts +++ b/web-server/config/config.default.ts @@ -18,7 +18,7 @@ export default (appInfo: EggAppInfo) => { allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH', }; // add your egg config in here - config.middleware = [ 'parmsDecode', 'getIp', 'proxy' ]; + config.middleware = [ 'parmsDecode', 'getIp' ]; config.mongoose = { url: 'mongodb://dbop:zyzdbopbantu@dds-8vbdb47c6fb58a541.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vbdb47c6fb58a542.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-500808098', // 内网 @@ -75,32 +75,6 @@ export default (appInfo: EggAppInfo) => { sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`, }; - - let regions = [ // 大区数据 - { env: 'stable', name: "常山少年", domain: 'http://zyz_gm.trgame.cn' }, - { env: 'alpha', name: "测试服", domain: 'http://pinus_gm_test.trgame.cn' }, - { env: 'dev', name: "开发服", domain: 'http://zyzdev_gm.trgame.cn' }, - { env: 'isbn', name: "办好福", domain: 'http://zyz_isbn_gm.trgame.cn' }, - // 37测试服组 - { env: 'sq1', name: "37测试1服", domain: 'http://gm-sgzzyz.yev242.com' }, - ]; - config.regions = regions; - - let httpProxy: any = {}; - for(let { env, domain } of regions) { - - httpProxy[`/web/${env}/`] = { - target: domain, - changeOrigin: true, - secure: true, - pathRewrite: function(path) { - console.log('proxy', path, path.replace(`/web/${env}/`, '/web/')) - return path.replace(`/web/${env}/`, '/web/') - } - } - } - config.proxy = httpProxy; - // the return config will combines to EggAppConfig return { ...config, diff --git a/web-server/config/config.distribute.ts b/web-server/config/config.distribute.ts new file mode 100644 index 000000000..28eab65a6 --- /dev/null +++ b/web-server/config/config.distribute.ts @@ -0,0 +1,13 @@ +import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; +import defaultConfig from './config.default'; + +export default (appInfo: EggAppInfo) => { + const config = {} as PowerPartial; + config.middleware = [ 'parmsDecode', 'getIp', 'proxy' ]; + + // the return config will combines to EggAppConfig + return { + ...defaultConfig(appInfo), + ...config + }; +}; diff --git a/web-server/config/config.local.ts b/web-server/config/config.local.ts index 9f9f8de6d..9a543f208 100644 --- a/web-server/config/config.local.ts +++ b/web-server/config/config.local.ts @@ -16,24 +16,7 @@ export default (appInfo: EggAppInfo) => { url: '127.0.0.1', // 内网 pw: '' }; - let regions = [ // 大区数据 - { id: 1, env: 'development', name: "测试", domain: 'http://127.0.0.1:9000' }, - ]; - config.regions = regions; - - let httpProxy: any = {}; - for(let { env, domain } of regions) { - httpProxy[`/web/${env}/`] = { - target: domain, - changeOrigin: true, - secure: true, - pathRewrite: function(path) { - console.log('proxy', path, path.replace(`/web/${env}/`, '/web/')) - return path.replace(`/web/${env}/`, '/web/') - } - } - } - config.proxy = httpProxy; + config.decodeParm = true; // the return config will combines to EggAppConfig diff --git a/web-server/config/config.sq2.ts b/web-server/config/config.sq2.ts new file mode 100644 index 000000000..8428c37e4 --- /dev/null +++ b/web-server/config/config.sq2.ts @@ -0,0 +1,49 @@ +import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; +import defaultConfig from './config.default'; + +export default (appInfo: EggAppInfo) => { + const config = {} as PowerPartial; + + config.middleware = [ 'parmsDecode', 'getIp', 'proxy' ]; + config.mongoose = { + url: 'mongodb://dbop:zyzSQ2021@dds-8vb7d5060bb271d41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7d5060bb271d42.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7d5060bb271d43.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-508112745', // 内网 + options: { useNewUrlParser: true, useUnifiedTopology: true }, + }; + config.gmmongoose = { + url: 'mongodb://dbop:zyzSQGm2021@dds-8vb5de93552a67941.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5de93552a67942.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5de93552a67943.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?readPreference=secondary&replicaSet=mgset-508112742', // 内网 + options: { useNewUrlParser: true, useUnifiedTopology: true }, + }; + config.redis = { + url: 'r-8vb7l1s8ne4vm6v6x6.redis.zhangbei.rds.aliyuncs.com', // 内网 + pw: 'PANl3Vr2eozkq4N2' + }; + + config.xtransit = { + server: 'ws://172.16.4.109:9092', + appId: 4, + appSecret: '4ce0f5d8561939271c1d8c5714a9d9eb' + }; + + config.customLogger = { + linkLogger: { + file: '/zyz_logs/web-server/link-log.log', + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + + config.logrotator = { + filesRotateBySize: [ + '/zyz_logs/web-server/link-log.log', + ], + maxFileSize: 1024, + }; + + + // the return config will combines to EggAppConfig + return { + ...defaultConfig(appInfo), + ...config + }; +}; diff --git a/web-server/package.json b/web-server/package.json index 0ceedb6a5..01eb66fe6 100644 --- a/web-server/package.json +++ b/web-server/package.json @@ -28,7 +28,8 @@ "alpha": "cross-env EGG_SERVER_ENV=alpha npm run dev", "stable": "cross-env EGG_SERVER_ENV=stable npm run dev", "deve": "cross-env EGG_SERVER_ENV=dev npm run dev", - "sq1": "cross-env EGG_SERVER_ENV=sq1 npm run dev" + "sq1": "cross-env EGG_SERVER_ENV=sq1 npm run dev", + "sq2": "cross-env EGG_SERVER_ENV=sq2 npm run dev" }, "dependencies": { "@types/underscore": "^1.11.3",