tsw.jstsw.js

#配置文件

TSW全局配置文件,业务逻辑挂载点,也是一个模块~。

  • {cwd} -- 表示当前的工作目录,对应process.cwd()
  • {TSW} -- 对应TSW安装目录
  • {config} -- 表示启动参数config,对应node tsw config={config}

加载顺序

配置文件config.js加载顺序如下

  1. {config} -- 对应node tsw config={config}1.2.2新增
  2. $TSW_CONFIG_PATH -- 环境变量指定配置文件路径,1.2.3新增
  3. {cwd}/tsw.config.js -- 1.2.2新增
  4. /etc/tsw.config.js
  5. /usr/local/node_modules/config.js
  6. /data/release/tsw.config.js -- 1.2.4新增
  7. /data/release/node_modules/config.js
  8. {TSW}/conf/config.js

Example

const config = plug('config');

开放平台

  • appid -- string tswjs.org颁发的appid,默认null
  • appkey -- string tswjs.org颁发的appkey,默认null
    this.appid = 'tsw007';
    this.appkey = 'FuiFsFwe3asdF12sdwvkshk8';
    

基础配置

  • devMode -- boolean 开发者模式 ,本地代码修改后可立即生效,有损性能,默认false
  • httpAdminPort -- number http管理端口,只监听本地回路127.0.0.1,默认值12701
    • reload -- curl 127.0.0.1:12701/reload
  • runAtThisCpu -- array|string worker启动数量和cpu分配策略,默认值auto
    • 'auto' -- string 自动分配,核数x1
    • [0,1] -- array[number] 手动分配,启动两个worker,分别绑定到cpu0和cpu1上
  • workerUid -- string worker运行时用户,默认值'nobody'
  • alphaFile -- string 指定alpha文件位置,用于固定的白名单,默认值null
  • alphaFileUrl -- string 指定alpha文件的网络位置,默认值null
  • blackIpFile -- string 指定blackIp文件位置,默认值null
  • blackIpFileUrl -- string 指定blackIp文件的网络位置,默认值null
  • cpuLimit -- number CPU使用限制,默认值85,每个worker独立生效,超过限制自动开启过载保护。
  • cpuRecordTime -- number CPU快照持续时间,默认值50001.2.4新增
  • memoryLimit -- number 内存使用限制,默认值768MB,每个worker独立生效,超过限制自动淘汰。
  • CCIPLimit -- number CC预警阈值,取自指标AVG_TSW_IP_STD_X10,默认值200,即聚集度达到50%判定为恶意。
    • -1 -- 表示关闭检测
    • AVG_TSW_IP_STD_X10 -- IP访问次数加权方差,放大10倍方便观察
  • CCIPLimitAutoBlock -- boolean CC拦截,启用自动拉黑,默认值false1.1.3新增
  • logger -- object 日志级别
    • logLevel -- {'debug':10,'info':20,'warn':30,'error':40,'off':50}['info']
  • httpProxy -- object 全局http代理设置,为fiddler设计,对在win7下开发比较有用
    • ip -- string 默认值'127.0.0.1'
    • port -- number 默认值8888
    • enable -- boolean 是否启用,默认值false
  • timeout -- object 全局超时控制,单位ms
    • post -- bumber post like请求处理超时,默认值30000
    • get -- bumber get like请求处理超时,默认值10000
    • socket -- bumber socket超时设置,默认值30000
    • keepAlive -- bumber keepAlive超时设置,默认值0
      this.timeout = {
          socket: 30000,
          post: 30000,
          get: 10000,
          keepAlive: 10000,
          dns: 3000
      }
      
  • beforeStartup(cpu) -- function 启动完成前的回调
    • cpu -- number 当前工作进程对应的cpu编号
  • ajaxDefaultOptions -- object ajax全局设置,默认值null
  • afterStartup(cpu) -- function 启动完成后的回调
    • cpu -- number 当前工作进程对应的cpu编号
  • extendMod -- object 支持重新定义TSW里部分方法的实现
    • getUid(request) -- function 重新定义从request解析UID的实现
    • isTST(request) -- function 重新定义TST(安全扫描器)请求

HTTP/HTTPS

  • httpAddress -- string http网卡,推荐'0.0.0.0'
  • httpPort -- number http端口,默认80或者你喜欢的数字
  • workerPortBase -- number worker起始端口,默认12801。比如worker/7对应的端口为12801+7=12808
    • 消息分发 -- websocket场景下发送消息到指定worker里
  • httpsAddress -- string https网卡,推荐'0.0.0.0',默认空
  • httpsPort -- number https端口,默认空
  • httpsOptions -- object https证书之类的,透传给Node.js
  • page404 -- string 404公益页面路由
  • page419 -- string 419页面路由
  • router -- module HTTP路由,需实现以下方法
    • name(req) -- function 负责req.urlname映射,让url收敛
    • find(name,req,res) -- function 负责namemodule映射,返回处理模块
      • module -- function http逻辑处理模块,module.exports需导出个函数
  • allowArrayInUrl -- boolean url解析参数时是否输出数组
    • 默认值 -- false
    • false -- 重复元素只取第一个
    • true -- 重复元素装在数组里
  • allowHost -- array[string|regex|object] 对非法域名返回508,对内网IP无影响
    • 默认值 -- [],空数组表示无限制
    • string -- 字符串类型全匹配
    • regex -- regex类型调用regex.test(host)方法匹配
    • object -- object类型调用object.test(host)方法匹配
  • allowOriginHost -- array[object]
    • 默认值 -- undefined,不配置不进行跨域检测
    • object
      • host:[string] 需要跨域检测的域名
      • origin:[string|regex|object] 允许跨域的域名
        • string -- 字符串类型全匹配,支持*.等通配符匹配
        • regex -- regex类型调用regex.test(host)方法匹配
        • object -- object类型调用object.test(host)方法匹配

websocket

  • wsRouter -- module websocket路由,需实现以下方法
    • name(ws) -- function 负责ws.urlname映射
    • find(name,ws) -- function 负责nameWebSocket module映射
      • module -- module websocket逻辑处理模块,需实现以下方法
        • onConnection(ws) -- 连接建立的回调函数
        • onMessage(ws,message) -- 收到消息的回调函数
        • onClose(ws,code,reason) -- 连接关闭时的处理函数
        • onError(ws,err) -- 连接出错时的处理函数
  • allowWebSocketOriginHost -- array[string|regex|object] 允许websocket跨域的host,其他跨域请求返回403
    • 默认值 -- [],空数组表示允许跨域请求
    • string -- 字符串类型全匹配
    • regex -- regex类型调用regex.test(host)方法匹配
    • object -- object类型调用object.test(host)方法匹配

测试环境

  • isTest -- boolean 测试环境标识 ,默认false,为true时自动发现
  • testInfo -- object 测试环境信息
    • name -- string 名称
    • group -- string 分组名,测试环境会根据分组自动聚合。
    • groupName -- string 分组名称。
    • desc -- string 测试环境描述
    • order -- number 用于排序
    • owner -- string 测试环境负责人
      this.isTest = true;
      this.testInfo = {
          "name"      : "神秘商店",
          "group"     : "TSW",
          "groupName" : "TSW团队",
          "desc"      : "没有人能知道这里在售卖什么",
          "order"     : 30,
          "owner"     : "TSW"
      };
      

开放平台OPENAPI

  • logReportUrl -- string 染色日志上报,保持默认即可
  • h5testSyncUrl -- string 测试环境同步,保持默认即可
  • utilCDUrl -- string CD冷却池,保持默认即可
  • appReportUrl -- string 指标上报,保持默认即可
  • runtimeReportUrl -- string runtime告警,保持默认即可

私有化部署

  • skyMode -- boolean 天空模式 ,私有化部署时管理端标识,默认false
    this.skyMode = true;
    
  • memcached -- object 私有化部署时memcached地址声明,默认值null
    this.memcached = {
        host : '127.0.0.1:11211',
        timeout : 500,
        poolSize : 20,
        retries : 1,
        maxQueueSize : 1000
    };
    
  • beforeReportLog(reportData) -- function 自定义日志上报
    • reportData -- object 包含上报信息的对象,具体字段可打印出来观看
    • 返回值 -- boolean 返回false会中断TSW的默认上报逻辑
  • beforeReportApp(reportData) -- function 自定义指标上报
    • reportData -- object 包含上报信息的对象,具体字段可打印出来观看
    • 返回值 -- boolean 返回false会中断TSW的默认上报逻辑
  • beforeRuntimeReport(reportData) -- function 自定义Runtime上报
    • reportData -- object 包含上报信息的对象,具体字段可打印出来观看
    • 返回值 -- boolean 返回false会中断TSW的默认上报逻辑