diff --git a/README.md b/README.md
index bbc0d79..9427326 100755
--- a/README.md
+++ b/README.md
@@ -16,14 +16,15 @@
**主要特性**
-- 日志分析: 基于kafka+GoLang的方式,对采集的Web和系统应用日志进行攻击行为的分析。
-- 篡改监控: 基于Golang开发的页面篡改监控。
+- 日志分析: 日志存放在Kafka,Agent结合规则匹配攻击行为,并上报到W3A SOC平台。
+- 工程分析: 针对工程代码进行API分析、工程组成分析、组件扫描、静态代码漏洞检测等。
+- Web漏洞扫描: 基于Arachni进行结合漏洞扫描,资产跟Web漏洞扫描联动巡检。
+- 资产采集: 打通阿里云、腾讯云,采集云上资产(域名、云服务、容器等)进行快速收集、定时同步,摸清家底。
- 漏洞管理:在线托管所有漏洞,可以用于打通内部工作流的汇聚。
-- 业务连续性监控: 基于网络的业务连续性监控服务,确定业务是否有中断。
-- 告警整合: 实现钉钉、企业微信的联动告警机制。
+- 告警整合: 实现钉钉、企业微信的联动告警机制,统计攻击行为,联动。
- 部署支持:docker-compose、Kubernetes。
- 整体架构:基于 Filebeat(采集/清洗) + Kafka(汇聚) + ElasticSearch(检索)
-- 技术实现:后端基于Java,前端基于Vue,数据库基于MYSQL。
+- 技术实现:后端基于Java,前端基于Vue,数据库基于MYSQL、工具基于Golang。
**目标**
- 满足等保二级、三级的需求,直接部署就能用那种。
diff --git a/backend/dashboard/run.sh b/backend/dashboard/run.sh
new file mode 100755
index 0000000..1f3fa28
--- /dev/null
+++ b/backend/dashboard/run.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+tag=$1
+
+docker build -t registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-dashboard:${tag} .
+docker push registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-dashboard:${tag}
diff --git a/backend/openapi/run.sh b/backend/openapi/run.sh
new file mode 100755
index 0000000..c79d676
--- /dev/null
+++ b/backend/openapi/run.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+tag=$1
+
+docker build -t registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-openapi:${tag} .
+docker push registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-openapi:${tag}
diff --git a/backend/workapi/run.sh b/backend/workapi/run.sh
new file mode 100755
index 0000000..a5ed827
--- /dev/null
+++ b/backend/workapi/run.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+tag=$1
+
+docker build -t registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-workapi:${tag} .
+docker push registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-workapi:${tag}
diff --git a/db/init.sql b/db/init.sql
index 95d8280..c608513 100644
--- a/db/init.sql
+++ b/db/init.sql
@@ -26,7 +26,7 @@ CREATE TABLE `w3_alter_channel` (
`alter_id` bigint(20) NOT NULL COMMENT 'id',
`alter_source_id` bigint(20) NOT NULL COMMENT '告警渠道id',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='告警渠道表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='告警渠道表';
-- ----------------------------
-- Table structure for w3_alter_config
@@ -44,7 +44,7 @@ CREATE TABLE `w3_alter_config` (
`alter_config_token` varchar(255) DEFAULT '' COMMENT '企业微信、钉钉的TOKEN',
`alter_config_delete` tinyint(1) DEFAULT '1' COMMENT '逻辑删除,0:已删除,1:启用',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='告警配置表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='告警配置表';
-- ----------------------------
-- Table structure for w3_alter_logs
@@ -56,7 +56,7 @@ CREATE TABLE `w3_alter_logs` (
`alter_createtime` datetime NOT NULL COMMENT '创建时间',
`alter_info` longtext NOT NULL COMMENT '告警内容',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 COMMENT='告警记录表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='告警记录表';
-- ----------------------------
-- Table structure for w3_alter_master
@@ -72,7 +72,7 @@ CREATE TABLE `w3_alter_master` (
`alter_status` tinyint(1) DEFAULT '1' COMMENT '告警状态,0:关闭,1:开启',
`alter_delete` tinyint(1) DEFAULT '1' COMMENT '告警状态,0:删除,1:启用',
PRIMARY KEY (`alter_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='告警主表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='告警主表';
-- ----------------------------
-- Table structure for w3_alter_paramets
@@ -97,8 +97,8 @@ DROP TABLE IF EXISTS `w3_apps_website`;
CREATE TABLE `w3_apps_website` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`apps_type` tinyint(1) NOT NULL COMMENT '关联的类型,0:关联Git,1:关联容器服务,2:关联云资产',
- `apps_string_info` varchar(255) NOT NULL COMMENT '资产内容,字符串型',
- `apps_number_info` bigint(20) NOT NULL COMMENT '资产内容,数字型',
+ `apps_string_info` varchar(255) DEFAULT NULL COMMENT '资产内容,字符串型',
+ `apps_number_info` bigint(20) DEFAULT NULL COMMENT '资产内容,数字型',
`apps_website_id` bigint(20) NOT NULL COMMENT '关联站点的ID',
`apps_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
`apps_createtime` datetime NOT NULL COMMENT '创建时间',
@@ -117,8 +117,8 @@ CREATE TABLE `w3_clouds_assets` (
`cloud_assets_zone` varchar(30) DEFAULT NULL COMMENT '云资产归属可用区',
`cloud_assets_regions` varchar(30) DEFAULT NULL COMMENT '云资产归属地区',
`cloud_assets_config` varchar(68) DEFAULT NULL COMMENT '云资产配置',
- `cloud_assets_intranet_ip` varchar(13) DEFAULT NULL COMMENT '云资产内网IP',
- `cloud_assets_public_ip` varchar(13) DEFAULT NULL COMMENT '云资产外网IP',
+ `cloud_assets_intranet_ip` varchar(20) DEFAULT NULL COMMENT '云资产内网IP',
+ `cloud_assets_public_ip` varchar(20) DEFAULT NULL COMMENT '云资产外网IP',
`cloud_assets_instance_name` varchar(58) DEFAULT NULL COMMENT '云资产实例别名',
`cloud_assets_fingerprint` varchar(255) DEFAULT NULL COMMENT '云资产指纹,如系统版本',
`cloud_assets_createtime` datetime DEFAULT NULL COMMENT '云资产创建时间',
@@ -151,26 +151,103 @@ CREATE TABLE `w3_clouds_secrets` (
`cloud_secret_errormsg` varchar(255) DEFAULT NULL COMMENT '异常原因',
`cloud_secret_info` varchar(20) NOT NULL COMMENT '备注',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='云厂商配置';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='云厂商配置';
-- ----------------------------
--- Table structure for w3_gitlab_config
+-- Table structure for w3_git_api_analyze
-- ----------------------------
-DROP TABLE IF EXISTS `w3_gitlab_config`;
-CREATE TABLE `w3_gitlab_config` (
+DROP TABLE IF EXISTS `w3_git_api_analyze`;
+CREATE TABLE `w3_git_api_analyze` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
- `gitlab_config_addr` varchar(255) NOT NULL COMMENT 'gitlab/GITHUB主地址',
- `gitlab_config_username` varchar(255) NOT NULL COMMENT '账号',
- `gitlab_config_token` varchar(255) NOT NULL COMMENT 'token值',
- `gitlab_config_password` varchar(255) DEFAULT '1' COMMENT '密码',
- `gitlab_config_status` tinyint(1) DEFAULT '1' COMMENT '状态,0:停用,1:启用',
- `gitlab_config_delete_status` tinyint(1) DEFAULT '1' COMMENT '删除状态,0:删除,1:启用',
- `gitlab_create_userid` bigint(20) NOT NULL COMMENT '创建的用户ID',
- `gitlab_config_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
- `gitlab_config_createtime` datetime NOT NULL COMMENT '创建时间',
- `gitlab_config_errormsg` varchar(255) DEFAULT NULL COMMENT '异常原因',
+ `git_store_service_id` bigint(20) NOT NULL COMMENT '资产的ID',
+ `git_store_service_commitid` char(50) NOT NULL COMMENT 'git的commitID',
+ `git_store_commit_createtime` datetime NOT NULL COMMENT '入库时间',
+ `git_store_commit_apibase` char(32) NOT NULL COMMENT '主目录',
+ `git_store_commit_apichild` char(32) DEFAULT NULL COMMENT '子目录',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='git配置';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='git的接口分析';
+
+-- ----------------------------
+-- Table structure for w3_git_commits
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_git_commits`;
+CREATE TABLE `w3_git_commits` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `git_store_service_id` bigint(20) NOT NULL COMMENT '资产的ID',
+ `git_store_service_commitid` char(50) NOT NULL COMMENT 'git的commitID',
+ `git_store_commit_createtime` datetime NOT NULL COMMENT '入库时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='git的commit记录';
+
+-- ----------------------------
+-- Table structure for w3_git_component_analyze
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_git_component_analyze`;
+CREATE TABLE `w3_git_component_analyze` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `git_store_service_id` bigint(20) NOT NULL COMMENT '资产的ID',
+ `git_store_service_commitid` char(50) NOT NULL COMMENT 'git的commitID',
+ `git_store_commit_createtime` datetime NOT NULL COMMENT '入库时间',
+ `git_store_commit_component_path` char(32) DEFAULT NULL COMMENT '存储路径',
+ `git_store_commit_component_packname` char(32) DEFAULT NULL COMMENT '模块名',
+ `git_store_commit_component_version` char(32) DEFAULT NULL COMMENT '版本号',
+ `git_store_commit_component_count` bigint(20) DEFAULT NULL COMMENT '统计数',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='git的组件调用分析';
+
+-- ----------------------------
+-- Table structure for w3_git_lang_counts
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_git_lang_counts`;
+CREATE TABLE `w3_git_lang_counts` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `git_store_service_id` bigint(20) NOT NULL COMMENT '资产的ID',
+ `git_store_service_commitid` char(50) NOT NULL COMMENT 'git的commitID',
+ `git_store_commit_createtime` datetime NOT NULL COMMENT '入库时间',
+ `git_store_commit_lang_name` char(32) NOT NULL COMMENT '语言名称',
+ `git_store_commit_lang_code_count` bigint(20) NOT NULL COMMENT '代码行数',
+ `git_store_commit_lang_file_count` bigint(20) NOT NULL COMMENT '文件数',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='git的组成分析';
+
+-- ----------------------------
+-- Table structure for w3_gitstore_assets
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_gitstore_assets`;
+CREATE TABLE `w3_gitstore_assets` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `git_store_service_name` varchar(255) NOT NULL COMMENT '服务名称',
+ `git_store_service_type` tinyint(1) NOT NULL COMMENT 'git的类型,0:Gitee,1:GitHub,2:GitLab',
+ `git_store_service_addr` varchar(255) NOT NULL COMMENT 'git仓库主地址',
+ `git_store_service_status` tinyint(1) DEFAULT '1' COMMENT '状态,0:不可用,1:可用',
+ `git_store_service_language` varchar(32) DEFAULT '待检测' COMMENT '语言类型,工具自动检测',
+ `git_store_serivce_delete_status` tinyint(1) DEFAULT '1' COMMENT '删除状态,0:删除,1:启用',
+ `git_store_serivce_control` tinyint(1) DEFAULT '0' COMMENT '是否是手动创建,0:自动,1:手动',
+ `git_store_serivce_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
+ `git_store_service_createtime` datetime NOT NULL COMMENT '创建时间',
+ `git_store_service_config_id` bigint(20) DEFAULT '0' COMMENT '归属的配置ID',
+ `git_store_service_errormsg` varchar(255) DEFAULT NULL COMMENT '异常原因',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='git仓库资产';
+
+-- ----------------------------
+-- Table structure for w3_gitstore_config
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_gitstore_config`;
+CREATE TABLE `w3_gitstore_config` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `git_store_type` tinyint(1) NOT NULL COMMENT 'git的类型,0:Gitee,1:GitHub,2:GitLab',
+ `git_store_addr` varchar(255) NOT NULL COMMENT 'gitlab/GITHUB主地址',
+ `git_store_username` varchar(255) NOT NULL COMMENT '账号',
+ `git_store_password` varchar(255) NOT NULL COMMENT '密码',
+ `git_store_status` tinyint(1) DEFAULT '1' COMMENT '状态,0:停用,1:启用',
+ `git_store_delete_status` tinyint(1) DEFAULT '1' COMMENT '删除状态,0:删除,1:启用',
+ `git_store_create_userid` bigint(20) NOT NULL COMMENT '创建的用户ID',
+ `git_store_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
+ `git_store_createtime` datetime NOT NULL COMMENT '创建时间',
+ `git_store_errormsg` varchar(255) DEFAULT NULL COMMENT '异常原因',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='git配置';
-- ----------------------------
-- Table structure for w3_kubernetes_assets
@@ -213,7 +290,7 @@ CREATE TABLE `w3_license` (
`license_type` tinyint(1) DEFAULT '1' COMMENT '类型,1:License版本,2:License内容',
`lincese_info` char(32) DEFAULT '' COMMENT 'License内容',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='License管理';
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='License管理';
-- ----------------------------
-- Table structure for w3_secrets
@@ -230,7 +307,7 @@ CREATE TABLE `w3_secrets` (
`secret_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
`secret_createtime` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='授权秘钥管理';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='授权秘钥管理';
-- ----------------------------
-- Table structure for w3_spider_config
@@ -247,7 +324,7 @@ CREATE TABLE `w3_spider_config` (
`spider_delete` tinyint(1) DEFAULT '1' COMMENT '删除状态,0:删除,1:启用',
`spider_create_userid` bigint(20) NOT NULL COMMENT '创建的用户ID',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='抓取配置表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='抓取配置表';
-- ----------------------------
-- Table structure for w3_statistics
@@ -260,14 +337,14 @@ CREATE TABLE `w3_statistics` (
`statis_counts` bigint(20) DEFAULT '0' COMMENT '统计数',
`website_id` bigint(20) NOT NULL COMMENT '站点归属ID',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='数据统计表';
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='数据统计表';
-- ----------------------------
-- Table structure for w3_users
-- ----------------------------
DROP TABLE IF EXISTS `w3_users`;
CREATE TABLE `w3_users` (
- `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `user_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_name` varchar(25) NOT NULL COMMENT '用户名',
`user_password` char(32) NOT NULL COMMENT '密码',
`user_createtime` datetime NOT NULL COMMENT '创建时间',
@@ -275,7 +352,7 @@ CREATE TABLE `w3_users` (
`user_status` tinyint(1) DEFAULT '1' COMMENT '规则状态,0:禁用,1:启用',
`user_delete` tinyint(1) DEFAULT '1' COMMENT '逻辑删除状态,0:已删除,1:启用',
PRIMARY KEY (`user_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='用户表';
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户表';
-- ----------------------------
-- Table structure for w3_vuls_circulation
@@ -288,7 +365,7 @@ CREATE TABLE `w3_vuls_circulation` (
`vul_dispose_status` tinyint(1) DEFAULT '0' COMMENT '处置状态,0:待处理,1:解决中,2:误报忽略,3:已解决,4:白名单,5:无效单,6:修改',
`vul_circulation_info` varchar(255) DEFAULT '暂无' COMMENT '流转信息',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=75 DEFAULT CHARSET=utf8 COMMENT='漏洞管理.流转单';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='漏洞管理.流转单';
-- ----------------------------
-- Table structure for w3_vuls_service
@@ -315,7 +392,7 @@ CREATE TABLE `w3_vuls_service` (
`vul_uuid` bigint(20) DEFAULT '0' COMMENT '漏洞创建人,如果是工具,默认为0',
`vul_hosts` bigint(20) NOT NULL COMMENT '漏洞归属站点的ID',
PRIMARY KEY (`id`,`vul_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COMMENT='漏洞管理';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='漏洞管理';
-- ----------------------------
-- Table structure for w3_vuls_tags
@@ -325,7 +402,7 @@ CREATE TABLE `w3_vuls_tags` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`vul_tags` varchar(30) NOT NULL COMMENT '漏洞标签',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COMMENT='漏洞管理.风险标签';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='漏洞管理.风险标签';
-- ----------------------------
-- Table structure for w3_web_attack_rules
@@ -342,7 +419,7 @@ CREATE TABLE `w3_web_attack_rules` (
`rules_delete` tinyint(1) DEFAULT '1' COMMENT '逻辑删除状态,0:已删除,1:启用',
`rules_regex` longtext NOT NULL COMMENT '规则内容',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='web检测规则';
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='web检测规则';
-- ----------------------------
-- Table structure for w3_web_attacks
@@ -367,7 +444,7 @@ CREATE TABLE `w3_web_attacks` (
`attack_area` varchar(10) DEFAULT '未知' COMMENT '归属地区',
`attack_judge` varchar(255) DEFAULT '暂无' COMMENT '判定备注',
PRIMARY KEY (`attack_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=12265 DEFAULT CHARSET=utf8 COMMENT='攻击日志信息';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='攻击日志信息';
-- ----------------------------
-- Table structure for w3_web_attacks_circulation
@@ -379,7 +456,20 @@ CREATE TABLE `w3_web_attacks_circulation` (
`attack_circulation_createtime` datetime NOT NULL COMMENT '流转时间',
`attack_circulation_logs` varchar(255) DEFAULT '暂无' COMMENT '流转信息',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=12275 DEFAULT CHARSET=utf8 COMMENT='攻击日志信息.流转单';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='攻击日志信息.流转单';
+
+-- ----------------------------
+-- Table structure for w3_webscan_base_config
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_webscan_base_config`;
+CREATE TABLE `w3_webscan_base_config` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `webscan_config_string_info` text COMMENT '配置内容(字符串型)',
+ `webscan_config_type` tinyint(1) DEFAULT '0' COMMENT '配置类型,0:爬取深度,1:扫描并发数,2:扫描请求useragent,3:扫描插件,4:云翻译',
+ `webscan_config_int_info` int(11) DEFAULT '0' COMMENT '配置内容(数字型)',
+ `webscan_config_updatetime` datetime DEFAULT NULL COMMENT '配置创建/更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='web扫描设置';
-- ----------------------------
-- Table structure for w3_website
@@ -394,7 +484,7 @@ CREATE TABLE `w3_website` (
`website_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
`website_delete` tinyint(1) DEFAULT '1' COMMENT '逻辑删除,0:删除,1:可用',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='站点管理';
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='站点管理';
-- ----------------------------
-- Table structure for w3_website_config
@@ -424,19 +514,15 @@ CREATE TABLE `w3_website_service` (
PRIMARY KEY (`id`,`website_types`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='站点管理.服务配置';
--- ----------------------------
--- Table structure for w3_webscan_base_config
--- ----------------------------
-DROP TABLE IF EXISTS `w3_webscan_base_config`;
-CREATE TABLE `w3_webscan_base_config` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
- `webscan_config_string_info` text COMMENT '配置内容(字符串型)',
- `webscan_config_type` tinyint(1) DEFAULT '0' COMMENT '配置类型,0:爬取深度,1:扫描并发数,2:扫描请求useragent,3:扫描插件,4:云翻译',
- `webscan_config_int_info` int(11) DEFAULT '0' COMMENT '配置内容(数字型)',
- `webscan_config_updatetime` datetime DEFAULT NULL COMMENT '配置创建/更新时间',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='web扫描设置';
-
+CREATE TABLE `w3_water_targes`
+(
+ `id` bigint NOT NULL auto_increment COMMENT 'id',
+ `apps_website_id` bigint NOT NULL COMMENT '站点ID',
+ `apps_water_types` char(50) NOT NULL COMMENT '水位类型',
+ `apps_water_counts` int NOT NULL COMMENT '水位数字',
+ `apps_water_updatetime` datetime NOT NULL COMMENT '水位更新时间',
+ primary key (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='站点水位设定';
/**
* 初始化数据
diff --git a/deploy/docker-compose-m1/db/init.sql b/deploy/docker-compose-m1/db/init.sql
index 95d8280..c608513 100644
--- a/deploy/docker-compose-m1/db/init.sql
+++ b/deploy/docker-compose-m1/db/init.sql
@@ -26,7 +26,7 @@ CREATE TABLE `w3_alter_channel` (
`alter_id` bigint(20) NOT NULL COMMENT 'id',
`alter_source_id` bigint(20) NOT NULL COMMENT '告警渠道id',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='告警渠道表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='告警渠道表';
-- ----------------------------
-- Table structure for w3_alter_config
@@ -44,7 +44,7 @@ CREATE TABLE `w3_alter_config` (
`alter_config_token` varchar(255) DEFAULT '' COMMENT '企业微信、钉钉的TOKEN',
`alter_config_delete` tinyint(1) DEFAULT '1' COMMENT '逻辑删除,0:已删除,1:启用',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='告警配置表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='告警配置表';
-- ----------------------------
-- Table structure for w3_alter_logs
@@ -56,7 +56,7 @@ CREATE TABLE `w3_alter_logs` (
`alter_createtime` datetime NOT NULL COMMENT '创建时间',
`alter_info` longtext NOT NULL COMMENT '告警内容',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 COMMENT='告警记录表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='告警记录表';
-- ----------------------------
-- Table structure for w3_alter_master
@@ -72,7 +72,7 @@ CREATE TABLE `w3_alter_master` (
`alter_status` tinyint(1) DEFAULT '1' COMMENT '告警状态,0:关闭,1:开启',
`alter_delete` tinyint(1) DEFAULT '1' COMMENT '告警状态,0:删除,1:启用',
PRIMARY KEY (`alter_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='告警主表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='告警主表';
-- ----------------------------
-- Table structure for w3_alter_paramets
@@ -97,8 +97,8 @@ DROP TABLE IF EXISTS `w3_apps_website`;
CREATE TABLE `w3_apps_website` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`apps_type` tinyint(1) NOT NULL COMMENT '关联的类型,0:关联Git,1:关联容器服务,2:关联云资产',
- `apps_string_info` varchar(255) NOT NULL COMMENT '资产内容,字符串型',
- `apps_number_info` bigint(20) NOT NULL COMMENT '资产内容,数字型',
+ `apps_string_info` varchar(255) DEFAULT NULL COMMENT '资产内容,字符串型',
+ `apps_number_info` bigint(20) DEFAULT NULL COMMENT '资产内容,数字型',
`apps_website_id` bigint(20) NOT NULL COMMENT '关联站点的ID',
`apps_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
`apps_createtime` datetime NOT NULL COMMENT '创建时间',
@@ -117,8 +117,8 @@ CREATE TABLE `w3_clouds_assets` (
`cloud_assets_zone` varchar(30) DEFAULT NULL COMMENT '云资产归属可用区',
`cloud_assets_regions` varchar(30) DEFAULT NULL COMMENT '云资产归属地区',
`cloud_assets_config` varchar(68) DEFAULT NULL COMMENT '云资产配置',
- `cloud_assets_intranet_ip` varchar(13) DEFAULT NULL COMMENT '云资产内网IP',
- `cloud_assets_public_ip` varchar(13) DEFAULT NULL COMMENT '云资产外网IP',
+ `cloud_assets_intranet_ip` varchar(20) DEFAULT NULL COMMENT '云资产内网IP',
+ `cloud_assets_public_ip` varchar(20) DEFAULT NULL COMMENT '云资产外网IP',
`cloud_assets_instance_name` varchar(58) DEFAULT NULL COMMENT '云资产实例别名',
`cloud_assets_fingerprint` varchar(255) DEFAULT NULL COMMENT '云资产指纹,如系统版本',
`cloud_assets_createtime` datetime DEFAULT NULL COMMENT '云资产创建时间',
@@ -151,26 +151,103 @@ CREATE TABLE `w3_clouds_secrets` (
`cloud_secret_errormsg` varchar(255) DEFAULT NULL COMMENT '异常原因',
`cloud_secret_info` varchar(20) NOT NULL COMMENT '备注',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='云厂商配置';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='云厂商配置';
-- ----------------------------
--- Table structure for w3_gitlab_config
+-- Table structure for w3_git_api_analyze
-- ----------------------------
-DROP TABLE IF EXISTS `w3_gitlab_config`;
-CREATE TABLE `w3_gitlab_config` (
+DROP TABLE IF EXISTS `w3_git_api_analyze`;
+CREATE TABLE `w3_git_api_analyze` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
- `gitlab_config_addr` varchar(255) NOT NULL COMMENT 'gitlab/GITHUB主地址',
- `gitlab_config_username` varchar(255) NOT NULL COMMENT '账号',
- `gitlab_config_token` varchar(255) NOT NULL COMMENT 'token值',
- `gitlab_config_password` varchar(255) DEFAULT '1' COMMENT '密码',
- `gitlab_config_status` tinyint(1) DEFAULT '1' COMMENT '状态,0:停用,1:启用',
- `gitlab_config_delete_status` tinyint(1) DEFAULT '1' COMMENT '删除状态,0:删除,1:启用',
- `gitlab_create_userid` bigint(20) NOT NULL COMMENT '创建的用户ID',
- `gitlab_config_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
- `gitlab_config_createtime` datetime NOT NULL COMMENT '创建时间',
- `gitlab_config_errormsg` varchar(255) DEFAULT NULL COMMENT '异常原因',
+ `git_store_service_id` bigint(20) NOT NULL COMMENT '资产的ID',
+ `git_store_service_commitid` char(50) NOT NULL COMMENT 'git的commitID',
+ `git_store_commit_createtime` datetime NOT NULL COMMENT '入库时间',
+ `git_store_commit_apibase` char(32) NOT NULL COMMENT '主目录',
+ `git_store_commit_apichild` char(32) DEFAULT NULL COMMENT '子目录',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='git配置';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='git的接口分析';
+
+-- ----------------------------
+-- Table structure for w3_git_commits
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_git_commits`;
+CREATE TABLE `w3_git_commits` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `git_store_service_id` bigint(20) NOT NULL COMMENT '资产的ID',
+ `git_store_service_commitid` char(50) NOT NULL COMMENT 'git的commitID',
+ `git_store_commit_createtime` datetime NOT NULL COMMENT '入库时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='git的commit记录';
+
+-- ----------------------------
+-- Table structure for w3_git_component_analyze
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_git_component_analyze`;
+CREATE TABLE `w3_git_component_analyze` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `git_store_service_id` bigint(20) NOT NULL COMMENT '资产的ID',
+ `git_store_service_commitid` char(50) NOT NULL COMMENT 'git的commitID',
+ `git_store_commit_createtime` datetime NOT NULL COMMENT '入库时间',
+ `git_store_commit_component_path` char(32) DEFAULT NULL COMMENT '存储路径',
+ `git_store_commit_component_packname` char(32) DEFAULT NULL COMMENT '模块名',
+ `git_store_commit_component_version` char(32) DEFAULT NULL COMMENT '版本号',
+ `git_store_commit_component_count` bigint(20) DEFAULT NULL COMMENT '统计数',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='git的组件调用分析';
+
+-- ----------------------------
+-- Table structure for w3_git_lang_counts
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_git_lang_counts`;
+CREATE TABLE `w3_git_lang_counts` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `git_store_service_id` bigint(20) NOT NULL COMMENT '资产的ID',
+ `git_store_service_commitid` char(50) NOT NULL COMMENT 'git的commitID',
+ `git_store_commit_createtime` datetime NOT NULL COMMENT '入库时间',
+ `git_store_commit_lang_name` char(32) NOT NULL COMMENT '语言名称',
+ `git_store_commit_lang_code_count` bigint(20) NOT NULL COMMENT '代码行数',
+ `git_store_commit_lang_file_count` bigint(20) NOT NULL COMMENT '文件数',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='git的组成分析';
+
+-- ----------------------------
+-- Table structure for w3_gitstore_assets
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_gitstore_assets`;
+CREATE TABLE `w3_gitstore_assets` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `git_store_service_name` varchar(255) NOT NULL COMMENT '服务名称',
+ `git_store_service_type` tinyint(1) NOT NULL COMMENT 'git的类型,0:Gitee,1:GitHub,2:GitLab',
+ `git_store_service_addr` varchar(255) NOT NULL COMMENT 'git仓库主地址',
+ `git_store_service_status` tinyint(1) DEFAULT '1' COMMENT '状态,0:不可用,1:可用',
+ `git_store_service_language` varchar(32) DEFAULT '待检测' COMMENT '语言类型,工具自动检测',
+ `git_store_serivce_delete_status` tinyint(1) DEFAULT '1' COMMENT '删除状态,0:删除,1:启用',
+ `git_store_serivce_control` tinyint(1) DEFAULT '0' COMMENT '是否是手动创建,0:自动,1:手动',
+ `git_store_serivce_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
+ `git_store_service_createtime` datetime NOT NULL COMMENT '创建时间',
+ `git_store_service_config_id` bigint(20) DEFAULT '0' COMMENT '归属的配置ID',
+ `git_store_service_errormsg` varchar(255) DEFAULT NULL COMMENT '异常原因',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='git仓库资产';
+
+-- ----------------------------
+-- Table structure for w3_gitstore_config
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_gitstore_config`;
+CREATE TABLE `w3_gitstore_config` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `git_store_type` tinyint(1) NOT NULL COMMENT 'git的类型,0:Gitee,1:GitHub,2:GitLab',
+ `git_store_addr` varchar(255) NOT NULL COMMENT 'gitlab/GITHUB主地址',
+ `git_store_username` varchar(255) NOT NULL COMMENT '账号',
+ `git_store_password` varchar(255) NOT NULL COMMENT '密码',
+ `git_store_status` tinyint(1) DEFAULT '1' COMMENT '状态,0:停用,1:启用',
+ `git_store_delete_status` tinyint(1) DEFAULT '1' COMMENT '删除状态,0:删除,1:启用',
+ `git_store_create_userid` bigint(20) NOT NULL COMMENT '创建的用户ID',
+ `git_store_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
+ `git_store_createtime` datetime NOT NULL COMMENT '创建时间',
+ `git_store_errormsg` varchar(255) DEFAULT NULL COMMENT '异常原因',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='git配置';
-- ----------------------------
-- Table structure for w3_kubernetes_assets
@@ -213,7 +290,7 @@ CREATE TABLE `w3_license` (
`license_type` tinyint(1) DEFAULT '1' COMMENT '类型,1:License版本,2:License内容',
`lincese_info` char(32) DEFAULT '' COMMENT 'License内容',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='License管理';
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='License管理';
-- ----------------------------
-- Table structure for w3_secrets
@@ -230,7 +307,7 @@ CREATE TABLE `w3_secrets` (
`secret_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
`secret_createtime` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='授权秘钥管理';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='授权秘钥管理';
-- ----------------------------
-- Table structure for w3_spider_config
@@ -247,7 +324,7 @@ CREATE TABLE `w3_spider_config` (
`spider_delete` tinyint(1) DEFAULT '1' COMMENT '删除状态,0:删除,1:启用',
`spider_create_userid` bigint(20) NOT NULL COMMENT '创建的用户ID',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='抓取配置表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='抓取配置表';
-- ----------------------------
-- Table structure for w3_statistics
@@ -260,14 +337,14 @@ CREATE TABLE `w3_statistics` (
`statis_counts` bigint(20) DEFAULT '0' COMMENT '统计数',
`website_id` bigint(20) NOT NULL COMMENT '站点归属ID',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='数据统计表';
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='数据统计表';
-- ----------------------------
-- Table structure for w3_users
-- ----------------------------
DROP TABLE IF EXISTS `w3_users`;
CREATE TABLE `w3_users` (
- `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `user_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_name` varchar(25) NOT NULL COMMENT '用户名',
`user_password` char(32) NOT NULL COMMENT '密码',
`user_createtime` datetime NOT NULL COMMENT '创建时间',
@@ -275,7 +352,7 @@ CREATE TABLE `w3_users` (
`user_status` tinyint(1) DEFAULT '1' COMMENT '规则状态,0:禁用,1:启用',
`user_delete` tinyint(1) DEFAULT '1' COMMENT '逻辑删除状态,0:已删除,1:启用',
PRIMARY KEY (`user_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='用户表';
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户表';
-- ----------------------------
-- Table structure for w3_vuls_circulation
@@ -288,7 +365,7 @@ CREATE TABLE `w3_vuls_circulation` (
`vul_dispose_status` tinyint(1) DEFAULT '0' COMMENT '处置状态,0:待处理,1:解决中,2:误报忽略,3:已解决,4:白名单,5:无效单,6:修改',
`vul_circulation_info` varchar(255) DEFAULT '暂无' COMMENT '流转信息',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=75 DEFAULT CHARSET=utf8 COMMENT='漏洞管理.流转单';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='漏洞管理.流转单';
-- ----------------------------
-- Table structure for w3_vuls_service
@@ -315,7 +392,7 @@ CREATE TABLE `w3_vuls_service` (
`vul_uuid` bigint(20) DEFAULT '0' COMMENT '漏洞创建人,如果是工具,默认为0',
`vul_hosts` bigint(20) NOT NULL COMMENT '漏洞归属站点的ID',
PRIMARY KEY (`id`,`vul_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COMMENT='漏洞管理';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='漏洞管理';
-- ----------------------------
-- Table structure for w3_vuls_tags
@@ -325,7 +402,7 @@ CREATE TABLE `w3_vuls_tags` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`vul_tags` varchar(30) NOT NULL COMMENT '漏洞标签',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COMMENT='漏洞管理.风险标签';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='漏洞管理.风险标签';
-- ----------------------------
-- Table structure for w3_web_attack_rules
@@ -342,7 +419,7 @@ CREATE TABLE `w3_web_attack_rules` (
`rules_delete` tinyint(1) DEFAULT '1' COMMENT '逻辑删除状态,0:已删除,1:启用',
`rules_regex` longtext NOT NULL COMMENT '规则内容',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='web检测规则';
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='web检测规则';
-- ----------------------------
-- Table structure for w3_web_attacks
@@ -367,7 +444,7 @@ CREATE TABLE `w3_web_attacks` (
`attack_area` varchar(10) DEFAULT '未知' COMMENT '归属地区',
`attack_judge` varchar(255) DEFAULT '暂无' COMMENT '判定备注',
PRIMARY KEY (`attack_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=12265 DEFAULT CHARSET=utf8 COMMENT='攻击日志信息';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='攻击日志信息';
-- ----------------------------
-- Table structure for w3_web_attacks_circulation
@@ -379,7 +456,20 @@ CREATE TABLE `w3_web_attacks_circulation` (
`attack_circulation_createtime` datetime NOT NULL COMMENT '流转时间',
`attack_circulation_logs` varchar(255) DEFAULT '暂无' COMMENT '流转信息',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=12275 DEFAULT CHARSET=utf8 COMMENT='攻击日志信息.流转单';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='攻击日志信息.流转单';
+
+-- ----------------------------
+-- Table structure for w3_webscan_base_config
+-- ----------------------------
+DROP TABLE IF EXISTS `w3_webscan_base_config`;
+CREATE TABLE `w3_webscan_base_config` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `webscan_config_string_info` text COMMENT '配置内容(字符串型)',
+ `webscan_config_type` tinyint(1) DEFAULT '0' COMMENT '配置类型,0:爬取深度,1:扫描并发数,2:扫描请求useragent,3:扫描插件,4:云翻译',
+ `webscan_config_int_info` int(11) DEFAULT '0' COMMENT '配置内容(数字型)',
+ `webscan_config_updatetime` datetime DEFAULT NULL COMMENT '配置创建/更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='web扫描设置';
-- ----------------------------
-- Table structure for w3_website
@@ -394,7 +484,7 @@ CREATE TABLE `w3_website` (
`website_updatetime` datetime DEFAULT NULL COMMENT '更新时间',
`website_delete` tinyint(1) DEFAULT '1' COMMENT '逻辑删除,0:删除,1:可用',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='站点管理';
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='站点管理';
-- ----------------------------
-- Table structure for w3_website_config
@@ -424,19 +514,15 @@ CREATE TABLE `w3_website_service` (
PRIMARY KEY (`id`,`website_types`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='站点管理.服务配置';
--- ----------------------------
--- Table structure for w3_webscan_base_config
--- ----------------------------
-DROP TABLE IF EXISTS `w3_webscan_base_config`;
-CREATE TABLE `w3_webscan_base_config` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
- `webscan_config_string_info` text COMMENT '配置内容(字符串型)',
- `webscan_config_type` tinyint(1) DEFAULT '0' COMMENT '配置类型,0:爬取深度,1:扫描并发数,2:扫描请求useragent,3:扫描插件,4:云翻译',
- `webscan_config_int_info` int(11) DEFAULT '0' COMMENT '配置内容(数字型)',
- `webscan_config_updatetime` datetime DEFAULT NULL COMMENT '配置创建/更新时间',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='web扫描设置';
-
+CREATE TABLE `w3_water_targes`
+(
+ `id` bigint NOT NULL auto_increment COMMENT 'id',
+ `apps_website_id` bigint NOT NULL COMMENT '站点ID',
+ `apps_water_types` char(50) NOT NULL COMMENT '水位类型',
+ `apps_water_counts` int NOT NULL COMMENT '水位数字',
+ `apps_water_updatetime` datetime NOT NULL COMMENT '水位更新时间',
+ primary key (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='站点水位设定';
/**
* 初始化数据
diff --git a/deploy/docker-compose-m1/docker-compose.yml b/deploy/docker-compose-m1/docker-compose.yml
index faf6d2e..d9b7d4e 100644
--- a/deploy/docker-compose-m1/docker-compose.yml
+++ b/deploy/docker-compose-m1/docker-compose.yml
@@ -71,17 +71,9 @@ services:
# volumes:
# - './esdata:/bitnami/elasticsearch/data'
- #用于debug用
- kibana:
- image: docker.elastic.co/kibana/kibana:8.1.3-arm64
- ports:
- - '5601:5601'
- environment:
- ELASTICSEARCH_URL: http://elasticsearch:9200
-
# 分析端
w3aAnalysisAgent:
- image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-agent:v1.0.11
+ image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-agent:v1.0.13
environment:
- topic=weblogs
- kafka=kafka:9092
@@ -90,7 +82,7 @@ services:
# 告警端
w3aAlterAgent:
- image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-agent:v1.0.11
+ image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-agent:v1.0.13
environment:
- topic=weblogs
- kafka=kafka:9092
@@ -99,14 +91,22 @@ services:
# 资产采集端
w3aAssetsAgent:
- image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-agent:v1.0.11
+ image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-agent:v1.0.13
environment:
- openapi=w3aworkapi:8080
- modes=assets
+ # 代码扫描端
+ w3aCodeScanAgent:
+ image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-agent:v1.0.13
+ environment:
+ - openapi=w3aworkapi:8080
+ - modes=codescan
+ - redis=w3aRedis:6379
+
# Web前端
w3aFrotend:
- image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-frontend:v1.0.11
+ image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-frontend:v1.0.13
ports:
- '81:80'
depends_on:
@@ -114,7 +114,7 @@ services:
# 平台侧
w3aDashboard:
- image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-dashboard:v1.0.11
+ image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-dashboard:v1.0.13
ports:
- '8081:8080'
environment:
@@ -135,7 +135,7 @@ services:
# workAPI
w3aworkapi:
- image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-workapi:v1.0.11
+ image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-workapi:v1.0.13
ports:
- '8082:8080'
environment:
@@ -153,7 +153,7 @@ services:
# openAPI
w3aopenapi:
- image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-openapi:v1.0.11
+ image: registry.cn-beijing.aliyuncs.com/aidolphins_com/w3a-openapi:v1.0.13
ports:
- '8083:8080'
environment:
diff --git a/deploy/docker-compose-m1/web/log/access.log b/deploy/docker-compose-m1/web/log/access.log
index 5440eaa..7fcf73e 100644
--- a/deploy/docker-compose-m1/web/log/access.log
+++ b/deploy/docker-compose-m1/web/log/access.log
@@ -75557,3 +75557,52 @@
{"@timestamp": "19/May/2022:06:14:35 +0000","request_body":"-","remote_addr":"192.168.144.1","http_host":"127.0.0.1","request":"GET / HTTP/1.1","status":"499","body_bytes_sents":"0","req_time":"0.022","http_user_agent":"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2226.0 Safari/537.36", "http_referer":"-", "request_method":"GET", "http_x_forwarded_for":"-"}
{"@timestamp": "19/May/2022:06:14:35 +0000","request_body":"-","remote_addr":"192.168.144.1","http_host":"169.254.169.254","request":"GET http://169.254.169.254/latest/meta-data/ HTTP/1.1","status":"400","body_bytes_sents":"0","req_time":"1.030","http_user_agent":"-", "http_referer":"-", "request_method":"GET", "http_x_forwarded_for":"-"}
{"@timestamp": "19/May/2022:06:14:35 +0000","request_body":"\x0D\x0A ]>\x0D\x0A
"+i(e[t].content)+"
\n"},o.fence=function(e,t,r,n,o){var a,c,u,l,p,h=e[t],f=h.info?s(h.info).trim():"",d="",m="";return f&&(u=f.split(/(\s+)/g),d=u[0],m=u.slice(2).join("")),a=r.highlight&&r.highlight(h.content,d,m)||i(h.content),0===a.indexOf(""+a+"
\n"):""+a+"
\n"},o.image=function(e,t,r,n,s){var i=e[t];return i.attrs[i.attrIndex("alt")][1]=s.renderInlineAsText(i.children,r,n),s.renderToken(e,t,r)},o.hardbreak=function(e,t,r){return r.xhtmlOut?"o;n-=d[n]+1)if(i=t[n],i.marker===s.marker&&i.open&&i.end<0&&(c=!1,(i.close||s.open)&&(i.length+s.length)%3===0&&(i.length%3===0&&s.length%3===0||(c=!0)),!c)){u=n>0&&!t[n-1].open?d[n-1]+1:0,d[r]=r-n+u,d[n]=u,s.open=!1,i.end=r,i.close=!1,a=-1,f=-2;break}-1!==a&&(l[s.marker][(s.open?3:0)+(s.length||0)%3]=a)}}}e.exports=function(e){var t,r=e.tokens_meta,s=e.tokens_meta.length;for(n(e,e.delimiters),t=0;t=55296&&c<=57343?"���":String.fromCharCode(c),t+=6):240===(248&s)&&t+9=0&&this.resetTabindex(this.triggerElm),clearTimeout(this.timeout),this.timeout=setTimeout((function(){e.visible=!1}),"click"===this.trigger?0:this.hideTimeout))},handleClick:function(){this.disabled||(this.visible?this.hide():this.show())},handleTriggerKeyDown:function(e){var t=e.keyCode;[38,40].indexOf(t)>-1?(this.removeTabindex(),this.resetTabindex(this.menuItems[0]),this.menuItems[0].focus(),e.preventDefault(),e.stopPropagation()):13===t?this.handleClick():[9,27].indexOf(t)>-1&&this.hide()},handleItemKeyDown:function(e){var t=e.keyCode,i=e.target,n=this.menuItemsArray.indexOf(i),s=this.menuItemsArray.length-1,r=void 0;[38,40].indexOf(t)>-1?(r=38===t?0!==n?n-1:0:n-1&&(this.hide(),this.triggerElmFocus())},resetTabindex:function(e){this.removeTabindex(),e.setAttribute("tabindex","0")},removeTabindex:function(){this.triggerElm.setAttribute("tabindex","-1"),this.menuItemsArray.forEach((function(e){e.setAttribute("tabindex","-1")}))},initAria:function(){this.dropdownElm.setAttribute("id",this.listId),this.triggerElm.setAttribute("aria-haspopup","list"),this.triggerElm.setAttribute("aria-controls",this.listId),this.splitButton||(this.triggerElm.setAttribute("role","button"),this.triggerElm.setAttribute("tabindex",this.tabindex),this.triggerElm.setAttribute("class",(this.triggerElm.getAttribute("class")||"")+" el-dropdown-selfdefine"))},initEvent:function(){var e=this,t=this.trigger,i=this.show,n=this.hide,s=this.handleClick,r=this.splitButton,a=this.handleTriggerKeyDown,o=this.handleItemKeyDown;this.triggerElm=r?this.$refs.trigger.$el:this.$slots.default[0].elm;var l=this.dropdownElm;this.triggerElm.addEventListener("keydown",a),l.addEventListener("keydown",o,!0),r||(this.triggerElm.addEventListener("focus",(function(){e.focusing=!0})),this.triggerElm.addEventListener("blur",(function(){e.focusing=!1})),this.triggerElm.addEventListener("click",(function(){e.focusing=!1}))),"hover"===t?(this.triggerElm.addEventListener("mouseenter",i),this.triggerElm.addEventListener("mouseleave",n),l.addEventListener("mouseenter",i),l.addEventListener("mouseleave",n)):"click"===t&&this.triggerElm.addEventListener("click",s)},handleMenuItemClick:function(e,t){this.hideOnClick&&(this.visible=!1),this.$emit("command",e,t)},triggerElmFocus:function(){this.triggerElm.focus&&this.triggerElm.focus()},initDomOperation:function(){this.dropdownElm=this.popperElm,this.menuItems=this.dropdownElm.querySelectorAll("[tabindex='-1']"),this.menuItemsArray=[].slice.call(this.menuItems),this.initEvent(),this.initAria()}},render:function(e){var t=this,i=this.hide,n=this.splitButton,s=this.type,r=this.dropdownSize,a=this.disabled,o=function(e){t.$emit("click",e),i()},l=null;if(n)l=e("el-button-group",[e("el-button",{attrs:{type:s,size:r,disabled:a},nativeOn:{click:o}},[this.$slots.default]),e("el-button",{ref:"trigger",attrs:{type:s,size:r,disabled:a},class:"el-dropdown__caret-button"},[e("i",{class:"el-dropdown__icon el-icon-arrow-down"})])]);else{l=this.$slots.default;var c=l[0].data||{},u=c.attrs,h=void 0===u?{}:u;a&&!h.disabled&&(h.disabled=!0,c.attrs=h)}var d=a?null:this.$slots.dropdown;return e("div",{class:"el-dropdown",directives:[{name:"clickoutside",value:i}],attrs:{"aria-disabled":a}},[l,d])}},ue=ce,he=o(ue,ie,ne,!1,null,null,null);he.options.__file="packages/dropdown/src/dropdown.vue";var de=he.exports;de.install=function(e){e.component(de.name,de)};var pe=de,fe=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("ul",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-dropdown-menu el-popper",class:[e.size&&"el-dropdown-menu--"+e.size]},[e._t("default")],2)])},me=[];fe._withStripped=!0;var ve={name:"ElDropdownMenu",componentName:"ElDropdownMenu",mixins:[H.a],props:{visibleArrow:{type:Boolean,default:!0},arrowOffset:{type:Number,default:0}},data:function(){return{size:this.dropdown.dropdownSize}},inject:["dropdown"],created:function(){var e=this;this.$on("updatePopper",(function(){e.showPopper&&e.updatePopper()})),this.$on("visible",(function(t){e.showPopper=t}))},mounted:function(){this.dropdown.popperElm=this.popperElm=this.$el,this.referenceElm=this.dropdown.$el,this.dropdown.initDomOperation()},watch:{"dropdown.placement":{immediate:!0,handler:function(e){this.currentPlacement=e}}}},ge=ve,be=o(ge,fe,me,!1,null,null,null);be.options.__file="packages/dropdown/src/dropdown-menu.vue";var ye=be.exports;ye.install=function(e){e.component(ye.name,ye)};var _e=ye,xe=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-dropdown-menu__item",class:{"is-disabled":e.disabled,"el-dropdown-menu__item--divided":e.divided},attrs:{"aria-disabled":e.disabled,tabindex:e.disabled?null:-1},on:{click:e.handleClick}},[e.icon?i("i",{class:e.icon}):e._e(),e._t("default")],2)},Ce=[];xe._withStripped=!0;var we={name:"ElDropdownItem",mixins:[O.a],props:{command:{},disabled:Boolean,divided:Boolean,icon:String},methods:{handleClick:function(e){this.dispatch("ElDropdown","menu-item-click",[this.command,this])}}},ke=we,Se=o(ke,xe,Ce,!1,null,null,null);Se.options.__file="packages/dropdown/src/dropdown-item.vue";var De=Se.exports;De.install=function(e){e.component(De.name,De)};var $e=De,Oe=Oe||{};Oe.Utils=Oe.Utils||{},Oe.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--)e.splice(t,0,e[t]);e=e.join("")}return/^[0-9a-fA-F]{6}$/.test(e)?{red:parseInt(e.slice(0,2),16),green:parseInt(e.slice(2,4),16),blue:parseInt(e.slice(4,6),16)}:{red:255,green:255,blue:255}},mixColor:function(e,t){var i=this.getColorChannels(e),n=i.red,s=i.green,r=i.blue;return t>0?(n*=1-t,s*=1-t,r*=1-t):(n+=(255-n)*t,s+=(255-s)*t,r+=(255-r)*t),"rgb("+Math.round(n)+", "+Math.round(s)+", "+Math.round(r)+")"},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},openMenu:function(e,t){var i=this.openedMenus;-1===i.indexOf(e)&&(this.uniqueOpened&&(this.openedMenus=i.filter((function(e){return-1!==t.indexOf(e)}))),this.openedMenus.push(e))},closeMenu:function(e){var t=this.openedMenus.indexOf(e);-1!==t&&this.openedMenus.splice(t,1)},handleSubmenuClick:function(e){var t=e.index,i=e.indexPath,n=-1!==this.openedMenus.indexOf(t);n?(this.closeMenu(t),this.$emit("close",t,i)):(this.openMenu(t,i),this.$emit("open",t,i))},handleItemClick:function(e){var t=this,i=e.index,n=e.indexPath,s=this.activeIndex,r=null!==e.index;r&&(this.activeIndex=e.index),this.$emit("select",i,n,e),("horizontal"===this.mode||this.collapse)&&(this.openedMenus=[]),this.router&&r&&this.routeToItem(e,(function(e){if(t.activeIndex=s,e){if("NavigationDuplicated"===e.name)return;console.error(e)}}))},initOpenedMenu:function(){var e=this,t=this.activeIndex,i=this.items[t];if(i&&"horizontal"!==this.mode&&!this.collapse){var n=i.indexPath;n.forEach((function(t){var i=e.submenus[t];i&&e.openMenu(t,i.indexPath)}))}},routeToItem:function(e,t){var i=e.route||e.index;try{this.$router.push(i,(function(){}),t)}catch(n){console.error(n)}},open:function(e){var t=this,i=this.submenus[e.toString()].indexPath;i.forEach((function(e){return t.openMenu(e,i)}))},close:function(e){this.closeMenu(e)}},mounted:function(){this.initOpenedMenu(),this.$on("item-click",this.handleItemClick),this.$on("submenu-click",this.handleSubmenuClick),"horizontal"===this.mode&&new Le(this.$el),this.$watch("items",this.updateActiveIndex)}},Be=Ve,ze=o(Be,je,Fe,!1,null,null,null);ze.options.__file="packages/menu/src/menu.vue";var Re=ze.exports;Re.install=function(e){e.component(Re.name,Re)};var He,We,qe=Re,Ye=i(21),Ke=i.n(Ye),Ue={inject:["rootMenu"],computed:{indexPath:function(){var e=[this.index],t=this.$parent;while("ElMenu"!==t.$options.componentName)t.index&&e.unshift(t.index),t=t.$parent;return e},parentMenu:function(){var e=this.$parent;while(e&&-1===["ElMenu","ElSubmenu"].indexOf(e.$options.componentName))e=e.$parent;return e},paddingStyle:function(){if("vertical"!==this.rootMenu.mode)return{};var e=20,t=this.$parent;if(this.rootMenu.collapse)e=20;else while(t&&"ElMenu"!==t.$options.componentName)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return{paddingLeft:e+"px"}}}},Ge={props:{transformOrigin:{type:[Boolean,String],default:!1},offset:H.a.props.offset,boundariesPadding:H.a.props.boundariesPadding,popperOptions:H.a.props.popperOptions},data:H.a.data,methods:H.a.methods,beforeDestroy:H.a.beforeDestroy,deactivated:H.a.deactivated},Xe={name:"ElSubmenu",componentName:"ElSubmenu",mixins:[Ue,O.a,Ge],components:{ElCollapseTransition:Ke.a},props:{index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0}},data:function(){return{popperJS:null,timeout:null,items:{},submenus:{},mouseInChild:!1}},watch:{opened:function(e){var t=this;this.isMenuPopup&&this.$nextTick((function(e){t.updatePopper()}))}},computed:{appendToBody:function(){return void 0===this.popperAppendToBody?this.isFirstLevel:this.popperAppendToBody},menuTransitionName:function(){return this.rootMenu.collapse?"el-zoom-in-left":"el-zoom-in-top"},opened:function(){return this.rootMenu.openedMenus.indexOf(this.index)>-1},active:function(){var e=!1,t=this.submenus,i=this.items;return Object.keys(i).forEach((function(t){i[t].active&&(e=!0)})),Object.keys(t).forEach((function(i){t[i].active&&(e=!0)})),e},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},isMenuPopup:function(){return this.rootMenu.isMenuPopup},titleStyle:function(){return"horizontal"!==this.mode?{color:this.textColor}:{borderBottomColor:this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent",color:this.active?this.activeTextColor:this.textColor}},isFirstLevel:function(){var e=!0,t=this.$parent;while(t&&t!==this.rootMenu){if(["ElSubmenu","ElMenuItemGroup"].indexOf(t.$options.componentName)>-1){e=!1;break}t=t.$parent}return e}},methods:{handleCollapseToggle:function(e){e?this.initPopper():this.doDestroy()},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},handleClick:function(){var e=this.rootMenu,t=this.disabled;"hover"===e.menuTrigger&&"horizontal"===e.mode||e.collapse&&"vertical"===e.mode||t||this.dispatch("ElMenu","submenu-click",this)},handleMouseenter:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.showTimeout;if("ActiveXObject"in window||"focus"!==e.type||e.relatedTarget){var n=this.rootMenu,s=this.disabled;"click"===n.menuTrigger&&"horizontal"===n.mode||!n.collapse&&"vertical"===n.mode||s||(this.dispatch("ElSubmenu","mouse-enter-child"),clearTimeout(this.timeout),this.timeout=setTimeout((function(){t.rootMenu.openMenu(t.index,t.indexPath)}),i),this.appendToBody&&this.$parent.$el.dispatchEvent(new MouseEvent("mouseenter")))}},handleMouseleave:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.rootMenu;"click"===i.menuTrigger&&"horizontal"===i.mode||!i.collapse&&"vertical"===i.mode||(this.dispatch("ElSubmenu","mouse-leave-child"),clearTimeout(this.timeout),this.timeout=setTimeout((function(){!e.mouseInChild&&e.rootMenu.closeMenu(e.index)}),this.hideTimeout),this.appendToBody&&t&&"ElSubmenu"===this.$parent.$options.name&&this.$parent.handleMouseleave(!0))},handleTitleMouseenter:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.hoverBackground)}},handleTitleMouseleave:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.backgroundColor||"")}},updatePlacement:function(){this.currentPlacement="horizontal"===this.mode&&this.isFirstLevel?"bottom-start":"right-start"},initPopper:function(){this.referenceElm=this.$el,this.popperElm=this.$refs.menu,this.updatePlacement()}},created:function(){var e=this;this.$on("toggle-collapse",this.handleCollapseToggle),this.$on("mouse-enter-child",(function(){e.mouseInChild=!0,clearTimeout(e.timeout)})),this.$on("mouse-leave-child",(function(){e.mouseInChild=!1,clearTimeout(e.timeout)}))},mounted:function(){this.parentMenu.addSubmenu(this),this.rootMenu.addSubmenu(this),this.initPopper()},beforeDestroy:function(){this.parentMenu.removeSubmenu(this),this.rootMenu.removeSubmenu(this)},render:function(e){var t=this,i=this.active,n=this.opened,s=this.paddingStyle,r=this.titleStyle,a=this.backgroundColor,o=this.rootMenu,l=this.currentPlacement,c=this.menuTransitionName,u=this.mode,h=this.disabled,d=this.popperClass,p=this.$slots,f=this.isFirstLevel,m=e("transition",{attrs:{name:c}},[e("div",{ref:"menu",directives:[{name:"show",value:n}],class:["el-menu--"+u,d],on:{mouseenter:function(e){return t.handleMouseenter(e,100)},mouseleave:function(){return t.handleMouseleave(!0)},focus:function(e){return t.handleMouseenter(e,100)}}},[e("ul",{attrs:{role:"menu"},class:["el-menu el-menu--popup","el-menu--popup-"+l],style:{backgroundColor:o.backgroundColor||""}},[p.default])])]),v=e("el-collapse-transition",[e("ul",{attrs:{role:"menu"},class:"el-menu el-menu--inline",directives:[{name:"show",value:n}],style:{backgroundColor:o.backgroundColor||""}},[p.default])]),g="horizontal"===o.mode&&f||"vertical"===o.mode&&!o.collapse?"el-icon-arrow-down":"el-icon-arrow-right";return e("li",{class:{"el-submenu":!0,"is-active":i,"is-opened":n,"is-disabled":h},attrs:{role:"menuitem","aria-haspopup":"true","aria-expanded":n},on:{mouseenter:this.handleMouseenter,mouseleave:function(){return t.handleMouseleave(!1)},focus:this.handleMouseenter}},[e("div",{class:"el-submenu__title",ref:"submenu-title",on:{click:this.handleClick,mouseenter:this.handleTitleMouseenter,mouseleave:this.handleTitleMouseleave},style:[s,r,{backgroundColor:a}]},[p.title,e("i",{class:["el-submenu__icon-arrow",g]})]),this.isMenuPopup?m:v])}},Ze=Xe,Qe=o(Ze,He,We,!1,null,null,null);Qe.options.__file="packages/menu/src/submenu.vue";var Je=Qe.exports;Je.install=function(e){e.component(Je.name,Je)};var et=Je,tt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-menu-item",class:{"is-active":e.active,"is-disabled":e.disabled},style:[e.paddingStyle,e.itemStyle,{backgroundColor:e.backgroundColor}],attrs:{role:"menuitem",tabindex:"-1"},on:{click:e.handleClick,mouseenter:e.onMouseEnter,focus:e.onMouseEnter,blur:e.onMouseLeave,mouseleave:e.onMouseLeave}},["ElMenu"===e.parentMenu.$options.componentName&&e.rootMenu.collapse&&e.$slots.title?i("el-tooltip",{attrs:{effect:"dark",placement:"right"}},[i("div",{attrs:{slot:"content"},slot:"content"},[e._t("title")],2),i("div",{staticStyle:{position:"absolute",left:"0",top:"0",height:"100%",width:"100%",display:"inline-block","box-sizing":"border-box",padding:"0 20px"}},[e._t("default")],2)]):[e._t("default"),e._t("title")]],2)},it=[];tt._withStripped=!0;var nt=i(26),st=i.n(nt),rt={name:"ElMenuItem",componentName:"ElMenuItem",mixins:[Ue,O.a],components:{ElTooltip:st.a},props:{index:{default:null,validator:function(e){return"string"===typeof e||null===e}},route:[String,Object],disabled:Boolean},computed:{active:function(){return this.index===this.rootMenu.activeIndex},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},itemStyle:function(){var e={color:this.active?this.activeTextColor:this.textColor};return"horizontal"!==this.mode||this.isNested||(e.borderBottomColor=this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent"),e},isNested:function(){return this.parentMenu!==this.rootMenu}},methods:{onMouseEnter:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.hoverBackground)},onMouseLeave:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.backgroundColor)},handleClick:function(){this.disabled||(this.dispatch("ElMenu","item-click",this),this.$emit("click",this))}},mounted:function(){this.parentMenu.addItem(this),this.rootMenu.addItem(this)},beforeDestroy:function(){this.parentMenu.removeItem(this),this.rootMenu.removeItem(this)}},at=rt,ot=o(at,tt,it,!1,null,null,null);ot.options.__file="packages/menu/src/menu-item.vue";var lt=ot.exports;lt.install=function(e){e.component(lt.name,lt)};var ct=lt,ut=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-menu-item-group"},[i("div",{staticClass:"el-menu-item-group__title",style:{paddingLeft:e.levelPadding+"px"}},[e.$slots.title?e._t("title"):[e._v(e._s(e.title))]],2),i("ul",[e._t("default")],2)])},ht=[];ut._withStripped=!0;var dt={name:"ElMenuItemGroup",componentName:"ElMenuItemGroup",inject:["rootMenu"],props:{title:{type:String}},data:function(){return{paddingLeft:20}},computed:{levelPadding:function(){var e=20,t=this.$parent;if(this.rootMenu.collapse)return 20;while(t&&"ElMenu"!==t.$options.componentName)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return e}}},pt=dt,ft=o(pt,ut,ht,!1,null,null,null);ft.options.__file="packages/menu/src/menu-item-group.vue";var mt=ft.exports;mt.install=function(e){e.component(mt.name,mt)};var vt=mt,gt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{mousedown:function(e){e.preventDefault()},click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)},bt=[];gt._withStripped=!0;var yt=void 0,_t="\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",xt=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function Ct(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),s=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width")),r=xt.map((function(e){return e+":"+t.getPropertyValue(e)})).join(";");return{contextStyle:r,paddingSize:n,borderSize:s,boxSizing:i}}function wt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;yt||(yt=document.createElement("textarea"),document.body.appendChild(yt));var n=Ct(e),s=n.paddingSize,r=n.borderSize,a=n.boxSizing,o=n.contextStyle;yt.setAttribute("style",o+";"+_t),yt.value=e.value||e.placeholder||"";var l=yt.scrollHeight,c={};"border-box"===a?l+=r:"content-box"===a&&(l-=s),yt.value="";var u=yt.scrollHeight-s;if(null!==t){var h=u*t;"border-box"===a&&(h=h+s+r),l=Math.max(h,l),c.minHeight=h+"px"}if(null!==i){var d=u*i;"border-box"===a&&(d=d+s+r),l=Math.min(d,l)}return c.height=l+"px",yt.parentNode&&yt.parentNode.removeChild(yt),yt=null,c}var kt=i(7),St=i.n(kt),Dt=i(19),$t={name:"ElInput",componentName:"ElInput",mixins:[O.a,D.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return St()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"===typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick((function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()}))}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize,t=this.type;if("textarea"===t)if(e){var i=e.minRows,n=e.maxRows;this.textareaCalcStyle=wt(this.$refs.textarea,i,n)}else this.textareaCalcStyle={minHeight:wt(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(e){this.$emit("compositionstart",e),this.isComposing=!0},handleCompositionUpdate:function(e){this.$emit("compositionupdate",e);var t=e.target.value,i=t[t.length-1]||"";this.isComposing=!Object(Dt["isKorean"])(i)},handleCompositionEnd:function(e){this.$emit("compositionend",e),this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;nt.key[i])return 1}return 0};return e.map((function(e,t){return{value:e,index:t,key:r?r(e,t):null}})).sort((function(e,t){var n=a(e,t);return n||(n=e.index-t.index),n*i})).map((function(e){return e.value}))},Kn=function(e,t){var i=null;return e.columns.forEach((function(e){e.id===t&&(i=e)})),i},Un=function(e,t){for(var i=null,n=0;ns)return console.warn("[ElementCalendar]end time should be greater than start time"),[];if(Object(ar["validateRangeInOneMonth"])(n,s))return[[n,s]];var r=[],a=new Date(n.getFullYear(),n.getMonth()+1,1),o=this.toDate(a.getTime()-Mv);if(!Object(ar["validateRangeInOneMonth"])(a,s))return console.warn("[ElementCalendar]start time and end time interval must not exceed two months"),[];r.push([n,o]);var l=this.realFirstDayOfWeek,c=a.getDay(),u=0;return c!==l&&(0===l?u=7-c:(u=l-c,u=u>0?u:7+u)),a=this.toDate(a.getTime()+u*Mv),a.getDate()3?0:(e-e%10!==10)*e%10]}};var x={D:function(e){return e.getDay()},DD:function(e){return v(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return v(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return v(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return v(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return v(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return v(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return v(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return v(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return v(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return v(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return v(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+v(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},C={d:[o,function(e,t){e.day=t}],Do:[o+u,function(e,t){e.day=parseInt(t,10)}],M:[o,function(e,t){e.month=t-1}],yy:[o,function(e,t){var i=new Date,n=+(""+i.getFullYear()).substr(0,2);e.year=""+(t>68?n-1:n)+t}],h:[o,function(e,t){e.hour=t}],m:[o,function(e,t){e.minute=t}],s:[o,function(e,t){e.second=t}],yyyy:[c,function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:[l,function(e,t){e.millisecond=t}],D:[o,d],ddd:[u,d],MMM:[u,m("monthNamesShort")],MMMM:[u,m("monthNames")],a:[u,function(e,t,i){var n=t.toLowerCase();n===i.amPm[0]?e.isPm=!1:n===i.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var i,n=(t+"").match(/([+-]|\d\d)/gi);n&&(i=60*n[1]+parseInt(n[2],10),e.timezoneOffset="+"===n[0]?i:-i)}]};C.dd=C.d,C.dddd=C.ddd,C.DD=C.D,C.mm=C.m,C.hh=C.H=C.HH=C.h,C.MM=C.M,C.ss=C.s,C.A=C.a,r.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},r.format=function(e,t,i){var n=i||r.i18n;if("number"===typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");t=r.masks[t]||t||r.masks["default"];var s=[];return t=t.replace(h,(function(e,t){return s.push(t),"@@@"})),t=t.replace(a,(function(t){return t in x?x[t](e,n):t.slice(1,t.length-1)})),t.replace(/@@@/g,(function(){return s.shift()}))},r.parse=function(e,t,i){var n=i||r.i18n;if("string"!==typeof t)throw new Error("Invalid format in fecha.parse");if(t=r.masks[t]||t,e.length>1e3)return null;var s={},o=[],l=[];t=t.replace(h,(function(e,t){return l.push(t),"@@@"}));var c=p(t).replace(a,(function(e){if(C[e]){var t=C[e];return o.push(t[1]),"("+t[0]+")"}return e}));c=c.replace(/@@@/g,(function(){return l.shift()}));var u=e.match(new RegExp(c,"i"));if(!u)return null;for(var d=1;d=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,s=i.valueKey;if(!this.created&&!n){if(s&&"object"===("undefined"===typeof e?"undefined":l(e))&&"object"===("undefined"===typeof t?"undefined":l(t))&&e[s]===t[s])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(o["getValueByPath"])(e,i)===Object(o["getValueByPath"])(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some((function(e){return Object(o["getValueByPath"])(e,i)===Object(o["getValueByPath"])(t,i)}))}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(o["escapeRegexpString"])(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple,n=i?t:[t],s=this.select.cachedOptions.indexOf(this),r=n.indexOf(this);s>-1&&r<0&&this.select.cachedOptions.splice(s,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},u=c,h=i(0),d=Object(h["a"])(u,n,s,!1,null,null,null);d.options.__file="packages/select/src/option.vue";t["a"]=d.exports},4:function(e,t){e.exports=i("d010")},53:function(e,t,i){"use strict";i.r(t);var n=i(33);n["a"].install=function(e){e.component(n["a"].name,n["a"])},t["default"]=n["a"]}})},e974:function(e,t,i){"use strict";t.__esModule=!0;var n=i("2b0e"),s=a(n),r=i("5128");function a(e){return e&&e.__esModule?e:{default:e}}var o=s.default.prototype.$isServer?function(){}:i("6167"),l=function(e){return e.stopPropagation()};t.default={props:{transformOrigin:{type:[Boolean,String],default:!0},placement:{type:String,default:"bottom"},boundariesPadding:{type:Number,default:5},reference:{},popper:{},offset:{default:0},value:Boolean,visibleArrow:Boolean,arrowOffset:{type:Number,default:35},appendToBody:{type:Boolean,default:!0},popperOptions:{type:Object,default:function(){return{gpuAcceleration:!1}}}},data:function(){return{showPopper:!1,currentPlacement:""}},watch:{value:{immediate:!0,handler:function(e){this.showPopper=e,this.$emit("input",e)}},showPopper:function(e){this.disabled||(e?this.updatePopper():this.destroyPopper(),this.$emit("input",e))}},methods:{createPopper:function(){var e=this;if(!this.$isServer&&(this.currentPlacement=this.currentPlacement||this.placement,/^(top|bottom|left|right)(-start|-end)?$/g.test(this.currentPlacement))){var t=this.popperOptions,i=this.popperElm=this.popperElm||this.popper||this.$refs.popper,n=this.referenceElm=this.referenceElm||this.reference||this.$refs.reference;!n&&this.$slots.reference&&this.$slots.reference[0]&&(n=this.referenceElm=this.$slots.reference[0].elm),i&&n&&(this.visibleArrow&&this.appendArrow(i),this.appendToBody&&document.body.appendChild(this.popperElm),this.popperJS&&this.popperJS.destroy&&this.popperJS.destroy(),t.placement=this.currentPlacement,t.offset=this.offset,t.arrowOffset=this.arrowOffset,this.popperJS=new o(n,i,t),this.popperJS.onCreate((function(t){e.$emit("created",e),e.resetTransformOrigin(),e.$nextTick(e.updatePopper)})),"function"===typeof t.onUpdate&&this.popperJS.onUpdate(t.onUpdate),this.popperJS._popper.style.zIndex=r.PopupManager.nextZIndex(),this.popperElm.addEventListener("click",l))}},updatePopper:function(){var e=this.popperJS;e?(e.update(),e._popper&&(e._popper.style.zIndex=r.PopupManager.nextZIndex())):this.createPopper()},doDestroy:function(e){!this.popperJS||this.showPopper&&!e||(this.popperJS.destroy(),this.popperJS=null)},destroyPopper:function(){this.popperJS&&this.resetTransformOrigin()},resetTransformOrigin:function(){if(this.transformOrigin){var e={top:"bottom",bottom:"top",left:"right",right:"left"},t=this.popperJS._popper.getAttribute("x-placement").split("-")[0],i=e[t];this.popperJS._popper.style.transformOrigin="string"===typeof this.transformOrigin?this.transformOrigin:["top","bottom"].indexOf(t)>-1?"center "+i:i+" center"}},appendArrow:function(e){var t=void 0;if(!this.appended){for(var i in this.appended=!0,e.attributes)if(/^_v-/.test(e.attributes[i].name)){t=e.attributes[i].name;break}var n=document.createElement("div");t&&n.setAttribute(t,""),n.setAttribute("x-arrow",""),n.className="popper__arrow",e.appendChild(n)}}},beforeDestroy:function(){this.doDestroy(!0),this.popperElm&&this.popperElm.parentNode===document.body&&(this.popperElm.removeEventListener("click",l),document.body.removeChild(this.popperElm))},deactivated:function(){this.$options.beforeDestroy[0].call(this)}}},eedf:function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=95)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"===typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",(function(){return n}))},95:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?i("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",[e._t("default")],2):e._e()])},s=[];n._withStripped=!0;var r={name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.$options.propsData.hasOwnProperty("disabled")?this.disabled:(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},a=r,o=i(0),l=Object(o["a"])(a,n,s,!1,null,null,null);l.options.__file="packages/button/src/button.vue";var c=l.exports;c.install=function(e){e.component(c.name,c)};t["default"]=c}})},f0d9:function(e,t,i){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"确定",clear:"清空"},datepicker:{now:"此刻",today:"今天",cancel:"取消",clear:"清空",confirm:"确定",selectDate:"选择日期",selectTime:"选择时间",startDate:"开始日期",startTime:"开始时间",endDate:"结束日期",endTime:"结束时间",prevYear:"前一年",nextYear:"后一年",prevMonth:"上个月",nextMonth:"下个月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},select:{loading:"加载中",noMatch:"无匹配数据",noData:"无数据",placeholder:"请选择"},cascader:{noMatch:"无匹配数据",loading:"加载中",placeholder:"请选择",noData:"暂无数据"},pagination:{goto:"前往",pagesize:"条/页",total:"共 {total} 条",pageClassifier:"页"},messagebox:{title:"提示",confirm:"确定",cancel:"取消",error:"输入的数据不合法!"},upload:{deleteTip:"按 delete 键可删除",delete:"删除",preview:"查看图片",continue:"继续上传"},table:{emptyText:"暂无数据",confirmFilter:"筛选",resetFilter:"重置",clearFilter:"全部",sumText:"合计"},tree:{emptyText:"暂无数据"},transfer:{noMatch:"无匹配数据",noData:"无数据",titles:["列表 1","列表 2"],filterPlaceholder:"请输入搜索内容",noCheckedFormat:"共 {total} 项",hasCheckedFormat:"已选 {checked}/{total} 项"},image:{error:"加载失败"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"确定",cancelButtonText:"取消"},empty:{description:"暂无数据"}}}},f3ad:function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=74)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"===typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",(function(){return n}))},11:function(e,t){e.exports=i("2bb5")},21:function(e,t){e.exports=i("d397")},4:function(e,t){e.exports=i("d010")},74:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{mousedown:function(e){e.preventDefault()},click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)},s=[];n._withStripped=!0;var r=i(4),a=i.n(r),o=i(11),l=i.n(o),c=void 0,u="\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",h=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function d(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),s=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width")),r=h.map((function(e){return e+":"+t.getPropertyValue(e)})).join(";");return{contextStyle:r,paddingSize:n,borderSize:s,boxSizing:i}}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;c||(c=document.createElement("textarea"),document.body.appendChild(c));var n=d(e),s=n.paddingSize,r=n.borderSize,a=n.boxSizing,o=n.contextStyle;c.setAttribute("style",o+";"+u),c.value=e.value||e.placeholder||"";var l=c.scrollHeight,h={};"border-box"===a?l+=r:"content-box"===a&&(l-=s),c.value="";var p=c.scrollHeight-s;if(null!==t){var f=p*t;"border-box"===a&&(f=f+s+r),l=Math.max(f,l),h.minHeight=f+"px"}if(null!==i){var m=p*i;"border-box"===a&&(m=m+s+r),l=Math.min(m,l)}return h.height=l+"px",c.parentNode&&c.parentNode.removeChild(c),c=null,h}var f=i(9),m=i.n(f),v=i(21),g={name:"ElInput",componentName:"ElInput",mixins:[a.a,l.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return m()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"===typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick((function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()}))}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize,t=this.type;if("textarea"===t)if(e){var i=e.minRows,n=e.maxRows;this.textareaCalcStyle=p(this.$refs.textarea,i,n)}else this.textareaCalcStyle={minHeight:p(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(e){this.$emit("compositionstart",e),this.isComposing=!0},handleCompositionUpdate:function(e){this.$emit("compositionupdate",e);var t=e.target.value,i=t[t.length-1]||"";this.isComposing=!Object(v["isKorean"])(i)},handleCompositionEnd:function(e){this.$emit("compositionend",e),this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n0)a=l,l=1+(l<<1),l<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{s=r+1;while(ls&&(l=s);var u=a;a=r-l,l=r-u}a++;while(as&&(l=s);var u=a;a=r-l,l=r-u}else{s=i-r;while(l=0)a=l,l=1+(l<<1),l<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}a++;while(a=0;h--)e[m+h]=e[g+h];if(0===r){b=!0;break}}if(e[p--]=c[f--],1===--s){b=!0;break}if(_=s-l(e[d],c,0,s,s-1,t),0!==_){for(p-=_,f-=_,s-=_,m=p+1,g=f+1,h=0;h<_;h++)e[m+h]=c[g+h];if(s<=1){b=!0;break}}if(e[p--]=e[d--],0===--r){b=!0;break}v--}while(y>=i||_>=i);if(b)break;v<0&&(v=0),v+=2}if(o=v,o<1&&(o=1),1===s){for(p-=r,d-=r,m=p+1,g=d+1,h=r-1;h>=0;h--)e[m+h]=e[g+h];e[p]=c[f]}else{if(0===s)throw new Error;for(g=p-(s-1),h=0;h=0;h--)e[m+h]=e[g+h];e[p]=c[f]}else for(g=p-(s-1),h=0;hd&&(f=d),s(e,i,i+f,i+u,t),u=f}h.pushRun(i,u),h.mergeRuns(),l-=u,i+=u}while(0!==l);h.forceMergeRuns()}}e.exports=h},"051b":function(e,t,n){var i=n("1a14"),r=n("10db");e.exports=n("0bad")?function(e,t,n){return i.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},"057f":function(e,t,n){var i=n("fc6a"),r=n("241c").f,o={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return r(e)}catch(t){return a.slice()}};e.exports.f=function(e){return a&&"[object Window]"==o.call(e)?s(e):r(i(e))}},"05f5":function(e,t,n){var i=n("7a41"),r=n("ef08").document,o=i(r)&&i(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},"0655":function(e,t,n){var i=n("8728"),r=1e-8;function o(e,t){return Math.abs(e-t)1&&i&&i.length>1){var s=o(i)/o(r);!isFinite(s)&&(s=1),t.pinchScale=s;var l=a(i);return t.pinchX=l[0],t.pinchY=l[1],{type:"pinch",target:e[0].target,event:t}}}}},l=r;e.exports=l},"0b4b":function(e,t,n){n("d28f"),n("f14c"),n("0ee7"),n("ebf9")},"0b99":function(e,t,n){"use strict";var i=n("19fa")(!0);n("393a")(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=i(t,n),this._i+=e.length,{value:e,done:!1})}))},"0bad":function(e,t,n){e.exports=!n("4b8b")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},"0c12":function(e,t){function n(){}function i(e,t,n,i){for(var r=0,o=t.length,a=0,s=0;r