# jfinal-nat
**Repository Path**: sohnny/jfinal-nat
## Basic Information
- **Project Name**: jfinal-nat
- **Description**: No description available
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 3
- **Created**: 2018-01-12
- **Last Updated**: 2021-05-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# JFINAL-NAT简介
JFINAL-NAT 是基于 jfinal 与 httpclient 实现的内网穿透反向代理插件
备注 : 基于数字证书/权限的反向代理
原理: HTTP头中加入: Cookie: iPlantDirectoryPro=<安全平台认证令牌>
# 快速入门
**1. 引入 [jfinalnat.jar](http://47.94.91.75:8080/jfinalnat-1.0.jar) 包, 或引入maven配置**
```xml
com.gitee.sohnny
jfinalnat
1.1
```
**2. 新建 reverse_proxy.properties 配置文件 内容如下:**
```txt
################## HttpClient start ##################
maxTotal = 200
defaultMaxPerRoute = 20
localhostRoutePort = 80
maxPerRoute = 50
targetUrl = http://127.0.0.1:8080/testService
################## HttpClient end ##################
################## reverse_proxy start ##################
isEnable = false
amHost = cert.test.com
updateTime = 600
updateFastTime = 1
keyStorePath = c:/test.keystore
password = 123456
targetUrl_cross = http://cert.test.com:9000/mapping/test
################## reverse_proxy end ###################
```
```txt
maxTotal 最大http线程池为 200;
defaultMaxPerRoute 默认的路由数为 20;
targetUrl 开发时反向代理的目标服务器地址;
isEnable 为false时的请求转向地址targetUrl,为true是转向targetUrl_cross
amHost 获取token的主机
updateTime 获取token的频率为 600秒
updateFastTime 获取token的最快频率 1秒
keyStorePath 打包好的keystore证书文件
password keystore文件的密码
```
**3. 对 jfinal 的 JFinalConfig 配置如下:**
```java
@Override
public void afterJFinalStart() {
PoolingHttpClientConfig.init();
System.err.println("httpClient代理配置完毕");
}
```
# 用法
```java
import com.jfinal.core.Controller;
import com.jfinalnat.httpclient.annotation.Proxy;
import com.jfinalnat.httpclient.sdk.HttpService;
public class UserAction extends Controller {
@Proxy(uri="/getUser") //代理目标服务器的地址为 (targetUrl_cross/targetUrl) + /getAuth
public void test() {};
/**
* 主界面
*/
public void index() { //没有Proxy注解则不走代理, 直接进入方法体, 在方法体内可通过HttpService.get等方法进行服务接口调用
User user = HttpService.get(User.class, "/getUser");
setAttr("user", user);
render("index.html");
}
/**
* 绑定
*/
@Proxy //无参的默认为请求代理服务器的uri, (targetUrl_cross/targetUrl) + uri
public void bind() {}
```
# 项目maven依赖
```xml
junit
junit
3.8.1
test
org.eclipse.jetty
jetty-jsp
8.1.8.v20121106
provided
com.jfinal
jfinal
3.3
provided
org.apache.httpcomponents
httpclient
4.5.2
provided
org.apache.httpcomponents
httpmime
4.5.2
provided
com.google.code.gson
gson
2.8.1
provided
log4j
log4j
1.2.17
provided
org.slf4j
slf4j-api
1.7.25
provided
org.slf4j
slf4j-log4j12
1.7.25
provided
jfinalnat
org.apache.maven.plugins
maven-war-plugin
3.2.0
maven-compiler-plugin
1.8
1.8
UTF-8
src\main\webapp\WEB-INF\lib
```
**JFinal-nat**