diff --git a/.gitignore b/.gitignore
index 60a727db..993208fd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -52,4 +52,6 @@ hs_err_pid*
**/app-**.yml
-**/memo/**
\ No newline at end of file
+**/memo/**
+
+neutrino-proxy-vuepress/deploy.sh
\ No newline at end of file
diff --git a/README.md b/README.md
index 4f8ad428..664aff8f 100644
--- a/README.md
+++ b/README.md
@@ -180,6 +180,9 @@ neutrino.proxy.client.license-key=b0a907332b474b25897c4dcb31fc7eb6
+
+
+
# ❤️ 感谢
diff --git a/assets/developer/tany.png b/assets/developer/tany.png
new file mode 100644
index 00000000..5b04f55f
Binary files /dev/null and b/assets/developer/tany.png differ
diff --git a/docs/如何贡献.MD b/docs/如何贡献.MD
new file mode 100644
index 00000000..46c8028c
--- /dev/null
+++ b/docs/如何贡献.MD
@@ -0,0 +1,37 @@
+# 🎋代码分支说明
+- dev:常规开发分支,日常的开发、Bug修复、提交PR都在此分支
+- feature/xxx:特征分支,一些试验性开发、提交PR都在此分支,xxx可自行取一个有意义的名称
+- release/xxx:发行版分支,作为阶段性成果、重大更新的版本固化分支。受保护,不允许任何提交。
+- master:主分支,定期同步最新代码,目前仅支持本人(傲世孤尘/雨韵诗泽)提交。
+
+# ✊贡献的方式
+包括,但不限于以下形式:
+- 提交[issues](https://gitee.com/dromara/neutrino-proxy/issues)
+- 参与[issues](https://gitee.com/dromara/neutrino-proxy/issues)解决的必要性、解决方案的讨论、给出建设性的意见
+- 领取[issues](https://gitee.com/dromara/neutrino-proxy/issues) 并完成开发、提交PR
+- 为[本项目](https://gitee.com/dromara/neutrino-proxy)完善代码注释
+- 为[本项目](https://gitee.com/dromara/neutrino-proxy)增加测试代码
+- 为[本项目](https://gitee.com/dromara/neutrino-proxy)优化现有代码
+- 为[本项目](https://gitee.com/dromara/neutrino-proxy)优化操作体验
+- 通过公众号、博客、贴吧、论坛等形式分享/宣传中微子代理
+- 丰富项目文档,包括使用过程中踩过的坑、需要优化的点、具体问题的解决方法等
+
+# 🧬贡献代码的步骤
+- 在Gitee上fork项目到自己的仓库
+- 将fork后的自己仓库的项目clone到本地
+- 拉取dev分支最新代码,并修改
+- commit并push到自己的仓库
+- 登录Gitee在的仓库上可以看到一个 pull request 按钮,点击它,填写一些说明信息,然后提交即可。
+- 等待合并
+
+# 📐PR的规范
+> 你可能发现有的代码并不符合这个规范,但我们后续都会朝着这个方向迈进。后续我们会逐步全面规范化,请先保证新提交的代码满足以下要求:
+
+- 注释完备,尤其每个新增的方法应按照Java文档规范标明方法说明、参数说明、返回值说明等信息,必要时请添加单元测试,如果愿意,也可以加上你的大名。
+- 原则上,不允许自行添加第三方依赖库。若确有必要,请先和项目负责人沟通达成一致。
+- 对现有代码的优化,请在注释中说明原因。
+- 如果涉及到数据库的变更,则至少需要做到以下绩点:
+ - sqlite、mysql下均测试通过
+ - 在`./neutrino-proxy-server/src/main/resource/sql`下维护更新对应的表结构sql文件
+ - 对于新增的表,维护必要的初始化数据
+ - 在对应的mysql、sqlite的update目录下,维护SQL变更记录,确保SQL执行测试通过
\ No newline at end of file
diff --git a/docs/快速使用.MD b/docs/快速使用.MD
new file mode 100644
index 00000000..386ff53e
--- /dev/null
+++ b/docs/快速使用.MD
@@ -0,0 +1,79 @@
+# 1、部署服务端
+## 1.1、Docker一键部署
+### 使用默认sqlite数据库
+```shell
+docker run -it -p 9000-9200:9000-9200/tcp -p 8888:8888 \
+-d --restart=always --name neutrino-proxy \
+registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:1.7.1
+```
+
+### 指定自己的mysql数据库
+- 在服务器上创建目录:/root/neutrino-proxy/config
+- 在该目录下创建`app.yml`文本文件,并配置如下内容:
+```yml
+neutrino:
+ data:
+ db:
+ type: mysql
+ # 自己的数据库实例,创建一个空的名为'neutrino-proxy'的数据库即可,首次启动服务端会自动初始化
+ url: jdbc:mysql://xxxx:3306/neutrino-proxy?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useAffectedRows=true&useSSL=false
+ driver-class: com.mysql.jdbc.Driver
+ # 数据库帐号
+ username: xxx
+ # 数据库密码
+ password: wHCvf3@hmw^D*
+```
+- 然后执行如下命令:
+```shell
+docker run -it -p 9000-9200:9000-9200/tcp -p 8888:8888 \
+-v /root/neutrino-proxy/config:/root/neutrino-proxy/config \
+-d --restart=always --name neutrino \
+registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:1.7.1
+```
+
+## 1.2、使用jar包自行部署
+- 首先确保服务器上已安装java8运行环境
+- 打开[发行版页面](https://gitee.com/dromara/neutrino-proxy/releases),下载最新的release包:`neutrino-proxy-server.jar`、`neutrino-proxy-admin.zip`
+- 在服务器上新建部署目录:`/work/projects/neutrino-proxy-server`
+- 将` neutrino-proxy-server.jar`、`neutrino-proxy-admin.zip`上传至服务器部署目录。
+- 解压`neutrino-proxy-admin.zip`文件
+- 执行命令`java -jar neutrino-proxy-server.jar`启动服务端完成部署,默认使用sqlite数据库。
+- 若需要指定自己的mysql数据库,同样的需要在当前目录下新建`app.yml`文件,文件内容同上。执行命令`java -jar neutrino-proxy-server.jar config=app.yml`启动服务端完成部署
+- 可参照 https://gitee.com/dromara/neutrino-proxy/blob/master/bin/server_start.sh 使用shell脚本启动服务端。
+
+# 2、管理后台配置
+- 服务端部署成功后,访问`http://{服务端IP}:8888`打开后台管理页面。
+- 使用默认的管理员帐号登录:admin/123456
+- 打开`代理配置>License管理`页面,可以看到系统已经自动为管理员初始化了一条License记录,复制该`LicenseKey`备用,后续客户端配置需要。
+- 打开`代理配置>端口映射`页面,可以看到系统已经自动为初始化了几条端口映射。可根据需要自行添加、修改。这里我们以`9101 -> 127.0.0.1:8080`映射为例
+
+# 3、启动客户端
+- 首先确保本地已安装java8运行环境
+- 打开[发行版页面](https://gitee.com/dromara/neutrino-proxy/releases),下载最新的release包:`neutrino-proxy-client.jar`
+- 在本地`neutrino-proxy-client.jar`同级别目录下新建`app.yml`文件,并配置如下内容:
+```yml
+neutrino:
+ proxy:
+ client:
+ # ssl证书密钥(使用jjar包内自带的证书,则此处无需修改)
+ key-store-password: 123456
+ # ssl证书管理密钥(使用jjar包内自带的证书,则此处无需修改。自定义证书,则此处配置对应的路径)
+ jks-path: classpath:/test.jks
+ # 代理服务端IP
+ server-ip: localhost
+ # 代理服务端IP, 若是非ssl端口,则ssl-enable需要配置为false
+ server-port: 9002
+ # 是否启用ssl
+ ssl-enable: true
+ # licenseKey,客户端凭证。此处需要配置刚刚从管理后台复制的LicenseKey
+ license-key: xxxx
+```
+- 执行命令`java -jar neutrino-proxy-client.jar`启动客户端
+- 查看服务端License管理,刷新页面,对应的License在线状态为`在线`,则表明客户端已正常连接。
+
+# 4、代理验证
+- 本地启动被代理服务,如:redis、本地web项目、本地mysql等等
+- 先确保本地能正常访问被代理服务,如果本地都不能访问,不用想代理更不可能!!!
+- 通过服务端IP+9101(上面License配置的端口映射重的服务端端口)访问本地被代理服务
+
+访问成功,至此首次完整的内网穿透体验完成。开源不易,请速至[Gitee仓库](https://gitee.com/dromara/neutrino-proxy)一键三连🤝
\ No newline at end of file
diff --git a/docs/管理后台使用指南.MD b/docs/管理后台使用指南.MD
new file mode 100644
index 00000000..b4762dbc
--- /dev/null
+++ b/docs/管理后台使用指南.MD
@@ -0,0 +1,30 @@
+# 首页
+- License统计:统计License相关数量指标
+- 端口映射统计:统计端口映射相关数量指标
+- 今日流量:统计当天的服务端上行/下行流量数据
+- 流量汇总:统计所有(包含当天)的服务端上行/下行流量数据
+- 流量监控:按天统计最近15天(可能会动态调整)每天的上行流量、下行流量、汇总流量
+
+# 代理配置
+- License管理:License是客户端连接服务端的唯一合法凭证。一个License同时只能被一个客户端使用,一个License可以维护多条端口映射
+- 端口映射:服务端IP+端口 -> 客户端IP+端口的四元组映射(因目前服务端单节点只有一个公网IP,所以不体现出来),是内网穿透的基本单元。
+
+# 系统管理
+- 用户管理:支持多用户,一个用户可持有多个License。由于项目目前主推个人版,所以暂是没有权限这一套,管理员之外的所有用户都属于游客。对于绝大多数操作,游客仅有只读权限。
+- 端口池管理:用于统一管理服务器内网穿透端口,方便统一设置安全组。
+- 端口池分组:对端口池的一个分组。
+ - 全局分组:该分组下的端口全局通用。
+ - 用户分组:该分组下的端口由分组绑定的用户独占。
+ - License分组:该分组下的端口由分组绑定的License独占。
+- 调度管理:维护服务端定时任务。方便开发、调试。正常使用时无需关心。
+
+# 报表管理
+- 用户流量报表:基于用户维度的流量统计
+- License流量报表:基于License的流量统计
+- 用户流量月度明细:基于用户的流量月度统计
+- License流量月度明细:基于License的流量月度统计
+
+# 日志管理
+- 调度日志:服务端定时任务执行日志
+- 登录日志:管理后端登录、退出登录的日志
+- 客户端连接日志:客户端连接、断开的日志
\ No newline at end of file
diff --git a/neutrino-proxy-admin/build/webpack.base.conf.js b/neutrino-proxy-admin/build/webpack.base.conf.js
index 97bc6e2b..bd1f81e0 100644
--- a/neutrino-proxy-admin/build/webpack.base.conf.js
+++ b/neutrino-proxy-admin/build/webpack.base.conf.js
@@ -40,7 +40,8 @@ module.exports = {
},
module: {
rules: [
- ...(config.dev.useEslint ? [createLintingRule()] : []),
+ // 关闭EsLint校验
+ // ...(config.dev.useEslint ? [createLintingRule()] : []),
{
test: /\.vue$/,
loader: 'vue-loader',
diff --git a/neutrino-proxy-admin/config/dev.env.js b/neutrino-proxy-admin/config/dev.env.js
index f812fea4..825a20c6 100644
--- a/neutrino-proxy-admin/config/dev.env.js
+++ b/neutrino-proxy-admin/config/dev.env.js
@@ -1,5 +1,7 @@
module.exports = {
NODE_ENV: '"development"',
ENV_CONFIG: '"dev"',
- BASE_API: '"http://103.163.47.16:8888"'
+ BASE_API: '"http://103.163.47.16:8888"',
+ USER_NAME: '"visitor"',
+ USER_PWD: '"123456"'
}
diff --git a/neutrino-proxy-admin/src/lang/en.js b/neutrino-proxy-admin/src/lang/en.js
index b243b0a5..46bfdb58 100644
--- a/neutrino-proxy-admin/src/lang/en.js
+++ b/neutrino-proxy-admin/src/lang/en.js
@@ -102,7 +102,8 @@ export default {
draft: 'Draft',
delete: 'Delete',
cancel: 'Cancel',
- confirm: 'Confirm'
+ confirm: 'Confirm',
+ portOrRange: 'example: 3306 or 1000-2000'
},
errorLog: {
tips: 'Please click the bug icon in the upper right corner',
diff --git a/neutrino-proxy-admin/src/lang/zh.js b/neutrino-proxy-admin/src/lang/zh.js
index b342fe7e..76286040 100644
--- a/neutrino-proxy-admin/src/lang/zh.js
+++ b/neutrino-proxy-admin/src/lang/zh.js
@@ -136,6 +136,7 @@ export default {
enable: '启用',
loginName: '登录名',
port: '端口',
+ portOrRange: '端口或范围,如: 3306或1000-2000',
licenseName: 'License名称',
licenseKey: 'License Key',
isOnline: '在线状态',
diff --git a/neutrino-proxy-admin/src/views/home/admin/components/DailyTrafficChart.vue b/neutrino-proxy-admin/src/views/home/admin/components/DailyTrafficChart.vue
index 37686327..d2d483fb 100644
--- a/neutrino-proxy-admin/src/views/home/admin/components/DailyTrafficChart.vue
+++ b/neutrino-proxy-admin/src/views/home/admin/components/DailyTrafficChart.vue
@@ -5,7 +5,6 @@