├── servers ├── event │ ├── version.js │ ├── config │ │ ├── secret.json │ │ ├── db.js │ │ ├── db_local.js │ │ ├── node_clickhouse.js │ │ ├── province.js │ │ ├── monitorKeys.js │ │ └── AccountConfig.js │ ├── schema │ │ ├── schemaLogList copy.js │ │ ├── schemaLogList.js │ │ ├── config.js │ │ └── team.js │ ├── restart.sh │ ├── createTable.sh │ ├── public │ │ └── stylesheets │ │ │ └── style.css │ ├── lib │ │ └── insertCode.js │ ├── router │ │ └── routes │ │ │ ├── timerStatistic.js │ │ │ ├── sysInfo.js │ │ │ ├── commonUpLog.js │ │ │ ├── common.js │ │ │ ├── weHandleData.js │ │ │ ├── buryPointAlarmMessage.js │ │ │ ├── buryPointUserBehaviorRelation.js │ │ │ ├── buryPointTask.js │ │ │ ├── buryPointCircleSelect.js │ │ │ ├── buryPointVisualTracking.js │ │ │ ├── buryPointAlarm.js │ │ │ ├── buryPointSdkRelease.js │ │ │ ├── buryPointTest.js │ │ │ ├── buryPointTemplate.js │ │ │ ├── buryPointWarehouse.js │ │ │ ├── buryPointField.js │ │ │ └── index.js │ ├── middlreware │ │ ├── ignorePathRes.js │ │ └── sqlCheck.js │ ├── config_db_local.js │ ├── package.json │ ├── util │ │ ├── status-code.js │ │ └── extension.js │ ├── node_clickhouse │ │ └── consts.js │ ├── table_config.js │ ├── controllers │ │ └── fail.js │ └── app.js ├── monitor │ ├── version.js │ ├── config │ │ ├── secret.json │ │ ├── db.js │ │ ├── db_local.js │ │ ├── node_clickhouse.js │ │ ├── province.js │ │ ├── errorList.js │ │ └── monitorKeys.js │ ├── public │ │ └── stylesheets │ │ │ └── style.css │ ├── router │ │ ├── routes │ │ │ ├── fail.js │ │ │ ├── extendBehaviorInfo.js │ │ │ ├── customerPvLeave.js │ │ │ ├── config.js │ │ │ ├── alarmRule.js │ │ │ ├── walkingfunny.js │ │ │ ├── message.js │ │ │ ├── httpErrorHandleList.js │ │ │ ├── resourceLoadInfo.js │ │ │ ├── jsErrorHandleList.js │ │ │ ├── commonTable.js │ │ │ ├── ignoreError.js │ │ │ ├── customerStayTime.js │ │ │ ├── alarm.js │ │ │ ├── httpErrorInfo.js │ │ │ ├── pageLoadInfo.js │ │ │ └── index.js │ │ └── routesFail.js │ ├── lib │ │ └── insertCode.js │ ├── config_db_local.js │ ├── schema │ │ ├── infoSchemaList.js │ │ ├── schemaLogList.js │ │ ├── screenShotInfo.js │ │ ├── resourceLoadInfo.js │ │ ├── config.js │ │ ├── ignoreError.js │ │ ├── infoCountByDay.js │ │ ├── behaviorInfo.js │ │ ├── team.js │ │ ├── deviceInfoCountByDay.js │ │ ├── customerPvLeave.js │ │ ├── httpErrorHandleList.js │ │ └── jsErrorHandleList.js │ ├── middlreware │ │ ├── ignorePathRes.js │ │ └── sqlCheck.js │ ├── package.json │ ├── util │ │ ├── timer.js │ │ ├── status-code.js │ │ └── extension.js │ ├── node_clickhouse │ │ └── consts.js │ └── controllers │ │ └── fail.js ├── logger │ ├── README.md │ ├── config │ │ ├── secret.json │ │ ├── node_clickhouse.js │ │ ├── slave.js │ │ ├── province.js │ │ ├── db.js │ │ ├── log_server.js │ │ ├── AccountConfig.js │ │ ├── monitorKeys.js │ │ ├── log_config.js │ │ └── local_db.js │ ├── schema │ │ ├── schemaLogList.js │ │ └── config.js │ ├── middlreware │ │ ├── ignorePath.js │ │ ├── ignorePathRes.js │ │ └── sqlCheck.js │ ├── .gitignore │ ├── router │ │ ├── routes │ │ │ ├── logData.js │ │ │ ├── logInfos.js │ │ │ ├── common.js │ │ │ ├── config.js │ │ │ ├── traceData.js │ │ │ ├── index.js │ │ │ └── logProject.js │ │ └── timer.js │ ├── lib │ │ └── insertCode.js │ ├── util │ │ ├── timer.js │ │ ├── status-code.js │ │ └── extension.js │ └── node_clickhouse │ │ └── consts.js └── center │ ├── config │ ├── secret.json │ ├── db_clickhouse.js │ ├── node_clickhouse.js │ ├── province.js │ ├── db_local.js │ ├── db.js │ ├── monitorKeys.js │ └── local_db.js │ ├── public │ └── stylesheets │ │ └── style.css │ ├── middlreware │ ├── ignorePath.js │ ├── wfParam.js │ ├── ignorePathRes.js │ └── sqlCheck.js │ ├── router │ ├── routes │ │ ├── order.js │ │ ├── menuPermissions.js │ │ ├── company.js │ │ ├── userToken.js │ │ ├── alarmList.js │ │ ├── sso.js │ │ ├── flowDataInfoByHour.js │ │ ├── alarmOverview.js │ │ ├── orderInfo.js │ │ ├── applicationConfig.js │ │ ├── noticeTemplate.js │ │ ├── alarmRule.js │ │ ├── flowDataInfoByDay.js │ │ ├── product.js │ │ └── index.js │ └── index.js │ ├── package.json │ ├── config_db_local.js │ ├── schema │ ├── infoSchemaListByYear.js │ ├── infoSchemaListByDay.js │ ├── config.js │ ├── userToken.js │ ├── applicationConfig.js │ ├── menuPermissions.js │ ├── alarmItem.js │ ├── team.js │ ├── noticeTemplate.js │ ├── noticeSetting.js │ └── message.js │ ├── util │ ├── status-code.js │ └── extension.js │ └── node_clickhouse │ └── consts.js ├── .dockerignore ├── config ├── secret.json └── log_config.js ├── .babelrc ├── views ├── images │ ├── logos │ │ ├── logo.png │ │ ├── logo2.png │ │ └── favicon.ico │ └── zm_logos │ │ └── favicon.ico └── resource │ ├── wf_center │ ├── 0.e0948c93.chunk.js │ ├── src │ │ ├── assets │ │ │ └── img │ │ │ │ ├── logo │ │ │ │ ├── logo.png │ │ │ │ ├── apm_logo.png │ │ │ │ └── oneApm_logo.png │ │ │ │ ├── main │ │ │ │ ├── bg1.png │ │ │ │ ├── bg2.png │ │ │ │ ├── gold.png │ │ │ │ ├── vip.png │ │ │ │ ├── circle-bg.png │ │ │ │ └── circle-event-bg.png │ │ │ │ ├── buyModal │ │ │ │ ├── webBg.png │ │ │ │ ├── zh_bank.png │ │ │ │ ├── headerImg.png │ │ │ │ ├── headerImg1.png │ │ │ │ ├── right-btn.png │ │ │ │ ├── wx_success.png │ │ │ │ ├── bg-personal.png │ │ │ │ ├── dialog-header1.png │ │ │ │ └── dialog-header2.png │ │ │ │ ├── login │ │ │ │ └── login-bg.png │ │ │ │ ├── teamlist │ │ │ │ ├── empty.png │ │ │ │ └── team-empty.png │ │ │ │ ├── header │ │ │ │ ├── product_free.png │ │ │ │ └── product_pay.png │ │ │ │ └── common │ │ │ │ └── login_background.png │ │ ├── modules │ │ │ └── overview │ │ │ │ └── images │ │ │ │ └── shape.png │ │ └── components │ │ │ └── header │ │ │ └── images │ │ │ └── tab-item-active-bg.png │ └── index.html │ ├── wf_event │ ├── src │ │ ├── assets │ │ │ └── img │ │ │ │ ├── task │ │ │ │ └── no-task.png │ │ │ │ ├── dataView │ │ │ │ ├── hotPer.png │ │ │ │ ├── animation.png │ │ │ │ ├── hotValue.png │ │ │ │ └── warning.png │ │ │ │ └── customer │ │ │ │ ├── connect_header_bg.webp │ │ │ │ └── customer_header_bg.webp │ │ └── modules │ │ │ └── dataView │ │ │ └── image │ │ │ ├── no-card.png │ │ │ ├── earth-chart.png │ │ │ ├── heat-chart.png │ │ │ ├── words-chart.png │ │ │ ├── number-chart.png │ │ │ └── path-analysis.png │ ├── manifest.json │ └── index.html │ ├── wf_logger │ ├── src │ │ └── assets │ │ │ └── img │ │ │ ├── logo │ │ │ ├── apm_logo.png │ │ │ ├── oneApm_logo.png │ │ │ └── apm_logo_dark.png │ │ │ └── customer │ │ │ ├── connect_header_bg.webp │ │ │ └── customer_header_bg.webp │ ├── manifest.json │ └── index.html │ └── wf_monitor │ ├── src │ ├── assets │ │ └── img │ │ │ ├── behaviors │ │ │ ├── bad.png │ │ │ ├── good.png │ │ │ ├── great.png │ │ │ └── searching.png │ │ │ ├── common │ │ │ ├── bushu1.png │ │ │ ├── bushu2.jpg │ │ │ ├── bushu3.png │ │ │ ├── bushu4.png │ │ │ ├── bushu5.png │ │ │ ├── taro_init.png │ │ │ ├── alipay_init.png │ │ │ ├── taro_bushu.png │ │ │ └── alipay_bushu.png │ │ │ ├── logo │ │ │ ├── apm_logo.png │ │ │ ├── oneApm_logo.png │ │ │ └── apm_logo_dark.png │ │ │ ├── home │ │ │ └── animation.png │ │ │ ├── customer │ │ │ ├── connect_bg.webp │ │ │ ├── customer_bg.webp │ │ │ ├── connect_header_bg.webp │ │ │ └── customer_header_bg.webp │ │ │ └── javascriptErrorDetail │ │ │ ├── pc.png │ │ │ ├── iphone.png │ │ │ ├── url-bg.jpg │ │ │ ├── browser.png │ │ │ ├── windows.png │ │ │ └── url-bg-active.jpg │ └── modules │ │ ├── overview │ │ └── image │ │ │ ├── loading.png │ │ │ └── loading-slow.png │ │ ├── home │ │ └── components │ │ │ └── project │ │ │ └── images │ │ │ ├── alarm-bg.png │ │ │ ├── card-bg.png │ │ │ ├── pref-red.png │ │ │ ├── card-zm-bg.png │ │ │ ├── health-red.png │ │ │ ├── pref-green.png │ │ │ ├── health-green.png │ │ │ ├── health-yellow.png │ │ │ └── pref-yellow.png │ │ ├── apiPerf │ │ └── components │ │ │ └── performanceChart │ │ │ └── loading-slow.png │ │ └── pagePerf │ │ └── components │ │ └── performanceChart │ │ └── loading-slow.png │ ├── 1.3ede17ad.chunk.js │ └── index.html ├── Dockerfile ├── .gitignore ├── utils ├── timer.js ├── status-code.js ├── rewriteConsole.js └── extension.js ├── DES_DOCKER.md ├── middlreware ├── cacheData │ ├── handleCache.js │ └── index.js ├── logger.js ├── sqlCheck.js └── ignorePathRes.js └── webfunny_init └── sso.init.js /servers/event/version.js: -------------------------------------------------------------------------------- 1 | module.exports = "0.2.1" -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | node_modules 3 | npm-debug.log -------------------------------------------------------------------------------- /servers/monitor/version.js: -------------------------------------------------------------------------------- 1 | module.exports = "0.1.94" -------------------------------------------------------------------------------- /config/secret.json: -------------------------------------------------------------------------------- 1 | { 2 | "sign": "webfunny-access" 3 | } 4 | -------------------------------------------------------------------------------- /servers/logger/README.md: -------------------------------------------------------------------------------- 1 | # webfunny_log_server 2 | 这是webfunny日志系统的服务端 3 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/preset-env"], 3 | "compact": false 4 | } -------------------------------------------------------------------------------- /servers/center/config/secret.json: -------------------------------------------------------------------------------- 1 | { 2 | "sign": "webfunny-access" 3 | } 4 | -------------------------------------------------------------------------------- /servers/event/config/secret.json: -------------------------------------------------------------------------------- 1 | { 2 | "sign": "webfunny-access" 3 | } 4 | -------------------------------------------------------------------------------- /servers/logger/config/secret.json: -------------------------------------------------------------------------------- 1 | { 2 | "sign": "webfunny-access" 3 | } 4 | -------------------------------------------------------------------------------- /servers/monitor/config/secret.json: -------------------------------------------------------------------------------- 1 | { 2 | "sign": "webfunny-access" 3 | } 4 | -------------------------------------------------------------------------------- /servers/event/schema/schemaLogList copy.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | "../schema/customerPV", 3 | ] -------------------------------------------------------------------------------- /servers/event/restart.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "开始执行创建命令" 3 | npm run prd_restart 4 | echo "数据库表创建完成" -------------------------------------------------------------------------------- /servers/event/createTable.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "开始执行创建命令" 3 | npm run table_config 4 | echo "数据库表创建完成" -------------------------------------------------------------------------------- /views/images/logos/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/images/logos/logo.png -------------------------------------------------------------------------------- /views/images/logos/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/images/logos/logo2.png -------------------------------------------------------------------------------- /servers/logger/schema/schemaLogList.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | "../schema/traceData", 3 | "../schema/logData", 4 | ] -------------------------------------------------------------------------------- /views/images/logos/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/images/logos/favicon.ico -------------------------------------------------------------------------------- /views/images/zm_logos/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/images/zm_logos/favicon.ico -------------------------------------------------------------------------------- /views/resource/wf_center/0.e0948c93.chunk.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[0],{295:function(n,w,o){o.r(w)}}]); -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/logo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/logo/logo.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/main/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/main/bg1.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/main/bg2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/main/bg2.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/main/gold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/main/gold.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/main/vip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/main/vip.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/assets/img/task/no-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/assets/img/task/no-task.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/buyModal/webBg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/buyModal/webBg.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/login/login-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/login/login-bg.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/logo/apm_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/logo/apm_logo.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/main/circle-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/main/circle-bg.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/teamlist/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/teamlist/empty.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/assets/img/dataView/hotPer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/assets/img/dataView/hotPer.png -------------------------------------------------------------------------------- /views/resource/wf_logger/src/assets/img/logo/apm_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_logger/src/assets/img/logo/apm_logo.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/behaviors/bad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/behaviors/bad.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/common/bushu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/common/bushu1.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/common/bushu2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/common/bushu2.jpg -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/common/bushu3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/common/bushu3.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/common/bushu4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/common/bushu4.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/common/bushu5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/common/bushu5.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/logo/apm_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/logo/apm_logo.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/buyModal/zh_bank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/buyModal/zh_bank.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/logo/oneApm_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/logo/oneApm_logo.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/assets/img/dataView/animation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/assets/img/dataView/animation.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/assets/img/dataView/hotValue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/assets/img/dataView/hotValue.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/assets/img/dataView/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/assets/img/dataView/warning.png -------------------------------------------------------------------------------- /views/resource/wf_logger/src/assets/img/logo/oneApm_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_logger/src/assets/img/logo/oneApm_logo.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/behaviors/good.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/behaviors/good.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/behaviors/great.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/behaviors/great.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/common/taro_init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/common/taro_init.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/home/animation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/home/animation.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/logo/oneApm_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/logo/oneApm_logo.png -------------------------------------------------------------------------------- /servers/center/public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } 9 | -------------------------------------------------------------------------------- /servers/event/public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } 9 | -------------------------------------------------------------------------------- /servers/monitor/public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } 9 | -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/buyModal/headerImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/buyModal/headerImg.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/buyModal/headerImg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/buyModal/headerImg1.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/buyModal/right-btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/buyModal/right-btn.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/buyModal/wx_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/buyModal/wx_success.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/header/product_free.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/header/product_free.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/header/product_pay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/header/product_pay.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/teamlist/team-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/teamlist/team-empty.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/modules/overview/images/shape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/modules/overview/images/shape.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/modules/dataView/image/no-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/modules/dataView/image/no-card.png -------------------------------------------------------------------------------- /views/resource/wf_logger/src/assets/img/logo/apm_logo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_logger/src/assets/img/logo/apm_logo_dark.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/common/alipay_init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/common/alipay_init.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/common/taro_bushu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/common/taro_bushu.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/logo/apm_logo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/logo/apm_logo_dark.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/buyModal/bg-personal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/buyModal/bg-personal.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/main/circle-event-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/main/circle-event-bg.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/modules/dataView/image/earth-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/modules/dataView/image/earth-chart.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/modules/dataView/image/heat-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/modules/dataView/image/heat-chart.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/modules/dataView/image/words-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/modules/dataView/image/words-chart.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/behaviors/searching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/behaviors/searching.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/common/alipay_bushu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/common/alipay_bushu.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/customer/connect_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/customer/connect_bg.webp -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/customer/customer_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/customer/customer_bg.webp -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/overview/image/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/overview/image/loading.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/buyModal/dialog-header1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/buyModal/dialog-header1.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/buyModal/dialog-header2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/buyModal/dialog-header2.png -------------------------------------------------------------------------------- /views/resource/wf_center/src/assets/img/common/login_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/assets/img/common/login_background.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/modules/dataView/image/number-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/modules/dataView/image/number-chart.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/modules/dataView/image/path-analysis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/modules/dataView/image/path-analysis.png -------------------------------------------------------------------------------- /views/resource/wf_event/src/assets/img/customer/connect_header_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/assets/img/customer/connect_header_bg.webp -------------------------------------------------------------------------------- /views/resource/wf_event/src/assets/img/customer/customer_header_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_event/src/assets/img/customer/customer_header_bg.webp -------------------------------------------------------------------------------- /views/resource/wf_logger/src/assets/img/customer/connect_header_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_logger/src/assets/img/customer/connect_header_bg.webp -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/pc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/pc.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/overview/image/loading-slow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/overview/image/loading-slow.png -------------------------------------------------------------------------------- /servers/logger/middlreware/ignorePath.js: -------------------------------------------------------------------------------- 1 | module.exports = ["/getSysInfo", "/getValidateCode", "/refreshValidateCode", "/login", "/register", "/registerForAdmin", "/sendRegisterEmail", "/resetPwd", "/upBp"] -------------------------------------------------------------------------------- /views/resource/wf_logger/src/assets/img/customer/customer_header_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_logger/src/assets/img/customer/customer_header_bg.webp -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/customer/connect_header_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/customer/connect_header_bg.webp -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/customer/customer_header_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/customer/customer_header_bg.webp -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/iphone.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/url-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/url-bg.jpg -------------------------------------------------------------------------------- /views/resource/wf_center/src/components/header/images/tab-item-active-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_center/src/components/header/images/tab-item-active-bg.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/browser.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/windows.png -------------------------------------------------------------------------------- /servers/center/middlreware/ignorePath.js: -------------------------------------------------------------------------------- 1 | module.exports = ["/hasSuperAdminAccount", "/getValidateCode", "/refreshValidateCode", "/login", "/register", "/registerForAdmin", "/sendRegisterEmail", "/resetPwd", "/upBp"] -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/url-bg-active.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/assets/img/javascriptErrorDetail/url-bg-active.jpg -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/home/components/project/images/alarm-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/home/components/project/images/alarm-bg.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/home/components/project/images/card-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/home/components/project/images/card-bg.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/home/components/project/images/pref-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/home/components/project/images/pref-red.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/home/components/project/images/card-zm-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/home/components/project/images/card-zm-bg.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/home/components/project/images/health-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/home/components/project/images/health-red.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/home/components/project/images/pref-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/home/components/project/images/pref-green.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/home/components/project/images/health-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/home/components/project/images/health-green.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/home/components/project/images/health-yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/home/components/project/images/health-yellow.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/home/components/project/images/pref-yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/home/components/project/images/pref-yellow.png -------------------------------------------------------------------------------- /servers/logger/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | npm-debug.* 3 | package-lock.json 4 | node_modules 5 | dist 6 | *.swp 7 | *.swo 8 | .idea/ 9 | .vscode/ 10 | logs/ 11 | api_wiki/ 12 | varsion.js 13 | schema_temp/ 14 | lib/upload* 15 | .eslintrc -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/apiPerf/components/performanceChart/loading-slow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/apiPerf/components/performanceChart/loading-slow.png -------------------------------------------------------------------------------- /views/resource/wf_monitor/src/modules/pagePerf/components/performanceChart/loading-slow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UlricQin/webfunny_monitor/main/views/resource/wf_monitor/src/modules/pagePerf/components/performanceChart/loading-slow.png -------------------------------------------------------------------------------- /servers/logger/router/routes/logData.js: -------------------------------------------------------------------------------- 1 | const { LogDataController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | // 上报日志信息 5 | // router.post('/upLogInfos', LogInfosController.upLogInfos); 6 | } 7 | -------------------------------------------------------------------------------- /servers/monitor/router/routes/fail.js: -------------------------------------------------------------------------------- 1 | const { FailController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | // 更新激活码 5 | router.post('/createPurchaseCode', FailController.createPurchaseCode); 6 | } 7 | -------------------------------------------------------------------------------- /servers/monitor/router/routes/extendBehaviorInfo.js: -------------------------------------------------------------------------------- 1 | const { ExtendBehaviorInfoController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | // 拓展行为日志 5 | router.post('/extendBehavior', ExtendBehaviorInfoController.create); 6 | } 7 | -------------------------------------------------------------------------------- /servers/event/lib/insertCode.js: -------------------------------------------------------------------------------- 1 | (function(f){var e=f.sessionStorage;if(e){e.CUSTOMER_WEB_MONITOR_ID="jeffery_webmonitor";var d=document.createElement("script");d.async=1;d.src="monitorJsPath";var g=document.getElementsByTagName("script")[0];g.parentNode.insertBefore(d,g)}})(window); -------------------------------------------------------------------------------- /servers/logger/lib/insertCode.js: -------------------------------------------------------------------------------- 1 | (function(f){var e=f.sessionStorage;if(e){e.CUSTOMER_WEB_MONITOR_ID="jeffery_webmonitor";var d=document.createElement("script");d.async=1;d.src="monitorJsPath";var g=document.getElementsByTagName("script")[0];g.parentNode.insertBefore(d,g)}})(window); -------------------------------------------------------------------------------- /servers/monitor/lib/insertCode.js: -------------------------------------------------------------------------------- 1 | (function(f){var e=f.sessionStorage;if(e){e.CUSTOMER_WEB_MONITOR_ID="jeffery_webmonitor";var d=document.createElement("script");d.async=1;d.src="monitorJsPath";var g=document.getElementsByTagName("script")[0];g.parentNode.insertBefore(d,g)}})(window); -------------------------------------------------------------------------------- /views/resource/wf_monitor/1.3ede17ad.chunk.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[1],{2742:function(n,o,e){},2743:function(n,o,e){var s=e(16),e=e(2742),i={insert:"head",singleton:!1};s(e="string"==typeof(e=e.__esModule?e.default:e)?[[n.i,e,""]]:e,i);n.exports=e.locals||{}}}]); -------------------------------------------------------------------------------- /servers/monitor/router/routes/customerPvLeave.js: -------------------------------------------------------------------------------- 1 | const { CustomerPvLeaveController } = require("../../controllers/controllers.js") 2 | module.exports = (router) => { 3 | // 获取24小时内每小的跳出率 4 | router.post('/getCusLeavePercentByHour', CustomerPvLeaveController.getCusLeavePercentByHour); 5 | } 6 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:14.16.1-slim 2 | RUN npm install pm2 -g 3 | COPY . /app 4 | WORKDIR /app 5 | RUN npm install 6 | RUN npm run bootstrap 7 | RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 8 | RUN echo 'Asia/Shanghai' >/etc/timezone 9 | EXPOSE 9010 10 | EXPOSE 9011 11 | CMD npm run prd -------------------------------------------------------------------------------- /servers/center/router/routes/order.js: -------------------------------------------------------------------------------- 1 | // const OrderController = require('../../controllers/order') 2 | const { OrderController } = require("../../controllers/controllers.js") 3 | 4 | module.exports = (router) => { 5 | // 更新公司信息 6 | router.post('/getOrderList', OrderController.getOrderList); 7 | } 8 | -------------------------------------------------------------------------------- /servers/monitor/router/routes/config.js: -------------------------------------------------------------------------------- 1 | const { ConfigController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | router.post('/config', ConfigController.create); 5 | // 把有效token存入内存中 6 | router.post('/storeTokenToMemory', ConfigController.storeTokenToMemory); 7 | } -------------------------------------------------------------------------------- /servers/event/router/routes/timerStatistic.js: -------------------------------------------------------------------------------- 1 | const { TimerStatisticController } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | router.get('/test/calcu', TimerStatisticController.calculateDataPreDay); 5 | router.get('/test/statistic', TimerStatisticController.test); 6 | } 7 | -------------------------------------------------------------------------------- /servers/logger/router/routes/logInfos.js: -------------------------------------------------------------------------------- 1 | // const LogInfosController = require('../../controllers/logInfos') 2 | const { LogInfosController } = require("../../controllers/controllers.js") 3 | 4 | module.exports = (router) => { 5 | // 上报日志信息 6 | // router.post('/upLogInfos', LogInfosController.upLogInfos); 7 | } 8 | -------------------------------------------------------------------------------- /servers/center/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "start": "./config/webfunny_center.js --BUILD_ENV local", 7 | "prd": "pm2 start config/webfunny_center.js && pm2 log webfunny_center" 8 | }, 9 | "dependencies": { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /servers/logger/router/routes/common.js: -------------------------------------------------------------------------------- 1 | // const Common = require('../../controllers/common') 2 | const { Common } = require("../../controllers/controllers.js") 3 | 4 | module.exports = (router) => { 5 | // 上报日志信息 6 | router.post('/upLogs', Common.upLogs); 7 | 8 | // 上报错误日志信息 9 | router.post('/upTraceLogs', Common.upTraceLogs); 10 | } 11 | -------------------------------------------------------------------------------- /servers/logger/router/routes/config.js: -------------------------------------------------------------------------------- 1 | // const ConfigController = require('../../controllers/config') 2 | const { ConfigController } = require("../../controllers/controllers.js") 3 | 4 | module.exports = (router) => { 5 | router.post('/config', ConfigController.create); 6 | // 把有效token存入内存中 7 | router.post('/storeTokenToMemory', ConfigController.storeTokenToMemory); 8 | } -------------------------------------------------------------------------------- /servers/monitor/router/routes/alarmRule.js: -------------------------------------------------------------------------------- 1 | const { AlarmRuleController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | router.post('/createNewAlarmRule', AlarmRuleController.createNewAlarmRule); 5 | router.post('/getAllAlarmRule', AlarmRuleController.getAllAlarmRule); 6 | router.post('/deleteAlarmRule', AlarmRuleController.deleteAlarmRule); 7 | } 8 | -------------------------------------------------------------------------------- /servers/center/router/routes/menuPermissions.js: -------------------------------------------------------------------------------- 1 | const { MenuPermissionsController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | // 更新菜单权限 5 | router.post('/updateMenuPermission', MenuPermissionsController.updateMenuPermission); 6 | // 根据项目id获取菜单权限 7 | router.post('/getMenuPermissionsByProject', MenuPermissionsController.getMenuPermissionsByProject); 8 | } 9 | -------------------------------------------------------------------------------- /servers/event/router/routes/sysInfo.js: -------------------------------------------------------------------------------- 1 | const { SysInfoController } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | router.get('/sysInfo', SysInfoController.getSysInfo); 5 | router.get('/eventBaseInfo', SysInfoController.getSysInfo); 6 | router.get('/baseInfo', SysInfoController.getBaseInfo); 7 | router.get('/saas/projectInfo', SysInfoController.getProjectInfo); 8 | } 9 | -------------------------------------------------------------------------------- /servers/center/router/routes/company.js: -------------------------------------------------------------------------------- 1 | const { CompanyController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | // 更新公司信息 5 | router.post('/updateCompany', CompanyController.updateCompany); 6 | // 获取公司信息 7 | router.post('/getCompanyInfo', CompanyController.getCompanyInfo); 8 | // 获取公司列表 9 | router.post('/getCompanyList', CompanyController.getCompanyList); 10 | } 11 | -------------------------------------------------------------------------------- /servers/monitor/router/routes/walkingfunny.js: -------------------------------------------------------------------------------- 1 | const { ProjectController, CustomerPVController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | /** */ 5 | // 获取项目各项数据,项目数量,健康分等等 6 | router.post('/walkingfunny/getProjectBaseCountInfo', ProjectController.getProjectBaseCountInfo); 7 | router.post('/walkingfunny/getProjectCountInfoInRealTime', CustomerPVController.getProjectCountInfoInRealTime); 8 | } 9 | -------------------------------------------------------------------------------- /servers/event/router/routes/commonUpLog.js: -------------------------------------------------------------------------------- 1 | const { CommonUpLog } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | router.post('/initCf', CommonUpLog.initFunnelConfig); 5 | router.post('/upEvent', CommonUpLog.upEvent); 6 | router.post('/upEvents', CommonUpLog.upEvents); 7 | router.post('/upMyEvents', CommonUpLog.upMyEvents); 8 | router.post('/queryClientUsers', CommonUpLog.queryClientUsers); 9 | } 10 | -------------------------------------------------------------------------------- /servers/event/middlreware/ignorePathRes.js: -------------------------------------------------------------------------------- 1 | module.exports = ["/webfunny_a98ebb38b8588dcd81bb316d6dba26b7","/webfunny_e0037b51f4db2e4dead2debb88277e99","/webfunny_d56b699830e77ba53855679cb1d252da","/webfunny_796747e71f479b3d5fb9da41b8869fe7","/webfunny_a7a773f7da320241a7ec1ca401486d44","/webfunny_623f6adc78b16f773a3f344a048141d6","/webfunny_5835306c873ebe5f5420b5d5ceb332d2","/webfunny_9de4a97425678c5b1288aa70c1669a64","/webfunny_00417bcb83b8e64fef38f6f6bbb3adac",] -------------------------------------------------------------------------------- /servers/event/config/db.js: -------------------------------------------------------------------------------- 1 | const { accountInfo } = require('./AccountConfig'); 2 | 3 | const {write, read} = accountInfo.mysqlConfig; 4 | 5 | const { createClient } = require('@clickhouse/client'); 6 | 7 | const client = createClient({ 8 | host: `http://${write.ip}:${write.port}`, 9 | username: write.userName, 10 | password: write.password, 11 | database: write.dataBaseName 12 | }) 13 | 14 | 15 | 16 | module.exports = { 17 | client, 18 | } 19 | -------------------------------------------------------------------------------- /servers/logger/config/node_clickhouse.js: -------------------------------------------------------------------------------- 1 | const { client } = require('../config/db') 2 | const path = require("path") 3 | const WebfunnyNodeClickhouse = require("webfunny-node-clickhouse") 4 | const showSql = false 5 | class NodeClickhouse extends WebfunnyNodeClickhouse { 6 | constructor(schemaPath = "") { 7 | super({ schemaPath: schemaPath ? path.resolve(__dirname, schemaPath) : "", client, showSql }) 8 | } 9 | } 10 | 11 | module.exports = NodeClickhouse -------------------------------------------------------------------------------- /servers/monitor/config/db.js: -------------------------------------------------------------------------------- 1 | const { accountInfo } = require('./AccountConfig'); 2 | 3 | const {write, read} = accountInfo.mysqlConfig; 4 | 5 | const { createClient } = require('@clickhouse/client'); 6 | 7 | const client = createClient({ 8 | host: `http://${write.ip}:${write.port}`, 9 | username: write.userName, 10 | password: write.password, 11 | database: write.dataBaseName 12 | }) 13 | 14 | 15 | 16 | module.exports = { 17 | client, 18 | } 19 | -------------------------------------------------------------------------------- /servers/center/config/db_clickhouse.js: -------------------------------------------------------------------------------- 1 | 2 | const { accountInfo } = require('./AccountConfig'); 3 | 4 | const {write, read} = accountInfo.loggerConfig; 5 | 6 | const { createClient } = require('@clickhouse/client'); 7 | 8 | const client = createClient({ 9 | host: `http://${write.ip}:${write.port}`, 10 | username: write.userName, 11 | password: write.password, 12 | database: write.dataBaseName 13 | }) 14 | 15 | module.exports = { 16 | client 17 | } 18 | -------------------------------------------------------------------------------- /servers/center/router/routes/userToken.js: -------------------------------------------------------------------------------- 1 | // const UserTokenController = require('../../controllers/UserToken') 2 | const { UserTokenController } = require("../../controllers/controllers.js") 3 | 4 | module.exports = (router) => { 5 | // 验证token 6 | router.post('/checkToken', UserTokenController.checkToken); 7 | // 检查登录信息是否存在(服务器间通信,废弃) 8 | router.post('/getUserTokenFromNetworkByToken', UserTokenController.getUserTokenFromNetworkByToken); 9 | } 10 | -------------------------------------------------------------------------------- /servers/event/config/db_local.js: -------------------------------------------------------------------------------- 1 | const { accountInfo } = require('./AccountConfig'); 2 | 3 | const {write, read} = accountInfo.mysqlConfig; 4 | 5 | const { createClient } = require('@clickhouse/client'); 6 | 7 | const client = createClient({ 8 | host: `http://${write.ip}:${write.port}`, 9 | username: write.userName, 10 | password: write.password, 11 | database: write.dataBaseName 12 | }) 13 | 14 | 15 | 16 | module.exports = { 17 | client, 18 | } 19 | -------------------------------------------------------------------------------- /servers/monitor/config/db_local.js: -------------------------------------------------------------------------------- 1 | const { accountInfo } = require('./AccountConfig'); 2 | 3 | const {write, read} = accountInfo.mysqlConfig; 4 | 5 | const { createClient } = require('@clickhouse/client'); 6 | 7 | const client = createClient({ 8 | host: `http://${write.ip}:${write.port}`, 9 | username: write.userName, 10 | password: write.password, 11 | database: write.dataBaseName 12 | }) 13 | 14 | 15 | 16 | module.exports = { 17 | client, 18 | } 19 | -------------------------------------------------------------------------------- /servers/center/router/routes/alarmList.js: -------------------------------------------------------------------------------- 1 | const { AlarmListController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | router.get('/alarm/alarmList', AlarmListController.getAlarmList) 5 | router.post('/alarm/getAlarmTriggerByAlarmId', AlarmListController.getAlarmTriggerByAlarmId) 6 | router.get('/alarm/getAlarmDetailById', AlarmListController.getAlarmDetailById) 7 | router.post('/alarm/getAlarmHistory', AlarmListController.getAlarmHistory) 8 | } 9 | -------------------------------------------------------------------------------- /servers/center/router/routes/sso.js: -------------------------------------------------------------------------------- 1 | // const ApplicationConfigController = require('../../controllers/applicationConfig') 2 | const { ApplicationConfigController } = require("../../controllers/controllers.js") 3 | 4 | module.exports = (router) => { 5 | // 获取飞书的 6 | router.get("/getSignatureForFeiShu", ApplicationConfigController.getSignatureForFeiShu) 7 | // 飞书获取用于信息 8 | router.get("/getAccessTokenByCodeForFeiShu", ApplicationConfigController.getAccessTokenByCodeForFeiShu) 9 | } 10 | -------------------------------------------------------------------------------- /servers/monitor/router/routes/message.js: -------------------------------------------------------------------------------- 1 | const { MessageController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | // 新增消息 5 | router.post('/createMessage', MessageController.createNewMessage); 6 | // 获取消息 7 | router.post('/getMessageByType', MessageController.getMessageByType); 8 | // 阅读消息 9 | router.post('/readMessage', MessageController.readMessage); 10 | // 阅读全部 11 | router.post('/readAll', MessageController.readAll) 12 | } 13 | -------------------------------------------------------------------------------- /views/resource/wf_logger/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "app.css": "./app.44fbfb70d8db1cda8fc0.css", 3 | "app.js": "app.708f79a5.js", 4 | "index.html": "index.html", 5 | "src/assets/img/customer/index.scss": "src/assets/img/customer/customer_header_bg.webp", 6 | "src/assets/img/logo/apm_logo.png": "src/assets/img/logo/apm_logo.png", 7 | "src/assets/img/logo/apm_logo_dark.png": "src/assets/img/logo/apm_logo_dark.png", 8 | "src/assets/img/logo/oneApm_logo.png": "src/assets/img/logo/oneApm_logo.png" 9 | } -------------------------------------------------------------------------------- /servers/center/config_db_local.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | 3 | fs.writeFile( __dirname + '/config/db.js', "", (err) => { 4 | if (err) throw err; 5 | console.log("数据库配置文件清理完成!"); 6 | fs.readFile(__dirname + '/config/db_local.js', function(err, data){ 7 | let newString = data.toString(); 8 | fs.writeFile(__dirname + '/config/db.js', newString, (err) => { 9 | if (err) throw err; 10 | console.log("数据库配置重写完成!"); 11 | }); 12 | }) 13 | }); 14 | -------------------------------------------------------------------------------- /servers/center/router/routes/flowDataInfoByHour.js: -------------------------------------------------------------------------------- 1 | // const FlowDataInfoByHourController = require('../../controllers/flowDataInfoByHour') 2 | const { FlowDataInfoByHourController } = require("../../controllers/controllers.js") 3 | 4 | module.exports = (router) => { 5 | // 存储流量信息 6 | router.post('/createFlowData', FlowDataInfoByHourController.createFlowDataInfoByHour); 7 | // 获取流量列表数据 8 | router.get('/getHourFlowTrendData', FlowDataInfoByHourController.getHourFlowTrendData); 9 | } 10 | -------------------------------------------------------------------------------- /servers/event/config_db_local.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | 3 | fs.writeFile(__dirname + '/config/db.js', "", (err) => { 4 | if (err) throw err; 5 | console.log("数据库配置文件清理完成!"); 6 | fs.readFile(__dirname + '/config/db_local.js', function(err, data){ 7 | let newString = data.toString(); 8 | fs.writeFile(__dirname + '/config/db.js', newString, (err) => { 9 | if (err) throw err; 10 | console.log("数据库配置重写完成!"); 11 | }); 12 | }) 13 | }); 14 | -------------------------------------------------------------------------------- /servers/logger/router/routes/traceData.js: -------------------------------------------------------------------------------- 1 | const { TraceDataController } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | router.post('/getLogCountByDay', TraceDataController.getLogCountByDay); 5 | router.post('/getLogListGroupByMsg', TraceDataController.getLogListGroupByMsg); 6 | router.post('/getLogDataList', TraceDataController.getTraceDataList); 7 | // 查询日志详情 8 | router.post('/getLogDataBySearch', TraceDataController.getTraceDataBySearch); 9 | } 10 | -------------------------------------------------------------------------------- /servers/monitor/config_db_local.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | 3 | fs.writeFile(__dirname + '/config/db.js', "", (err) => { 4 | if (err) throw err; 5 | console.log("数据库配置文件清理完成!"); 6 | fs.readFile(__dirname + '/config/db_local.js', function(err, data){ 7 | let newString = data.toString(); 8 | fs.writeFile(__dirname + '/config/db.js', newString, (err) => { 9 | if (err) throw err; 10 | console.log("数据库配置重写完成!"); 11 | }); 12 | }) 13 | }); 14 | -------------------------------------------------------------------------------- /servers/monitor/schema/infoSchemaList.js: -------------------------------------------------------------------------------- 1 | const { DataTypes } = require("../node_clickhouse/consts"); 2 | 3 | const PageLoadInfoByMinuteSchema = require('./pageLoadInfoByMinute') 4 | const PageLoadInfoByMinuteConfig = PageLoadInfoByMinuteSchema(DataTypes) 5 | 6 | const schemaList = [ 7 | { 8 | name: "PageLoadInfoByMinute", 9 | fields: PageLoadInfoByMinuteConfig.fields, 10 | index: PageLoadInfoByMinuteConfig.fieldIndex 11 | }, 12 | ] 13 | 14 | module.exports = schemaList -------------------------------------------------------------------------------- /servers/logger/router/routes/index.js: -------------------------------------------------------------------------------- 1 | const commonRouter = require('./common') 2 | const configRouter = require('./config') 3 | const logDataRouter = require('./logData') 4 | const traceDataRouter = require('./traceData') 5 | const projectRouter = require('./logProject') 6 | 7 | const createRouter = (router) => { 8 | commonRouter(router) 9 | configRouter(router) 10 | traceDataRouter(router) 11 | logDataRouter(router) 12 | projectRouter(router) 13 | } 14 | 15 | module.exports = { 16 | createRouter 17 | } -------------------------------------------------------------------------------- /servers/center/schema/infoSchemaListByYear.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 按年建表 3 | */ 4 | const { DataTypes } = require("sequelize"); 5 | 6 | const FlowDataInfoByDaySchema = require('./flowDataInfoByDay') 7 | const FlowDataInfoByDayConfig = FlowDataInfoByDaySchema(DataTypes) 8 | 9 | const schemaList = [ 10 | { 11 | name: "FlowDataInfoByDay", 12 | fields: FlowDataInfoByDayConfig.fields, 13 | index: FlowDataInfoByDayConfig.fieldIndex 14 | }, 15 | ] 16 | //exports// 17 | module.exports = schemaList 18 | //exports// -------------------------------------------------------------------------------- /servers/center/router/routes/alarmOverview.js: -------------------------------------------------------------------------------- 1 | const { AlarmOverviewController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | router.post('/alarm/alarmOverview', AlarmOverviewController.getOverviewTrend) 5 | router.get('/alarm/getAlarmLatestTop10', AlarmOverviewController.getAlarmLatestTop10) 6 | router.get('/alarm/getAlarmApplicationTop10', AlarmOverviewController.getAlarmApplicationTop10) 7 | router.get('/alarm/getAlarmCountOverview', AlarmOverviewController.getAlarmCountOverview) 8 | } 9 | -------------------------------------------------------------------------------- /servers/logger/middlreware/ignorePathRes.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | "/getSysInfo", "/getValidateCode", "/refreshValidateCode", "/login", "/register", 3 | "/registerForAdmin", "/sendRegisterEmail", "/resetPwd", "/upBp", "/uploadMapFile", 4 | "/checkSsoToken", "/loginForApi", "/registerForApi", "/createNewTeamForApi", "/createNewProjectForApi", 5 | "/projectSimpleListByWebmonitorIds", "/addViewers", "/forbiddenProject", "/deleteProject", "/monitorBaseInfo", 6 | "/storeTokenToMemory", "getJavascriptErrorStackCodeForSource" 7 | ] -------------------------------------------------------------------------------- /servers/monitor/middlreware/ignorePathRes.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | "/getSysInfo", "/getValidateCode", "/refreshValidateCode", "/login", "/register", 3 | "/registerForAdmin", "/sendRegisterEmail", "/resetPwd", "/upBp", "/uploadMapFile", 4 | "/checkSsoToken", "/loginForApi", "/registerForApi", "/createNewTeamForApi", "/createNewProjectForApi", 5 | "/projectSimpleListByWebmonitorIds", "/addViewers", "/forbiddenProject", "/deleteProject", 6 | "/monitorBaseInfo", "/storeTokenToMemory", "getJavascriptErrorStackCodeForSource" 7 | ] -------------------------------------------------------------------------------- /servers/center/schema/infoSchemaListByDay.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 按天建表 3 | */ 4 | const { DataTypes } = require("sequelize"); 5 | 6 | const FlowDataInfoByHourSchema = require('./flowDataInfoByHour') 7 | const FlowDataInfoByHourConfig = FlowDataInfoByHourSchema(DataTypes) 8 | 9 | 10 | const schemaList = [ 11 | { 12 | name: "FlowDataInfoByHour", 13 | fields: FlowDataInfoByHourConfig.fields, 14 | index: FlowDataInfoByHourConfig.fieldIndex 15 | }, 16 | ] 17 | //exports// 18 | module.exports = schemaList 19 | //exports// -------------------------------------------------------------------------------- /servers/event/config/node_clickhouse.js: -------------------------------------------------------------------------------- 1 | const { client } = require('../config/db') 2 | const path = require("path") 3 | const WebfunnyNodeClickhouse = require("webfunny-node-clickhouse") 4 | const { accountInfo } = require('./AccountConfig') 5 | const showSql = accountInfo.printSql && accountInfo.printSql.event 6 | class NodeClickhouse extends WebfunnyNodeClickhouse { 7 | constructor(schemaPath = "") { 8 | super({ schemaPath: schemaPath ? path.resolve(__dirname, schemaPath) : "", client, showSql }) 9 | } 10 | } 11 | 12 | module.exports = NodeClickhouse -------------------------------------------------------------------------------- /servers/center/middlreware/wfParam.js: -------------------------------------------------------------------------------- 1 | const Utils = require('../util/utils') 2 | /** 3 | * 判断token是否可用 4 | */ 5 | module.exports = function () { 6 | return async function (ctx, next) { 7 | let wfParam = {} 8 | const { method, url, body } = ctx.request 9 | if (method.toLowerCase() === "get") { 10 | wfParam = Utils.parseQs(url) 11 | } else { 12 | wfParam = typeof body === "string" ? JSON.parse(body) : body 13 | } 14 | ctx.wfParam = wfParam 15 | await next() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /servers/monitor/config/node_clickhouse.js: -------------------------------------------------------------------------------- 1 | const { client } = require('../config/db') 2 | const path = require("path") 3 | const WebfunnyNodeClickhouse = require("webfunny-node-clickhouse") 4 | const { accountInfo } = require('./AccountConfig') 5 | const showSql = accountInfo.printSql && accountInfo.printSql.monitor 6 | class NodeClickhouse extends WebfunnyNodeClickhouse { 7 | constructor(schemaPath = "") { 8 | super({ schemaPath: schemaPath ? path.resolve(__dirname, schemaPath) : "", client, showSql }) 9 | } 10 | } 11 | 12 | module.exports = NodeClickhouse -------------------------------------------------------------------------------- /servers/center/config/node_clickhouse.js: -------------------------------------------------------------------------------- 1 | const { client } = require('../config/db_clickhouse') 2 | const path = require("path") 3 | const WebfunnyNodeClickhouse = require("webfunny-node-clickhouse") 4 | const { accountInfo } = require('./AccountConfig') 5 | const showSql = accountInfo.printSql && accountInfo.printSql.center 6 | class NodeClickhouse extends WebfunnyNodeClickhouse { 7 | constructor(schemaPath = "") { 8 | super({ schemaPath: schemaPath ? path.resolve(__dirname, schemaPath) : "", client, showSql }) 9 | } 10 | } 11 | 12 | module.exports = NodeClickhouse -------------------------------------------------------------------------------- /servers/monitor/router/routes/httpErrorHandleList.js: -------------------------------------------------------------------------------- 1 | const { HttpErrorHandleListController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | // 创建API接口错误处理信息 5 | router.post('/createHttpErrorHandleList', HttpErrorHandleListController.create); 6 | // 解决api接口错误 7 | router.post('/resolveHttpErrorInHandleList', HttpErrorHandleListController.resolveHttpErrorInHandleList); 8 | // 根据simpleHttpUrl判断解决状态 9 | router.post('/getSolveStatusBySimpleHttpUrl', HttpErrorHandleListController.getSolveStatusBySimpleHttpUrl); 10 | } 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | npm-debug.log 3 | node_modules 4 | dist 5 | *.swp 6 | *.swo 7 | .vscode/ 8 | log 9 | .DS_Store 10 | npm-debug.* 11 | node_modules 12 | dist 13 | *.swp 14 | *.swo 15 | .idea/ 16 | .vscode/ 17 | .history/ 18 | .VSCodeCounter/ 19 | config_variable 20 | logs/ 21 | bin/* 22 | interceptor 23 | config/db.js 24 | temp.min.js.map 25 | views/wf_center 26 | views/wf_monitor 27 | views/wf_event 28 | views/wf_logger 29 | views/wf_source_map 30 | schema_temp/ 31 | alarm/ 32 | sso/ 33 | util_cus/ 34 | .eslintrc 35 | lib/*.map 36 | H5SdkReleaseScript*.js 37 | webfunny.config -------------------------------------------------------------------------------- /servers/monitor/router/routes/resourceLoadInfo.js: -------------------------------------------------------------------------------- 1 | const { ResourceLoadInfoController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | /** 5 | * 静态资源加载状态接口 6 | */ 7 | // 获取静态资源错误分类 8 | router.get('/getResourceErrorCountByDay', ResourceLoadInfoController.getResourceErrorCountByDay); 9 | router.post('/getResourceLoadInfoListByDay', ResourceLoadInfoController.getResourceLoadInfoListByDay); 10 | // 获取最近24小时内,静态资源加载错误发生数量 11 | router.get('/getResourceErrorCountByHour', ResourceLoadInfoController.getResourceErrorCountByHour); 12 | } 13 | -------------------------------------------------------------------------------- /servers/center/router/routes/orderInfo.js: -------------------------------------------------------------------------------- 1 | // const OrderInfoController = require('../../controllers/orderInfo') 2 | const { OrderInfoController } = require("../../controllers/controllers.js") 3 | 4 | module.exports = (router) => { 5 | // 创建订单 6 | router.post('/createOrder', OrderInfoController.createOrder); 7 | // 查询订单 8 | router.post('/getOrderList', OrderInfoController.getOrderInfoList); 9 | // 检查相同订单 10 | router.post('/checkSameOrder', OrderInfoController.checkSameOrder); 11 | // 申请发票 12 | router.post('/applyInvoice', OrderInfoController.applyInvoice); 13 | } 14 | -------------------------------------------------------------------------------- /servers/center/router/routes/applicationConfig.js: -------------------------------------------------------------------------------- 1 | const { ApplicationConfigController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | // 通用配置接口 5 | router.post("/applicationConfig", ApplicationConfigController.create) 6 | router.post("/updateSysConfigInfo", ApplicationConfigController.updateSysConfigInfo) 7 | router.post("/getSysConfigInfo", ApplicationConfigController.getSysConfigInfo) 8 | router.post('/monitorBaseInfo', ApplicationConfigController.monitorBaseInfo); 9 | router.post('/eventBaseInfo', ApplicationConfigController.eventBaseInfo); 10 | } 11 | -------------------------------------------------------------------------------- /servers/monitor/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webfunny_monitor", 3 | "version": "3.1.15", 4 | "description": "这是webfunny的安装包", 5 | "main": "app.js", 6 | "scripts": { 7 | }, 8 | "repository": { 9 | "type": "git", 10 | "url": "git+https://github.com/a597873885/webfunny_monitor" 11 | }, 12 | "author": "jeffery", 13 | "license": "ISC", 14 | "bugs": { 15 | "url": "https://github.com/a597873885/webfunny_monitor/issues" 16 | }, 17 | "homepage": "https://github.com/a597873885/webfunny_monitor#readme", 18 | "dependencies": { 19 | }, 20 | "devDependencies": { 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /servers/event/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webfunny_event", 3 | "version": "1.3.33", 4 | "description": "这是webfunny_event的安装包", 5 | "main": "app.js", 6 | "scripts": { 7 | }, 8 | "repository": { 9 | "type": "git", 10 | "url": "git+https://github.com/a597873885/webfunny_monitor" 11 | }, 12 | "author": "jeffery", 13 | "license": "ISC", 14 | "bugs": { 15 | "url": "https://github.com/a597873885/webfunny_monitor/issues" 16 | }, 17 | "homepage": "https://github.com/a597873885/webfunny_monitor#readme", 18 | "dependencies": { 19 | }, 20 | "devDependencies": { 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /servers/center/middlreware/ignorePathRes.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | "/hasSuperAdminAccount", "/getValidateCode", "/refreshValidateCode", "/login", "/register", 3 | "/registerForAdmin", "/sendRegisterEmail", "/resetPwd", "/upBp", "/uploadMapFile", 4 | "/checkSsoToken", "/getUserTokenFromNetworkByToken", "/getSysConfigInfo", 5 | "/loginForApi", "/registerForApi", "/createNewTeamForApi", "/createNewProjectForApi", 6 | "/getTeams", "/getTeamListWithoutToken", "/getTeamDetail", "/updateTeam", "/createFlowData", 7 | "/getUserInfo", "/getSignatureForFeiShu", "/getAccessTokenByCodeForFeiShu", "/getCompanyList" 8 | ] -------------------------------------------------------------------------------- /servers/event/router/routes/common.js: -------------------------------------------------------------------------------- 1 | const { Common } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | // 获取日志服务所有相关信息 5 | router.get('/getSysInfo', Common.getSysInfo); 6 | // 获服务并发日志量 7 | router.post('/getConcurrencyByMinuteInHour', Common.getConcurrencyByMinuteInHour); 8 | // 获取某一天所有项目的日志总量 9 | router.post('/getLogCountInfoByDay', Common.getLogCountInfoByDay); 10 | /** 11 | * Docker 心跳检测 12 | */ 13 | router.get('/health', Common.dockerHealth); 14 | /** 15 | * echarts相关的静态数据 16 | */ 17 | router.get('/getEchartStatic', Common.getEchartStatic); 18 | } 19 | -------------------------------------------------------------------------------- /servers/event/router/routes/weHandleData.js: -------------------------------------------------------------------------------- 1 | const { WeHandleDataController } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | /** 5 | * 初始化数据 6 | */ 7 | router.get('/initWeFieldData', WeHandleDataController.initWeFieldData); 8 | router.get('/initWePointData', WeHandleDataController.initWePointData); 9 | router.get('/initWeTemplateData', WeHandleDataController.initWeTemplateData); 10 | /**升级2.0版本 */ 11 | router.get('/upgradeVersion', WeHandleDataController.upgradeVersion_2_0); 12 | router.get('/createDemoTemplateData', WeHandleDataController.createDemoTemplateData); 13 | } 14 | -------------------------------------------------------------------------------- /servers/logger/config/slave.js: -------------------------------------------------------------------------------- 1 | var app = require('../app'); 2 | var { accountInfo } = require("../config/AccountConfig") 3 | 4 | global.serverType = "slave" 5 | 6 | var port = normalizePort(process.env.PORT || accountInfo.localServerPort); 7 | app.listen(port); 8 | 9 | function normalizePort(val) { 10 | var port = parseInt(val, 10); 11 | 12 | if (isNaN(port)) { 13 | // named pipe 14 | return val; 15 | } 16 | 17 | if (port >= 0) { 18 | // port number 19 | return port; 20 | } 21 | 22 | return false; 23 | } 24 | -------------------------------------------------------------------------------- /servers/logger/router/routes/logProject.js: -------------------------------------------------------------------------------- 1 | const { LogProjectController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | /** 5 | * 应用接口 6 | */ 7 | // 创建新的监控项目 8 | router.post('/logProject/createNewProject', LogProjectController.createNewProject); 9 | // 创建新的监控项目API 10 | router.post('/logProject/createNewProjectForApi', LogProjectController.createNewProjectForApi); 11 | // 设置日志保存时间 12 | router.post('/logProject/resetSaveDays', LogProjectController.resetSaveDays); 13 | // 获取项目列表 14 | router.post('/logProject/getProjectList', LogProjectController.getProjectList); 15 | } 16 | -------------------------------------------------------------------------------- /servers/event/router/routes/buryPointAlarmMessage.js: -------------------------------------------------------------------------------- 1 | const { BuryPointAlarmMessageController } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | // 报警记录 5 | router.post('/buryPointAlarmMessage/create', BuryPointAlarmMessageController.create); 6 | router.post('/buryPointAlarmMessage/list', BuryPointAlarmMessageController.list); 7 | router.get('/buryPointAlarmMessage/detail', BuryPointAlarmMessageController.detail); 8 | router.post('/buryPointAlarmMessage/delete', BuryPointAlarmMessageController.delete); 9 | 10 | router.post('/buryPointAlarmMessage/test', BuryPointAlarmMessageController.testSendNotice); 11 | } 12 | -------------------------------------------------------------------------------- /servers/monitor/router/routes/jsErrorHandleList.js: -------------------------------------------------------------------------------- 1 | const { JsErrorHandleListController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | /** 5 | * JS错误处理接口 6 | */ 7 | // 创建JS错误处理信息 8 | router.post('/createJsErrorHandleList', JsErrorHandleListController.create); 9 | // 解决JS错误 10 | router.post('/resolveJsErrorInHandleList', JsErrorHandleListController.resolveJsErrorInHandleList); 11 | // 根据errorMessage判断解决状态 12 | router.post('/getSolveStatusByErrorMsg', JsErrorHandleListController.getSolveStatusByErrorMsg); 13 | // 处理概览 14 | router.post('/getSolveChartByErrorMsg', JsErrorHandleListController.getSolveChartByErrorMsg); 15 | } 16 | -------------------------------------------------------------------------------- /servers/center/config/province.js: -------------------------------------------------------------------------------- 1 | const provinces = { 2 | "AH": "安徽", 3 | "BJ": "北京", 4 | "CQ": "重庆", 5 | "FJ": "福建", 6 | "GD": "广东", 7 | "GS": "甘肃", 8 | "GX": "广西", 9 | "GZ": "广州", 10 | "HA": "河南", 11 | "HE": "河北", 12 | "HB": "湖北", 13 | "HI": "海南", 14 | "HL": "黑龙江", 15 | "HN": "湖南", 16 | "JL": "吉林", 17 | "JS": "江苏", 18 | "JX": "江西", 19 | "LN": "辽宁", 20 | "NM": "内蒙", 21 | "NX": "宁夏", 22 | "SC": "四川", 23 | "SD": "山东", 24 | "SH": "上海", 25 | "SN": "陕西", 26 | "SX": "山西", 27 | "TJ": "天津", 28 | "XJ": "新疆", 29 | "XZ": "西藏", 30 | "YN": "云南", 31 | "ZJ": "浙江" 32 | } 33 | module.exports = provinces -------------------------------------------------------------------------------- /servers/event/config/province.js: -------------------------------------------------------------------------------- 1 | const provinces = { 2 | "AH": "安徽", 3 | "BJ": "北京", 4 | "CQ": "重庆", 5 | "FJ": "福建", 6 | "GD": "广东", 7 | "GS": "甘肃", 8 | "GX": "广西", 9 | "GZ": "广州", 10 | "HA": "河南", 11 | "HE": "河北", 12 | "HB": "湖北", 13 | "HI": "海南", 14 | "HL": "黑龙江", 15 | "HN": "湖南", 16 | "JL": "吉林", 17 | "JS": "江苏", 18 | "JX": "江西", 19 | "LN": "辽宁", 20 | "NM": "内蒙", 21 | "NX": "宁夏", 22 | "SC": "四川", 23 | "SD": "山东", 24 | "SH": "上海", 25 | "SN": "陕西", 26 | "SX": "山西", 27 | "TJ": "天津", 28 | "XJ": "新疆", 29 | "XZ": "西藏", 30 | "YN": "云南", 31 | "ZJ": "浙江" 32 | } 33 | module.exports = provinces -------------------------------------------------------------------------------- /servers/logger/config/province.js: -------------------------------------------------------------------------------- 1 | const provinces = { 2 | "AH": "安徽", 3 | "BJ": "北京", 4 | "CQ": "重庆", 5 | "FJ": "福建", 6 | "GD": "广东", 7 | "GS": "甘肃", 8 | "GX": "广西", 9 | "GZ": "广州", 10 | "HA": "河南", 11 | "HE": "河北", 12 | "HB": "湖北", 13 | "HI": "海南", 14 | "HL": "黑龙江", 15 | "HN": "湖南", 16 | "JL": "吉林", 17 | "JS": "江苏", 18 | "JX": "江西", 19 | "LN": "辽宁", 20 | "NM": "内蒙", 21 | "NX": "宁夏", 22 | "SC": "四川", 23 | "SD": "山东", 24 | "SH": "上海", 25 | "SN": "陕西", 26 | "SX": "山西", 27 | "TJ": "天津", 28 | "XJ": "新疆", 29 | "XZ": "西藏", 30 | "YN": "云南", 31 | "ZJ": "浙江" 32 | } 33 | module.exports = provinces -------------------------------------------------------------------------------- /servers/monitor/config/province.js: -------------------------------------------------------------------------------- 1 | const provinces = { 2 | "AH": "安徽", 3 | "BJ": "北京", 4 | "CQ": "重庆", 5 | "FJ": "福建", 6 | "GD": "广东", 7 | "GS": "甘肃", 8 | "GX": "广西", 9 | "GZ": "广州", 10 | "HA": "河南", 11 | "HE": "河北", 12 | "HB": "湖北", 13 | "HI": "海南", 14 | "HL": "黑龙江", 15 | "HN": "湖南", 16 | "JL": "吉林", 17 | "JS": "江苏", 18 | "JX": "江西", 19 | "LN": "辽宁", 20 | "NM": "内蒙", 21 | "NX": "宁夏", 22 | "SC": "四川", 23 | "SD": "山东", 24 | "SH": "上海", 25 | "SN": "陕西", 26 | "SX": "山西", 27 | "TJ": "天津", 28 | "XJ": "新疆", 29 | "XZ": "西藏", 30 | "YN": "云南", 31 | "ZJ": "浙江" 32 | } 33 | module.exports = provinces -------------------------------------------------------------------------------- /utils/timer.js: -------------------------------------------------------------------------------- 1 | /** 定时器逻辑 */ 2 | const log = require("../config/log"); 3 | module.exports = (callback) => { 4 | const startTime = new Date().getTime(); 5 | let count = 0; 6 | const fixed = async () => { 7 | count ++; 8 | const tempDate = new Date() 9 | const tempTime = new Date().getTime() 10 | const wrongTime = startTime + count * 1000 11 | var offset = tempTime - wrongTime; 12 | var nextTime = 1000 - offset; 13 | if (nextTime < 0) nextTime = 0; 14 | try { 15 | callback(tempDate) 16 | } catch(e) { 17 | log.printError("定时器执行报错:", e) 18 | } 19 | setTimeout(fixed, nextTime); 20 | } 21 | setTimeout(fixed, 1000); 22 | } -------------------------------------------------------------------------------- /servers/event/router/routes/buryPointUserBehaviorRelation.js: -------------------------------------------------------------------------------- 1 | const BuryPointUserBehaviorRelationController = require('../../controllers/controllers') 2 | 3 | 4 | module.exports = (router) => { 5 | // 来源点位管理 6 | router.post('/buryPointUserBehaviorRelation/getPointRelationList', BuryPointUserBehaviorRelationController.BuryPointUserBehaviorRelationController.getPointRelationList); 7 | router.post('/buryPointUserBehaviorRelation/getSourceFieldValueList', BuryPointUserBehaviorRelationController.BuryPointUserBehaviorRelationController.getSourceFieldValueList); 8 | router.post('/buryPointUserBehaviorRelation/test', BuryPointUserBehaviorRelationController.BuryPointUserBehaviorRelationController.test); 9 | } 10 | -------------------------------------------------------------------------------- /servers/monitor/util/timer.js: -------------------------------------------------------------------------------- 1 | /** 定时器逻辑 */ 2 | const log = require("../config/log"); 3 | module.exports = (callback) => { 4 | const startTime = new Date().getTime(); 5 | let count = 0; 6 | const fixed = async () => { 7 | count ++; 8 | const tempDate = new Date() 9 | const tempTime = new Date().getTime() 10 | const wrongTime = startTime + count * 1000 11 | var offset = tempTime - wrongTime; 12 | var nextTime = 1000 - offset; 13 | if (nextTime < 0) nextTime = 0; 14 | try { 15 | callback(tempDate) 16 | } catch(e) { 17 | log.printError("定时器执行报错:", e) 18 | } 19 | setTimeout(fixed, nextTime); 20 | } 21 | setTimeout(fixed, 1000); 22 | } -------------------------------------------------------------------------------- /DES_DOCKER.md: -------------------------------------------------------------------------------- 1 | ### 请先完成正常部署 2 | 3 | 完成[正常部署](https://github.com/a597873885/webfunny_monitor/blob/master/DES.md)后,才能够生成正确的镜像文件。 4 | 5 | ### Docker部署方式 6 | 7 | 0.完成正常部署后,就可以将整个系统作为镜像文件进行打包。 8 | 9 | 1.项目内我增加了dockerfile, 生成image文件,执行命令$: docker image build -t webfunny_monitor --platform linux/amd64 . 10 | 11 | 2.生成容器,执行命令$: docker container run -p 8010:8010 -p 8011:8011 -it webfunny_monitor 12 | 13 | 监控系统会使用两个端口号:8010、8011,所以需要映射出来; 14 | 15 | 3.你可以自己将镜像文件发布到云上,然后再使用。 16 | 17 | 4.心跳检测地址: 域名 + /server/health 18 | 19 | 注意:容器配置要给项目根目录下 createTable.sh,restart.sh 脚本文件执行权限哦。 chmod 755 restart.sh,chmod 755 createTable.sh 20 | 21 | 22 | 其他操作,请参考[docker入门 阮一峰](http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html)。 23 | -------------------------------------------------------------------------------- /servers/monitor/router/routes/commonTable.js: -------------------------------------------------------------------------------- 1 | const { CommonTableController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | /** 5 | * 查询表名 6 | */ 7 | router.post('/getTableList', CommonTableController.getTableList); 8 | /** 9 | * drop 表结构 10 | */ 11 | router.post('/dropTable', CommonTableController.dropTable); 12 | /** 13 | * create表结构 14 | */ 15 | router.post('/createLogTable', CommonTableController.createLogTable); 16 | /** 17 | * 更新表结构 18 | */ 19 | router.post('/updateTableBySql', CommonTableController.updateTableBySql); 20 | router.post('/updateFieldBySql', CommonTableController.updateFieldBySql); 21 | } 22 | -------------------------------------------------------------------------------- /servers/center/router/routes/noticeTemplate.js: -------------------------------------------------------------------------------- 1 | const { NoticeTemplateController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | router.get('/alarm/getNoticeTemplate', NoticeTemplateController.getNoticeTemplate) 5 | router.post('/alarm/createNoticeTemplate', NoticeTemplateController.createNoticeTemplate) 6 | router.get('/alarm/getNoticeTemplateById', NoticeTemplateController.getNoticeTemplateById) 7 | router.get('/alarm/deleteNoticeTemplate', NoticeTemplateController.deleteNoticeTemplate) 8 | router.put('/alarm/updateNoticeTemplate', NoticeTemplateController.updateNoticeTemplate) 9 | router.get('/alarm/getAllNoticeTemplate', NoticeTemplateController.getAllNoticeTemplate) 10 | } 11 | -------------------------------------------------------------------------------- /servers/logger/util/timer.js: -------------------------------------------------------------------------------- 1 | /** 定时器逻辑 */ 2 | // const log = require("../config/log"); 3 | const log = require("../../../config/log"); 4 | module.exports = (callback) => { 5 | const startTime = new Date().getTime(); 6 | let count = 0; 7 | const fixed = async () => { 8 | count ++; 9 | const tempDate = new Date() 10 | const tempTime = new Date().getTime() 11 | const wrongTime = startTime + count * 1000 12 | var offset = tempTime - wrongTime; 13 | var nextTime = 1000 - offset; 14 | if (nextTime < 0) nextTime = 0; 15 | try { 16 | callback(tempDate) 17 | } catch(e) { 18 | log.printError("定时器执行报错:", e) 19 | } 20 | setTimeout(fixed, nextTime); 21 | } 22 | setTimeout(fixed, 1000); 23 | } -------------------------------------------------------------------------------- /servers/event/schema/schemaLogList.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | "../schema/customerPV", 3 | "../schema/behaviorInfo", 4 | "../schema/customerPvLeave", 5 | "../schema/customerStayTime", 6 | "../schema/extendBehaviorInfo", 7 | "../schema/HttpErrorInfo", 8 | "../schema/HttpLogInfo.js", 9 | "../schema/HttpLogReqInfo", 10 | "../schema/javascriptErrorInfo", 11 | "../schema/pageLoadInfo", 12 | "../schema/pageLoadInfoByMinute", 13 | "../schema/resourceLoadInfo", 14 | "../schema/infoCountByDay", 15 | "../schema/infoCountByHour", 16 | "../schema/deviceInfoCountByDay", 17 | "../schema/deviceInfoCountByHour", 18 | "../schema/jsErrorHandleList", 19 | "../schema/httpErrorHandleList", 20 | "../schema/loadTimeInfoByHour", 21 | ] -------------------------------------------------------------------------------- /servers/logger/config/db.js: -------------------------------------------------------------------------------- 1 | const sequelizeTemp = require('./local_db') 2 | const Sequelize = require('sequelize'); 3 | let db = null 4 | if (sequelizeTemp) { 5 | db = sequelizeTemp.sequelize 6 | } else { 7 | const sequelize = new Sequelize('database', 'username', 'password', { 8 | host: 'ip', 9 | dialect: 'mysql', 10 | // operatorsAliases: false, 11 | dialectOptions: { 12 | charset: "utf8mb4", 13 | supportBigNumbers: true, 14 | bigNumberStrings: true 15 | }, 16 | 17 | pool: { 18 | max: 30, 19 | min: 0, 20 | acquire: 30000, 21 | idle: 10000 22 | }, 23 | timezone: '+08:00' //东八时区 24 | }); 25 | 26 | db = sequelize 27 | 28 | } 29 | module.exports = { 30 | sequelize: db, 31 | client: db, 32 | } 33 | -------------------------------------------------------------------------------- /servers/monitor/router/routes/ignoreError.js: -------------------------------------------------------------------------------- 1 | const { IgnoreErrorController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | /** 5 | * 忽略js错误信息接口 6 | */ 7 | // 创建忽略js错误信息 8 | router.post('/ignoreError', IgnoreErrorController.create); 9 | // 获取忽略js错误信息列表 10 | router.get('/ignoreError', IgnoreErrorController.getIgnoreErrorList); 11 | // 获取应用忽略js错误信息列表 12 | router.get('/ignoreErrorByApplication', IgnoreErrorController.ignoreErrorByApplication); 13 | // 获取忽略js错误信息详情 14 | router.get('/ignoreError/:id', IgnoreErrorController.detail); 15 | // 删除忽略js错误信息 16 | router.delete('/ignoreError/:id', IgnoreErrorController.delete); 17 | // 更改忽略js错误信息 18 | router.put('/ignoreError/:id', IgnoreErrorController.update); 19 | } 20 | -------------------------------------------------------------------------------- /servers/monitor/schema/schemaLogList.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | "../schema/customerPV", 3 | "../schema/behaviorInfo", 4 | "../schema/customerPvLeave", 5 | "../schema/customerStayTime", 6 | "../schema/extendBehaviorInfo", 7 | "../schema/HttpErrorInfo", 8 | "../schema/HttpLogInfo.js", 9 | "../schema/HttpLogReqInfo", 10 | "../schema/javascriptErrorInfo", 11 | "../schema/pageLoadInfo", 12 | "../schema/screenShotInfo", 13 | "../schema/pageLoadInfoByMinute", 14 | "../schema/resourceLoadInfo", 15 | "../schema/infoCountByDay", 16 | "../schema/infoCountByHour", 17 | "../schema/deviceInfoCountByDay", 18 | "../schema/deviceInfoCountByHour", 19 | "../schema/jsErrorHandleList", 20 | "../schema/httpErrorHandleList", 21 | "../schema/loadTimeInfoByHour", 22 | ] -------------------------------------------------------------------------------- /servers/event/router/routes/buryPointTask.js: -------------------------------------------------------------------------------- 1 | const { BuryPointTaskController } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | //任务管理 5 | router.post('/buryPointTask/create', BuryPointTaskController.create); 6 | router.post('/buryPointTask/delete', BuryPointTaskController.delete); 7 | router.post('/buryPointTask/batchDeletion', BuryPointTaskController.batchDeletion); 8 | router.post('/buryPointTask/update', BuryPointTaskController.update); 9 | router.post('/buryPointTask/list', BuryPointTaskController.list); 10 | router.post('/buryPointTask/detail', BuryPointTaskController.detail); 11 | router.post('/buryPointTask/updateStatus', BuryPointTaskController.updateStatus); 12 | router.post('/buryPointTask/changeHandleMan', BuryPointTaskController.changeHandleMan); 13 | } 14 | -------------------------------------------------------------------------------- /servers/center/router/routes/alarmRule.js: -------------------------------------------------------------------------------- 1 | const { AlarmRuleController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | router.get('/alarm/getAlarmRuleList', AlarmRuleController.getAlarmRule) 5 | router.post('/alarm/createAlarmRule', AlarmRuleController.createAlarmRule) 6 | router.get('/alarm/getAlarmRuleById', AlarmRuleController.getAlarmRuleById) 7 | router.post('/alarm/deleteAlarmRule', AlarmRuleController.deleteAlarmRule) 8 | router.put('/alarm/updateAlarmRule', AlarmRuleController.updateAlarmRule) 9 | router.post('/alarm/updateAlarmRuleStatus', AlarmRuleController.updateAlarmRuleStatus) 10 | router.post('/alarm/addRuleForApplication', AlarmRuleController.addRuleForApplication) 11 | router.post('/alarm/getRulesOfApplication', AlarmRuleController.getRulesOfApplication) 12 | } 13 | -------------------------------------------------------------------------------- /servers/center/router/routes/flowDataInfoByDay.js: -------------------------------------------------------------------------------- 1 | // const FlowDataInfoByDayController = require('../../controllers/flowDataInfoByDay') 2 | const { FlowDataInfoByDayController } = require("../../controllers/controllers.js") 3 | 4 | module.exports = (router) => { 5 | // 获取总流量信息 6 | router.get('/getTotalFlowData', FlowDataInfoByDayController.getTotalFlowData); 7 | // 获取流量趋势数据 8 | router.get('/getFlowTrendData', FlowDataInfoByDayController.getFlowTrendData); 9 | // 获取流量列表数据 10 | router.get('/getFlowTableListData', FlowDataInfoByDayController.getFlowTableListData); 11 | // 获取流量列表数据 12 | router.get('/getFlowListByCompanyIdAndProjectIds', FlowDataInfoByDayController.getFlowListByCompanyIdAndProjectIds); 13 | // 获取流量耗尽的公司id 14 | router.get('/getLimitCompanyIdForCloud', FlowDataInfoByDayController.getLimitCompanyIdForCloud); 15 | } 16 | -------------------------------------------------------------------------------- /servers/event/router/routes/buryPointCircleSelect.js: -------------------------------------------------------------------------------- 1 | // const BuryPointCircleSelectController = require('../../controllers/buryPointCircleSelect') 2 | const { BuryPointCircleSelectController } = require("../../controllers/controllers") 3 | 4 | module.exports = (router) => { 5 | // 圈选人管理 6 | router.post('/buryPointCircleSelect/create', BuryPointCircleSelectController.create); 7 | router.post('/buryPointCircleSelect/update', BuryPointCircleSelectController.update); 8 | router.post('/buryPointCircleSelect/getPageList', BuryPointCircleSelectController.getPageList); 9 | router.post('/buryPointCircleSelect/delete', BuryPointCircleSelectController.delete); 10 | router.get('/buryPointCircleSelect/detail', BuryPointCircleSelectController.detail); 11 | router.post('/buryPointCircleSelect/getAllBindUserId', BuryPointCircleSelectController.getAllBindUserId); 12 | } 13 | -------------------------------------------------------------------------------- /servers/event/router/routes/buryPointVisualTracking.js: -------------------------------------------------------------------------------- 1 | // const BuryPointVisualTrackingController = require('../../controllers/buryPointVisualTracking') 2 | const { BuryPointVisualTrackingController } = require("../../controllers/controllers") 3 | 4 | module.exports = (router) => { 5 | // 可视化全埋点 6 | router.post('/buryPointVisualTracking/create', BuryPointVisualTrackingController.create); 7 | router.post('/buryPointVisualTracking/update', BuryPointVisualTrackingController.update); 8 | router.post('/buryPointVisualTracking/getPageList', BuryPointVisualTrackingController.getPageList); 9 | router.post('/buryPointVisualTracking/delete', BuryPointVisualTrackingController.delete); 10 | router.get('/buryPointVisualTracking/detail', BuryPointVisualTrackingController.detail); 11 | router.post('/buryPointVisualTracking/updateNameById', BuryPointVisualTrackingController.updateNameById); 12 | } 13 | -------------------------------------------------------------------------------- /servers/center/router/routes/product.js: -------------------------------------------------------------------------------- 1 | // const ProductController = require('../../controllers/product') 2 | const { ProductController } = require("../../controllers/controllers.js") 3 | 4 | module.exports = (router) => { 5 | /** 旧版接口,已无效 */ 6 | // 获取当月生效的产品 7 | router.post('/getProjectByCompanyIdForMonth', ProductController.getProjectByCompanyIdForMonth); 8 | // 创建产品 9 | router.post('/createNewProduct', ProductController.createNewProduct); 10 | // 批量创建产品 11 | router.post('/batchCreateProduct', ProductController.batchCreateProduct); 12 | // 批量更新产品 13 | router.post('/batchUpdateProduct', ProductController.batchUpdateProduct); 14 | // 批量更新和创建产品 15 | router.post('/batchCreateOrUpdateProduct', ProductController.batchCreateOrUpdateProduct); 16 | /** 旧版接口,已无效 */ 17 | 18 | // 获取当前有效的产品 19 | router.post('/getValidProduct', ProductController.getValidProduct); 20 | } 21 | -------------------------------------------------------------------------------- /servers/event/router/routes/buryPointAlarm.js: -------------------------------------------------------------------------------- 1 | const { BuryPointAlarmController } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | // 告警规则 5 | router.post('/buryPointAlarm/create', BuryPointAlarmController.create); 6 | router.post('/buryPointAlarm/copy', BuryPointAlarmController.copy); 7 | router.post('/buryPointAlarm/update', BuryPointAlarmController.update); 8 | router.post('/buryPointAlarm/updateStatus', BuryPointAlarmController.updateStatus); 9 | router.post('/buryPointAlarm/list', BuryPointAlarmController.list); 10 | router.post('/buryPointAlarm/getListByProjectId', BuryPointAlarmController.getListByProjectId); 11 | router.post('/buryPointAlarm/delete', BuryPointAlarmController.delete); 12 | router.post('/buryPointAlarm/batchDeletion', BuryPointAlarmController.batchDeletion); 13 | router.get('/buryPointAlarm/detail', BuryPointAlarmController.detail); 14 | } 15 | -------------------------------------------------------------------------------- /servers/monitor/config/errorList.js: -------------------------------------------------------------------------------- 1 | export const JsErrorType = { 2 | syntaxerror: { 3 | name: "语法错误", 4 | des: "这种问题一般为:JSON格式转换、变量名的命名不规范,给关键字进行赋值,花括号没有成对儿出现等等" 5 | }, 6 | referenceerror: { 7 | name: "引用错误", 8 | des: "这种问题一般为:引用一个不存在的变量、将一个值分配给无法分配的对象等等" 9 | }, 10 | rangeerror: { 11 | name: "范围错误", 12 | des: "这种问题一般为:一个值超出有效范围时会发生的错误" 13 | }, 14 | typeerror: { 15 | name: "类型错误", 16 | des: "这种问题一般为:变量或参数不是预期类型时发生的错误" 17 | }, 18 | urierror: { 19 | name: "URL错误", 20 | des: "这种问题一般为:调用相关函数的参数不正确时发生的错误" 21 | }, 22 | "script error": { 23 | name: "第三方脚本错误", 24 | des: "这种问题一般为:引入非同源的第三方js文件中发生的错误" 25 | }, 26 | unhandledrejection: { 27 | name: "未处理的异常", 28 | des: "这种问题一般为:没有处理Promise异常结果时发生的错误" 29 | }, 30 | customizeerror: { 31 | name: "自定义错误", 32 | des: "这种问题一般为:通过console.error打印的错误信息,一般用于提醒", 33 | }, 34 | unknown: { 35 | name: "未知错误类型", 36 | des: "" 37 | } 38 | } -------------------------------------------------------------------------------- /servers/event/router/routes/buryPointSdkRelease.js: -------------------------------------------------------------------------------- 1 | const { SdkReleaseController } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | /** 5 | * SDK发布接口 6 | */ 7 | router.post('/sdkRelease/create', SdkReleaseController.create); 8 | router.post('/sdkRelease/update', SdkReleaseController.update); 9 | router.post('/sdkRelease/delete', SdkReleaseController.delete); 10 | router.get('/sdkRelease/detail', SdkReleaseController.detail); 11 | router.post('/sdkRelease/changeUploadDomain', SdkReleaseController.changeUploadDomain); 12 | router.post('/sdkRelease/page', SdkReleaseController.getPageList); 13 | router.post('/sdkRelease/list', SdkReleaseController.getList); 14 | router.get('/sdkRelease/AllList', SdkReleaseController.getAllList); 15 | router.post('/sdkRelease/createReleaseScript', SdkReleaseController.createReleaseScript); 16 | router.get('/sdkRelease/downLoad', SdkReleaseController.downloadScript); 17 | } 18 | -------------------------------------------------------------------------------- /servers/monitor/router/routesFail.js: -------------------------------------------------------------------------------- 1 | const Fail = require('../controllers/fail') 2 | const Common = require('../controllers/common') 3 | const UserController = require("../controllers/user") 4 | const createRoutesFail = (router) => { 5 | // 用户激活码无效 6 | router.get('/getSysInfo', Common.getSysInfo); 7 | 8 | router.post('/createPurchaseCode', Fail.createPurchaseCode); 9 | 10 | // 管理员注册接口 11 | router.post('/registerForAdmin', UserController.registerForAdmin); 12 | 13 | // 注册用户 14 | router.get('/register', UserController.register); 15 | 16 | // 登录 17 | router.post('/login', UserController.login); 18 | // 重置验证码 19 | router.post('/refreshValidateCode', UserController.refreshValidateCode) 20 | // 获取验证码 21 | router.post('/getValidateCode', UserController.getValidateCode) 22 | 23 | /** 24 | * Docker 心跳检测 25 | */ 26 | router.get('/health', Common.dockerHealth); 27 | } 28 | 29 | module.exports = { 30 | createRoutesFail 31 | } -------------------------------------------------------------------------------- /servers/logger/config/log_server.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /** 4 | * Module dependencies. 5 | */ 6 | 7 | var app = require('../app'); 8 | var { accountInfo } = require("./AccountConfig") 9 | // var debug = require('debug')('demo:server'); 10 | // var http = require('http'); 11 | global.serverType = "master" 12 | 13 | /** 14 | * Get port from environment and store in Express. 15 | */ 16 | 17 | var port = normalizePort(process.env.PORT || accountInfo.localServerPort); 18 | 19 | /** 20 | * Listen on provided port, on all network interfaces. 21 | */ 22 | 23 | app.listen(port, () => { 24 | // console.log("服务启动中...") 25 | }); 26 | 27 | /** 28 | * Normalize a port into a number, string, or false. 29 | */ 30 | 31 | function normalizePort(val) { 32 | var port = parseInt(val, 10); 33 | 34 | if (isNaN(port)) { 35 | // named pipe 36 | return val; 37 | } 38 | 39 | if (port >= 0) { 40 | // port number 41 | return port; 42 | } 43 | 44 | return false; 45 | } 46 | -------------------------------------------------------------------------------- /servers/event/router/routes/buryPointTest.js: -------------------------------------------------------------------------------- 1 | const { BuryPointTestController } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | /** 5 | * 打点测试 6 | */ 7 | router.post('/buryPointTest/page', BuryPointTestController.getPageList); 8 | // 查询失败的 9 | router.post('/buryPointTest/page/error', BuryPointTestController.failList); 10 | // 查询失败的 11 | router.post('/buryPointTest/page/failOverView', BuryPointTestController.failOverView); 12 | // 点位查询 13 | router.post('/buryPointTest/search', BuryPointTestController.search); 14 | // api导出数据 15 | router.post('/buryPointTest/apiExport', BuryPointTestController.apiExport); 16 | // 根据userId查询点位列表 17 | router.post('/buryPointTest/searchAllRecord', BuryPointTestController.searchAllRecord); 18 | // 根据字段的key查询字段名称 19 | router.post('/buryPointTest/searchFieldName', BuryPointTestController.searchFieldName); 20 | // 点位查询导出 21 | router.get('/buryPointTest/searchExport', BuryPointTestController.exportData); 22 | } 23 | -------------------------------------------------------------------------------- /servers/center/util/status-code.js: -------------------------------------------------------------------------------- 1 | const statusCode = { 2 | ERROR_500: (msg) => { 3 | return { 4 | code: 500, 5 | msg 6 | } 7 | }, 8 | ERROR_401: (msg) => { 9 | return { 10 | code: 401, 11 | msg 12 | } 13 | }, 14 | 15 | ERROR_403: (msg) => { 16 | return { 17 | code: 403, 18 | msg 19 | } 20 | }, 21 | 22 | ERROR_404: (msg) => { 23 | return { 24 | code: 404, 25 | msg 26 | } 27 | }, 28 | 29 | ERROR_412: (msg) => { 30 | return { 31 | code: 412, 32 | msg 33 | } 34 | }, 35 | 36 | ERROR_413: (msg) => { 37 | return { 38 | code: 413, 39 | msg 40 | } 41 | }, 42 | 43 | SUCCESS_200: (msg, data) => { 44 | return { 45 | code: 200, 46 | msg, 47 | data, 48 | } 49 | } 50 | } 51 | 52 | module.exports = statusCode -------------------------------------------------------------------------------- /servers/logger/util/status-code.js: -------------------------------------------------------------------------------- 1 | const statusCode = { 2 | ERROR_500: (msg) => { 3 | return { 4 | code: 500, 5 | msg 6 | } 7 | }, 8 | ERROR_401: (msg) => { 9 | return { 10 | code: 401, 11 | msg 12 | } 13 | }, 14 | 15 | ERROR_403: (msg) => { 16 | return { 17 | code: 403, 18 | msg 19 | } 20 | }, 21 | 22 | ERROR_404: (msg) => { 23 | return { 24 | code: 404, 25 | msg 26 | } 27 | }, 28 | 29 | ERROR_412: (msg) => { 30 | return { 31 | code: 412, 32 | msg 33 | } 34 | }, 35 | 36 | ERROR_413: (msg) => { 37 | return { 38 | code: 413, 39 | msg 40 | } 41 | }, 42 | 43 | SUCCESS_200: (msg, data) => { 44 | return { 45 | code: 200, 46 | msg, 47 | data, 48 | } 49 | } 50 | } 51 | 52 | module.exports = statusCode -------------------------------------------------------------------------------- /servers/monitor/router/routes/customerStayTime.js: -------------------------------------------------------------------------------- 1 | const { CustomerStayTimeController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | // 每小时的平均在线时长 5 | router.post('/getStayTimeForHour', CustomerStayTimeController.getStayTimeForHour); 6 | // 平均在线时长 7 | router.post('/getStayTimeForEveryDay', CustomerStayTimeController.getStayTimeForEveryDay); 8 | // 获取每天的平均在线时长和平均活跃时长 9 | router.post('/getAvgStayTimeForDay', CustomerStayTimeController.getAvgStayTimeForDay); 10 | // 获取每天的在线时长范围的正态分布图 11 | router.post('/getStayTimeScopeForDay', CustomerStayTimeController.getStayTimeScopeForDay); 12 | //根据userId获取每天的在线时长 13 | router.post('/getStayTimeForDayByPerson', CustomerStayTimeController.getStayTimeForDayByPerson); 14 | //根据userId获取每天的在线时长记录 15 | router.post('/getStayTimeForBehaviorByPerson', CustomerStayTimeController.getStayTimeForBehaviorByPerson); 16 | // 根据在线时间拍讯获取页面列表 17 | router.post('/getPageListOrderByStayTime', CustomerStayTimeController.getPageListOrderByStayTime); 18 | } 19 | -------------------------------------------------------------------------------- /servers/monitor/util/status-code.js: -------------------------------------------------------------------------------- 1 | const statusCode = { 2 | ERROR_500: (msg) => { 3 | return { 4 | code: 500, 5 | msg 6 | } 7 | }, 8 | ERROR_401: (msg) => { 9 | return { 10 | code: 401, 11 | msg 12 | } 13 | }, 14 | 15 | ERROR_403: (msg) => { 16 | return { 17 | code: 403, 18 | msg 19 | } 20 | }, 21 | 22 | ERROR_404: (msg) => { 23 | return { 24 | code: 404, 25 | msg 26 | } 27 | }, 28 | 29 | ERROR_412: (msg) => { 30 | return { 31 | code: 412, 32 | msg 33 | } 34 | }, 35 | 36 | ERROR_413: (msg) => { 37 | return { 38 | code: 413, 39 | msg 40 | } 41 | }, 42 | 43 | SUCCESS_200: (msg, data) => { 44 | return { 45 | code: 200, 46 | msg, 47 | data, 48 | } 49 | } 50 | } 51 | 52 | module.exports = statusCode -------------------------------------------------------------------------------- /utils/status-code.js: -------------------------------------------------------------------------------- 1 | const statusCode = { 2 | ERROR_500: (msg, data) => { 3 | return { 4 | code: 500, 5 | msg, 6 | data 7 | } 8 | }, 9 | ERROR_401: (msg) => { 10 | return { 11 | code: 401, 12 | msg 13 | } 14 | }, 15 | 16 | ERROR_403: (msg) => { 17 | return { 18 | code: 403, 19 | msg 20 | } 21 | }, 22 | 23 | ERROR_404: (msg) => { 24 | return { 25 | code: 404, 26 | msg 27 | } 28 | }, 29 | 30 | ERROR_412: (msg) => { 31 | return { 32 | code: 412, 33 | msg 34 | } 35 | }, 36 | 37 | ERROR_413: (msg) => { 38 | return { 39 | code: 413, 40 | msg 41 | } 42 | }, 43 | 44 | SUCCESS_200: (msg, data) => { 45 | return { 46 | code: 200, 47 | msg, 48 | data, 49 | } 50 | } 51 | } 52 | 53 | module.exports = statusCode -------------------------------------------------------------------------------- /servers/center/config/db_local.js: -------------------------------------------------------------------------------- 1 | 2 | const Sequelize = require('sequelize'); 3 | const { accountInfo } = require('./AccountConfig'); 4 | 5 | const {write, read} = accountInfo.mysqlConfig; 6 | const replication = { 7 | read: read, 8 | write: { host: write.ip, username: write.userName, password: write.password } 9 | } 10 | 11 | const configList = { 12 | host: write.ip, 13 | port: write.port, 14 | logging: (sql) => { 15 | // 这里处理sql的日志,暂时不打印 16 | // console.log(sql) 17 | }, 18 | dialect: 'mysql', 19 | // operatorsAliases: false, 20 | dialectOptions: { 21 | charset: "utf8mb4", 22 | supportBigNumbers: true, 23 | bigNumberStrings: true 24 | }, 25 | pool: { 26 | max: 500, 27 | min: 0, 28 | acquire: 30000, 29 | idle: 10000 30 | }, 31 | timezone: '+08:00' //东八时区 32 | } 33 | if (read && read.length > 0) { 34 | configList.replication = replication 35 | } 36 | // 下一个迭代数据库 37 | const sequelize = new Sequelize(write.dataBaseName, write.userName, write.password, { 38 | ...configList 39 | }) 40 | 41 | module.exports = { 42 | sequelize: sequelize 43 | } 44 | -------------------------------------------------------------------------------- /servers/event/router/routes/buryPointTemplate.js: -------------------------------------------------------------------------------- 1 | const { BuryPointTemplateController } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | /** 5 | * 模板接口 6 | */ 7 | router.post('/buryPointTemplate/create', BuryPointTemplateController.create); 8 | router.post('/buryPointTemplate/updateName', BuryPointTemplateController.updateName); 9 | router.post('/buryPointTemplate/delete', BuryPointTemplateController.delete); 10 | router.post('/buryPointTemplate/deleteBatch', BuryPointTemplateController.deleteBatch); 11 | router.post('/buryPointTemplate/copy', BuryPointTemplateController.copy); 12 | router.post('/buryPointTemplate/createProject', BuryPointTemplateController.createProject); 13 | router.post('/buryPointTemplate/getMyList', BuryPointTemplateController.getMyTemplatePageList); 14 | router.post('/buryPointTemplate/getCommonList', BuryPointTemplateController.getCommonTemplatePageList); 15 | router.post('/buryPointTemplate/getSysList', BuryPointTemplateController.getSysTemplatePageList); 16 | router.post('/buryPointTemplate/detail', BuryPointTemplateController.detail); 17 | } 18 | -------------------------------------------------------------------------------- /servers/event/router/routes/buryPointWarehouse.js: -------------------------------------------------------------------------------- 1 | const { BuryPointWarehouseController } = require("../../controllers/controllers") 2 | 3 | module.exports = (router) => { 4 | /** 5 | * 点位仓库接口 6 | */ 7 | router.post('/buryPointWarehouse/create', BuryPointWarehouseController.create); 8 | router.post('/buryPointWarehouse/update', BuryPointWarehouseController.update); 9 | router.post('/buryPointWarehouse/delete', BuryPointWarehouseController.delete); 10 | router.get('/buryPointWarehouse/detail', BuryPointWarehouseController.detail); 11 | router.post('/buryPointWarehouse/page', BuryPointWarehouseController.getPageList); 12 | router.post('/buryPointWarehouse/list', BuryPointWarehouseController.getList); 13 | router.post('/buryPointWarehouse/getProjectAndWeList', BuryPointWarehouseController.getAllPointList); 14 | router.post('/buryPointWarehouse/getProjectAndOldList', BuryPointWarehouseController.getProjectAndOldList); 15 | router.get('/buryPointWarehouse/AllList', BuryPointWarehouseController.getAllList); 16 | router.post('/buryPointWarehouse/pointExport', BuryPointWarehouseController.exportPoint); 17 | } 18 | -------------------------------------------------------------------------------- /utils/rewriteConsole.js: -------------------------------------------------------------------------------- 1 | const WebfunnyConfig = require('../webfunny.config') 2 | const { otherConfig } = WebfunnyConfig 3 | const loggerUpload = require("../middlreware/loggerUpload") 4 | module.exports = function() { 5 | const consoleLog = console.log; 6 | console.log = (...args) => { 7 | const timestamp = new Date().Format('yyyy-MM-dd hh:mm:ss'); 8 | 9 | if (otherConfig.uploadServerErrorToWebfunny === true) { 10 | // 打印日志都进行上报 11 | let message = "" 12 | const tempMsg = args[0] 13 | if (typeof tempMsg === "string") { 14 | message = tempMsg.length > 200 ? tempMsg.substring(0,200) : tempMsg 15 | } else { 16 | message = "" 17 | } 18 | 19 | const content = JSON.stringify(args) 20 | // projectId = "", userId = Utils.getMac(), message = "", content = "", otherInfo = "" 21 | loggerUpload.log({ 22 | projectId: "webfunny_log_sys", 23 | message, 24 | content, 25 | }) 26 | } 27 | 28 | // 配置开启了打印,打印console 29 | if (otherConfig.printConsole === true) { 30 | consoleLog(timestamp + " - ", ...args); 31 | } 32 | }; 33 | } -------------------------------------------------------------------------------- /servers/event/middlreware/sqlCheck.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 判断判断是否有sql注入逻辑 3 | */ 4 | const statusCode = require('../util/status-code') 5 | const { DANGER_SQL_PARAMS } = require('../config/consts') 6 | module.exports = function () { 7 | return async function (ctx, next) { 8 | const { url, query } = ctx 9 | const { body } = ctx.request 10 | // 过滤掉一些接口 11 | if ( url.indexOf("upEvent") === -1) { 12 | let goOnFlag = true 13 | const tempQuery = JSON.stringify(query).toLowerCase() 14 | const tempBody = JSON.stringify(body).toLowerCase() 15 | DANGER_SQL_PARAMS.forEach((item) => { 16 | if (tempBody.indexOf(item) !== -1) { 17 | goOnFlag = false 18 | } else if (tempQuery.indexOf(item) !== -1) { 19 | goOnFlag = false 20 | } 21 | }) 22 | if (!goOnFlag) { 23 | ctx.response.status = 413; 24 | ctx.body = statusCode.ERROR_413(`请求参数不合法,不能包含;,',<,>,(,)`); 25 | return 26 | } 27 | } 28 | await next(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /servers/event/util/status-code.js: -------------------------------------------------------------------------------- 1 | const statusCode = { 2 | ERROR_500: (msg) => { 3 | return { 4 | code: 500, 5 | msg 6 | } 7 | }, 8 | ERROR_401: (msg) => { 9 | return { 10 | code: 401, 11 | msg 12 | } 13 | }, 14 | 15 | ERROR_403: (msg) => { 16 | return { 17 | code: 403, 18 | msg 19 | } 20 | }, 21 | 22 | ERROR_404: (msg) => { 23 | return { 24 | code: 404, 25 | msg 26 | } 27 | }, 28 | 29 | ERROR_412: (msg) => { 30 | return { 31 | code: 412, 32 | msg 33 | } 34 | }, 35 | 36 | ERROR_413: (msg) => { 37 | return { 38 | code: 413, 39 | msg 40 | } 41 | }, 42 | ERROR_CARD_BALANCE_414: (msg) => { 43 | return { 44 | code: 414, 45 | msg 46 | } 47 | }, 48 | SUCCESS_200: (msg, data) => { 49 | return { 50 | code: 200, 51 | msg, 52 | data, 53 | } 54 | } 55 | } 56 | 57 | module.exports = statusCode -------------------------------------------------------------------------------- /middlreware/cacheData/handleCache.js: -------------------------------------------------------------------------------- 1 | const timerUtil = require("../../util/timer") 2 | const Utils = require('../../util/utils') 3 | global.CacheDataList = {} 4 | //启动一个定时器,每分钟清理一次 5 | timerUtil((time) => { 6 | const minuteTimeStr = time.Format("mm:ss") 7 | // console.log(minuteTimeStr, global.CacheDataList) 8 | // 每隔1分钟执行, 清理缓存数据 9 | if (minuteTimeStr.substring(3) == "00") { 10 | // 即将执行清理 11 | global.CacheDataList = {} 12 | } 13 | }) 14 | const HandleCache = { 15 | cacheData: (ctx, webMonitorId, data) => { 16 | let wfParam = {} 17 | const { method, url, body } = ctx.request 18 | if (method.toLowerCase() === "get") { 19 | wfParam = Utils.parseQs(url) 20 | } else { 21 | wfParam = typeof body === "string" ? JSON.parse(body) : body 22 | } 23 | // console.log("===============", url) 24 | if (!global.CacheDataList[webMonitorId]) { 25 | global.CacheDataList[webMonitorId] = {} 26 | } 27 | // 把参数和结果都存进去 28 | global.CacheDataList[webMonitorId][url] = { 29 | param: wfParam, 30 | data 31 | } 32 | // console.log(global.CacheDataList[webMonitorId]) 33 | } 34 | } 35 | module.exports = HandleCache -------------------------------------------------------------------------------- /servers/center/config/db.js: -------------------------------------------------------------------------------- 1 | 2 | const Sequelize = require('sequelize'); 3 | const { accountInfo } = require('./AccountConfig'); 4 | 5 | const {write, read} = accountInfo.mysqlConfig; 6 | const replication = { 7 | read: read, 8 | write: { host: write.ip, username: write.userName, password: write.password } 9 | } 10 | 11 | const configList = { 12 | host: write.ip, 13 | port: write.port, 14 | logging: (sql) => { 15 | // 这里处理sql的日志,暂时不打印 16 | if (accountInfo.printSql && accountInfo.printSql.center === true) { 17 | console.log(sql) 18 | } 19 | }, 20 | dialect: 'mysql', 21 | // operatorsAliases: false, 22 | dialectOptions: { 23 | charset: "utf8mb4", 24 | supportBigNumbers: true, 25 | bigNumberStrings: true 26 | }, 27 | pool: { 28 | max: 500, 29 | min: 0, 30 | acquire: 30000, 31 | idle: 10000 32 | }, 33 | timezone: '+08:00' //东八时区 34 | } 35 | if (read && read.length > 0) { 36 | configList.replication = replication 37 | } 38 | // 下一个迭代数据库 39 | const sequelize = new Sequelize(write.dataBaseName, write.userName, write.password, { 40 | ...configList 41 | }) 42 | 43 | module.exports = { 44 | sequelize: sequelize 45 | } 46 | -------------------------------------------------------------------------------- /servers/monitor/router/routes/alarm.js: -------------------------------------------------------------------------------- 1 | const { AlarmController } = require("../../controllers/controllers.js") 2 | 3 | module.exports = (router) => { 4 | // 获取警报检查频率 5 | router.post('/getCheckTime', AlarmController.getCheckTime) 6 | // 设置警报检查频率 7 | router.post('/changeCheckTime', AlarmController.changeCheckTime) 8 | // 获取JsError报警参数 9 | router.post('/getJsErrorConfig', AlarmController.getJsErrorConfig) 10 | // 设置JsError报警参数 11 | router.post('/changeJsErrorConfig', AlarmController.changeJsErrorConfig) 12 | // 获取console Error报警参数 13 | router.post('/getConsoleErrorConfig', AlarmController.getConsoleErrorConfig) 14 | // 设置ConsoleError报警参数 15 | router.post('/changeConsoleErrorConfig', AlarmController.changeConsoleErrorConfig) 16 | // 获取Http Error报警参数 17 | router.post('/getHttpErrorConfig', AlarmController.getHttpErrorConfig) 18 | // 设置HttpError报警参数 19 | router.post('/changeHttpErrorConfig', AlarmController.changeHttpErrorConfig) 20 | // 获取Resource Error报警参数 21 | router.post('/getResourceErrorConfig', AlarmController.getResourceErrorConfig) 22 | // 设置ResourceError报警参数 23 | router.post('/changeResourceErrorConfig', AlarmController.changeResourceErrorConfig) 24 | } 25 | -------------------------------------------------------------------------------- /views/resource/wf_event/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "app.css": "./app.34a7f697857109e4113f.css", 3 | "app.js": "app.dd070d85.js", 4 | "index.html": "index.html", 5 | "src/assets/img/customer/index.scss": "src/assets/img/customer/customer_header_bg.webp", 6 | "src/assets/img/dataView/animation.png": "src/assets/img/dataView/animation.png", 7 | "src/assets/img/dataView/hotPer.png": "src/assets/img/dataView/hotPer.png", 8 | "src/assets/img/dataView/hotValue.png": "src/assets/img/dataView/hotValue.png", 9 | "src/assets/img/dataView/index.scss": "src/assets/img/dataView/warning.png", 10 | "src/assets/img/task/no-task.png": "src/assets/img/task/no-task.png", 11 | "src/modules/dataView/image/earth-chart.png": "src/modules/dataView/image/earth-chart.png", 12 | "src/modules/dataView/image/heat-chart.png": "src/modules/dataView/image/heat-chart.png", 13 | "src/modules/dataView/image/index.scss": "src/modules/dataView/image/no-card.png", 14 | "src/modules/dataView/image/number-chart.png": "src/modules/dataView/image/number-chart.png", 15 | "src/modules/dataView/image/path-analysis.png": "src/modules/dataView/image/path-analysis.png", 16 | "src/modules/dataView/image/words-chart.png": "src/modules/dataView/image/words-chart.png" 17 | } -------------------------------------------------------------------------------- /servers/center/schema/config.js: -------------------------------------------------------------------------------- 1 | //delete// 2 | const moment = require('moment'); 3 | //delete// 4 | const Config = function (sequelize, DataTypes) { 5 | return sequelize.define('Config', { 6 | // ID 主键 7 | id: { 8 | type: DataTypes.INTEGER, 9 | primaryKey: true, 10 | allowNull: false, 11 | autoIncrement: true, 12 | }, 13 | // 配置名称 14 | configName: { 15 | type: DataTypes.STRING(100), 16 | allowNull: true, 17 | field: 'configName' 18 | }, 19 | // 配置的值 20 | configValue: { 21 | type: DataTypes.STRING(50), 22 | allowNull: true, 23 | field: 'configValue' 24 | }, 25 | // 创建时间 26 | createdAt: { 27 | type: DataTypes.DATE, 28 | get() { 29 | return moment(this.getDataValue('createdAt')).format('YYYY-MM-DD HH:mm:ss'); 30 | } 31 | }, 32 | // 更新时间 33 | updatedAt: { 34 | type: DataTypes.DATE, 35 | get() { 36 | return moment(this.getDataValue('updatedAt')).format('YYYY-MM-DD HH:mm:ss'); 37 | } 38 | } 39 | }, { 40 | // 如果为 true 则表的名称和 model 相同,即 user 41 | // 为 false MySQL创建的表名称会是复数 users 42 | // 如果指定的表名称本就是复数形式则不变 43 | freezeTableName: true 44 | }) 45 | 46 | } 47 | //exports// 48 | module.exports = Config 49 | //exports// -------------------------------------------------------------------------------- /servers/center/schema/userToken.js: -------------------------------------------------------------------------------- 1 | //delete// 2 | const moment = require('moment'); 3 | //delete// 4 | const Config = function (sequelize, DataTypes) { 5 | return sequelize.define('UserToken', { 6 | // ID 主键 7 | id: { 8 | type: DataTypes.INTEGER, 9 | primaryKey: true, 10 | allowNull: false, 11 | autoIncrement: true, 12 | }, 13 | // 用户唯一标识 14 | userId: { 15 | type: DataTypes.STRING(200), 16 | allowNull: true, 17 | field: 'userId' 18 | }, 19 | // accessToken 20 | accessToken: { 21 | type: DataTypes.TEXT, 22 | allowNull: true, 23 | field: 'accessToken' 24 | }, 25 | // 创建时间 26 | createdAt: { 27 | type: DataTypes.DATE, 28 | get() { 29 | return moment(this.getDataValue('createdAt')).format('YYYY-MM-DD HH:mm:ss'); 30 | } 31 | }, 32 | // 更新时间 33 | updatedAt: { 34 | type: DataTypes.DATE, 35 | get() { 36 | return moment(this.getDataValue('updatedAt')).format('YYYY-MM-DD HH:mm:ss'); 37 | } 38 | } 39 | }, { 40 | // 如果为 true 则表的名称和 model 相同,即 user 41 | // 为 false MySQL创建的表名称会是复数 users 42 | // 如果指定的表名称本就是复数形式则不变 43 | freezeTableName: true 44 | }) 45 | 46 | } 47 | //exports// 48 | module.exports = Config 49 | //exports// -------------------------------------------------------------------------------- /utils/extension.js: -------------------------------------------------------------------------------- 1 | if (!String.prototype.format) { 2 | String.prototype.format = function() { 3 | var fmt = this; 4 | var params = Array.prototype.slice.call(arguments); 5 | return fmt.replace(/(\{(\d+)\})/g, function(match, firstCap, index) { 6 | return ((params[index] === undefined) ? match : params[index]); 7 | }); 8 | }; 9 | } 10 | if (!String.prototype.trim) { 11 | var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; 12 | String.prototype.trim = function() { 13 | return this.replace(rtrim, ""); 14 | }; 15 | } 16 | if (!Date.prototype.Format) { 17 | Date.prototype.Format = function (fmt) { //author: meizz 18 | var o = { 19 | "M+": this.getMonth() + 1, //月份 20 | "d+": this.getDate(), //日 21 | "h+": this.getHours(), //小时 22 | "m+": this.getMinutes(), //分 23 | "s+": this.getSeconds(), //秒 24 | "q+": Math.floor((this.getMonth() + 3) / 3), //季度 25 | "S": this.getMilliseconds() //毫秒 26 | }; 27 | if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 28 | for (var k in o) 29 | if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 30 | return fmt; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /servers/center/node_clickhouse/consts.js: -------------------------------------------------------------------------------- 1 | const DataTypes = { 2 | UINT: (len) => { 3 | return `UInt${len}` 4 | }, 5 | INT: (len) => { 6 | return `Int${len}` // 在普遍观念中,常用Tinyint、Smallint、Int和Bigint指代整数的不同取值范围。而ClickHouse则直接使用Int8、Int16、Int32和Int64指代4种大小的Int类型,其末尾的数字正好表明了占用字节的大小(8位=1字节)。 7 | }, 8 | FLOAT: (len) => { 9 | return `Float${len}` // ClickHouse直接使用Float32和Float64代表单精度浮点数以及双精度浮点数。在使用浮点数的时候,要意识到它是有限精度的。对Float32和Float64写入超过有效精度的数值,结果就会出现数据误差,会被截断。 10 | }, 11 | DECIMAL: (len) => { 12 | return `Decimal${len}` // 要更高精度的数值运算,需要使用定点数。ClickHouse提供了Decimal32、Decimal64和Decimal128三种精度的定点数。 13 | }, 14 | STRING: "String", // 字符串由String定义,长度不限。因此在使用String的时候无须声明大小。它完全代替了传统意义上数据库的Varchar、Text、Clob和Blob等字符类型。String类型不限定字符集,因为它根本就没有这个概念,所以可以将任意编码的字符串存入其中。 15 | FIXED_STRING: "FixedString", // FixedString类型和传统意义上的Char类型有些类似,对于一些字符有明确长度的场合,可以使用固定长度的字符串。定长字符串通过FixedString(N)声明,其中N表示字符串长度。但与Char不同的是,FixedString使用null字节填充末尾字符,而Char通常使用空格填充。 16 | UUID: "UUID", // UUID是一种数据库常见的主键类型,在ClickHouse中直接把它作为一种数据类型。UUID共有32位,它的格式为8-4-4-4-12。如果一个UUID类型的字段在写入数据时没有被赋值,则会依照格式使用0填充。 17 | DATE: "Date", // Date类型不包含具体的时间信息,只精确到天。 18 | DATE_TIME: "DateTime", // DateTime类型包含时、分、秒信息,精确到秒。 19 | DATE_TIME_64: "DateTime64" // DateTime64可以记录亚秒,它在DateTime之上增加了精度的设置。 20 | } 21 | module.exports = { 22 | DataTypes 23 | } -------------------------------------------------------------------------------- /servers/event/node_clickhouse/consts.js: -------------------------------------------------------------------------------- 1 | const DataTypes = { 2 | UINT: (len) => { 3 | return `UInt${len}` 4 | }, 5 | INT: (len) => { 6 | return `Int${len}` // 在普遍观念中,常用Tinyint、Smallint、Int和Bigint指代整数的不同取值范围。而ClickHouse则直接使用Int8、Int16、Int32和Int64指代4种大小的Int类型,其末尾的数字正好表明了占用字节的大小(8位=1字节)。 7 | }, 8 | FLOAT: (len) => { 9 | return `Float${len}` // ClickHouse直接使用Float32和Float64代表单精度浮点数以及双精度浮点数。在使用浮点数的时候,要意识到它是有限精度的。对Float32和Float64写入超过有效精度的数值,结果就会出现数据误差,会被截断。 10 | }, 11 | DECIMAL: (len) => { 12 | return `Decimal${len}` // 要更高精度的数值运算,需要使用定点数。ClickHouse提供了Decimal32、Decimal64和Decimal128三种精度的定点数。 13 | }, 14 | STRING: "String", // 字符串由String定义,长度不限。因此在使用String的时候无须声明大小。它完全代替了传统意义上数据库的Varchar、Text、Clob和Blob等字符类型。String类型不限定字符集,因为它根本就没有这个概念,所以可以将任意编码的字符串存入其中。 15 | FIXED_STRING: "FixedString", // FixedString类型和传统意义上的Char类型有些类似,对于一些字符有明确长度的场合,可以使用固定长度的字符串。定长字符串通过FixedString(N)声明,其中N表示字符串长度。但与Char不同的是,FixedString使用null字节填充末尾字符,而Char通常使用空格填充。 16 | UUID: "UUID", // UUID是一种数据库常见的主键类型,在ClickHouse中直接把它作为一种数据类型。UUID共有32位,它的格式为8-4-4-4-12。如果一个UUID类型的字段在写入数据时没有被赋值,则会依照格式使用0填充。 17 | DATE: "Date", // Date类型不包含具体的时间信息,只精确到天。 18 | DATE_TIME: "DateTime", // DateTime类型包含时、分、秒信息,精确到秒。 19 | DATE_TIME_64: "DateTime64" // DateTime64可以记录亚秒,它在DateTime之上增加了精度的设置。 20 | } 21 | module.exports = { 22 | DataTypes 23 | } -------------------------------------------------------------------------------- /servers/logger/node_clickhouse/consts.js: -------------------------------------------------------------------------------- 1 | const DataTypes = { 2 | UINT: (len) => { 3 | return `UInt${len}` 4 | }, 5 | INT: (len) => { 6 | return `Int${len}` // 在普遍观念中,常用Tinyint、Smallint、Int和Bigint指代整数的不同取值范围。而ClickHouse则直接使用Int8、Int16、Int32和Int64指代4种大小的Int类型,其末尾的数字正好表明了占用字节的大小(8位=1字节)。 7 | }, 8 | FLOAT: (len) => { 9 | return `Float${len}` // ClickHouse直接使用Float32和Float64代表单精度浮点数以及双精度浮点数。在使用浮点数的时候,要意识到它是有限精度的。对Float32和Float64写入超过有效精度的数值,结果就会出现数据误差,会被截断。 10 | }, 11 | DECIMAL: (len) => { 12 | return `Decimal${len}` // 要更高精度的数值运算,需要使用定点数。ClickHouse提供了Decimal32、Decimal64和Decimal128三种精度的定点数。 13 | }, 14 | STRING: "String", // 字符串由String定义,长度不限。因此在使用String的时候无须声明大小。它完全代替了传统意义上数据库的Varchar、Text、Clob和Blob等字符类型。String类型不限定字符集,因为它根本就没有这个概念,所以可以将任意编码的字符串存入其中。 15 | FIXED_STRING: "FixedString", // FixedString类型和传统意义上的Char类型有些类似,对于一些字符有明确长度的场合,可以使用固定长度的字符串。定长字符串通过FixedString(N)声明,其中N表示字符串长度。但与Char不同的是,FixedString使用null字节填充末尾字符,而Char通常使用空格填充。 16 | UUID: "UUID", // UUID是一种数据库常见的主键类型,在ClickHouse中直接把它作为一种数据类型。UUID共有32位,它的格式为8-4-4-4-12。如果一个UUID类型的字段在写入数据时没有被赋值,则会依照格式使用0填充。 17 | DATE: "Date", // Date类型不包含具体的时间信息,只精确到天。 18 | DATE_TIME: "DateTime", // DateTime类型包含时、分、秒信息,精确到秒。 19 | DATE_TIME_64: "DateTime64" // DateTime64可以记录亚秒,它在DateTime之上增加了精度的设置。 20 | } 21 | module.exports = { 22 | DataTypes 23 | } -------------------------------------------------------------------------------- /servers/monitor/node_clickhouse/consts.js: -------------------------------------------------------------------------------- 1 | const DataTypes = { 2 | UINT: (len) => { 3 | return `UInt${len}` 4 | }, 5 | INT: (len) => { 6 | return `Int${len}` // 在普遍观念中,常用Tinyint、Smallint、Int和Bigint指代整数的不同取值范围。而ClickHouse则直接使用Int8、Int16、Int32和Int64指代4种大小的Int类型,其末尾的数字正好表明了占用字节的大小(8位=1字节)。 7 | }, 8 | FLOAT: (len) => { 9 | return `Float${len}` // ClickHouse直接使用Float32和Float64代表单精度浮点数以及双精度浮点数。在使用浮点数的时候,要意识到它是有限精度的。对Float32和Float64写入超过有效精度的数值,结果就会出现数据误差,会被截断。 10 | }, 11 | DECIMAL: (len) => { 12 | return `Decimal${len}` // 要更高精度的数值运算,需要使用定点数。ClickHouse提供了Decimal32、Decimal64和Decimal128三种精度的定点数。 13 | }, 14 | STRING: "String", // 字符串由String定义,长度不限。因此在使用String的时候无须声明大小。它完全代替了传统意义上数据库的Varchar、Text、Clob和Blob等字符类型。String类型不限定字符集,因为它根本就没有这个概念,所以可以将任意编码的字符串存入其中。 15 | FIXED_STRING: "FixedString", // FixedString类型和传统意义上的Char类型有些类似,对于一些字符有明确长度的场合,可以使用固定长度的字符串。定长字符串通过FixedString(N)声明,其中N表示字符串长度。但与Char不同的是,FixedString使用null字节填充末尾字符,而Char通常使用空格填充。 16 | UUID: "UUID", // UUID是一种数据库常见的主键类型,在ClickHouse中直接把它作为一种数据类型。UUID共有32位,它的格式为8-4-4-4-12。如果一个UUID类型的字段在写入数据时没有被赋值,则会依照格式使用0填充。 17 | DATE: "Date", // Date类型不包含具体的时间信息,只精确到天。 18 | DATE_TIME: "DateTime", // DateTime类型包含时、分、秒信息,精确到秒。 19 | DATE_TIME_64: "DateTime64" // DateTime64可以记录亚秒,它在DateTime之上增加了精度的设置。 20 | } 21 | module.exports = { 22 | DataTypes 23 | } -------------------------------------------------------------------------------- /servers/center/util/extension.js: -------------------------------------------------------------------------------- 1 | if (!String.prototype.format) { 2 | String.prototype.format = function() { 3 | var fmt = this; 4 | var params = Array.prototype.slice.call(arguments); 5 | return fmt.replace(/(\{(\d+)\})/g, function(match, firstCap, index) { 6 | return ((params[index] === undefined) ? match : params[index]); 7 | }); 8 | }; 9 | } 10 | if (!String.prototype.trim) { 11 | var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; 12 | String.prototype.trim = function() { 13 | return this.replace(rtrim, ""); 14 | }; 15 | } 16 | if (!Date.prototype.Format) { 17 | Date.prototype.Format = function (fmt) { //author: meizz 18 | var o = { 19 | "M+": this.getMonth() + 1, //月份 20 | "d+": this.getDate(), //日 21 | "h+": this.getHours(), //小时 22 | "m+": this.getMinutes(), //分 23 | "s+": this.getSeconds(), //秒 24 | "q+": Math.floor((this.getMonth() + 3) / 3), //季度 25 | "S": this.getMilliseconds() //毫秒 26 | }; 27 | if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 28 | for (var k in o) 29 | if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 30 | return fmt; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /servers/event/util/extension.js: -------------------------------------------------------------------------------- 1 | if (!String.prototype.format) { 2 | String.prototype.format = function() { 3 | var fmt = this; 4 | var params = Array.prototype.slice.call(arguments); 5 | return fmt.replace(/(\{(\d+)\})/g, function(match, firstCap, index) { 6 | return ((params[index] === undefined) ? match : params[index]); 7 | }); 8 | }; 9 | } 10 | if (!String.prototype.trim) { 11 | var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; 12 | String.prototype.trim = function() { 13 | return this.replace(rtrim, ""); 14 | }; 15 | } 16 | if (!Date.prototype.Format) { 17 | Date.prototype.Format = function (fmt) { //author: meizz 18 | var o = { 19 | "M+": this.getMonth() + 1, //月份 20 | "d+": this.getDate(), //日 21 | "h+": this.getHours(), //小时 22 | "m+": this.getMinutes(), //分 23 | "s+": this.getSeconds(), //秒 24 | "q+": Math.floor((this.getMonth() + 3) / 3), //季度 25 | "S": this.getMilliseconds() //毫秒 26 | }; 27 | if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 28 | for (var k in o) 29 | if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 30 | return fmt; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /servers/logger/util/extension.js: -------------------------------------------------------------------------------- 1 | if (!String.prototype.format) { 2 | String.prototype.format = function() { 3 | var fmt = this; 4 | var params = Array.prototype.slice.call(arguments); 5 | return fmt.replace(/(\{(\d+)\})/g, function(match, firstCap, index) { 6 | return ((params[index] === undefined) ? match : params[index]); 7 | }); 8 | }; 9 | } 10 | if (!String.prototype.trim) { 11 | var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; 12 | String.prototype.trim = function() { 13 | return this.replace(rtrim, ""); 14 | }; 15 | } 16 | if (!Date.prototype.Format) { 17 | Date.prototype.Format = function (fmt) { //author: meizz 18 | var o = { 19 | "M+": this.getMonth() + 1, //月份 20 | "d+": this.getDate(), //日 21 | "h+": this.getHours(), //小时 22 | "m+": this.getMinutes(), //分 23 | "s+": this.getSeconds(), //秒 24 | "q+": Math.floor((this.getMonth() + 3) / 3), //季度 25 | "S": this.getMilliseconds() //毫秒 26 | }; 27 | if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 28 | for (var k in o) 29 | if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 30 | return fmt; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /servers/monitor/util/extension.js: -------------------------------------------------------------------------------- 1 | if (!String.prototype.format) { 2 | String.prototype.format = function() { 3 | var fmt = this; 4 | var params = Array.prototype.slice.call(arguments); 5 | return fmt.replace(/(\{(\d+)\})/g, function(match, firstCap, index) { 6 | return ((params[index] === undefined) ? match : params[index]); 7 | }); 8 | }; 9 | } 10 | if (!String.prototype.trim) { 11 | var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; 12 | String.prototype.trim = function() { 13 | return this.replace(rtrim, ""); 14 | }; 15 | } 16 | if (!Date.prototype.Format) { 17 | Date.prototype.Format = function (fmt) { //author: meizz 18 | var o = { 19 | "M+": this.getMonth() + 1, //月份 20 | "d+": this.getDate(), //日 21 | "h+": this.getHours(), //小时 22 | "m+": this.getMinutes(), //分 23 | "s+": this.getSeconds(), //秒 24 | "q+": Math.floor((this.getMonth() + 3) / 3), //季度 25 | "S": this.getMilliseconds() //毫秒 26 | }; 27 | if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 28 | for (var k in o) 29 | if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 30 | return fmt; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /servers/center/schema/applicationConfig.js: -------------------------------------------------------------------------------- 1 | //delete// 2 | const moment = require('moment'); 3 | //delete// 4 | const ApplicationConfig = function (sequelize, DataTypes) { 5 | return sequelize.define('ApplicationConfig', { 6 | // ID 主键 7 | id: { 8 | type: DataTypes.INTEGER, 9 | primaryKey: true, 10 | allowNull: false, 11 | autoIncrement: true, 12 | }, 13 | // 配置名称 14 | systemName: { 15 | type: DataTypes.STRING(500), 16 | allowNull: true, 17 | field: 'systemName' 18 | }, 19 | // 配置的值 20 | configValue: { 21 | type: DataTypes.TEXT, 22 | allowNull: true, 23 | field: 'configValue' 24 | }, 25 | // 创建时间 26 | createdAt: { 27 | type: DataTypes.DATE, 28 | get() { 29 | return moment(this.getDataValue('createdAt')).format('YYYY-MM-DD HH:mm:ss'); 30 | } 31 | }, 32 | // 更新时间 33 | updatedAt: { 34 | type: DataTypes.DATE, 35 | get() { 36 | return moment(this.getDataValue('updatedAt')).format('YYYY-MM-DD HH:mm:ss'); 37 | } 38 | } 39 | }, { 40 | // 如果为 true 则表的名称和 model 相同,即 user 41 | // 为 false MySQL创建的表名称会是复数 users 42 | // 如果指定的表名称本就是复数形式则不变 43 | freezeTableName: true 44 | }) 45 | 46 | } 47 | //exports// 48 | module.exports = ApplicationConfig 49 | //exports// -------------------------------------------------------------------------------- /views/resource/wf_logger/index.html: -------------------------------------------------------------------------------- 1 |