YanFrp/src/main/java/top/octopusyan/model/ProxySetupModel.java

390 lines
11 KiB
Java

package top.octopusyan.model;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import org.apache.commons.lang3.StringUtils;
import top.octopusyan.config.ProxyConfig;
import top.octopusyan.manager.http.request.ProxySetup;
import top.octopusyan.utils.DomainUtil;
/**
* @author : octopus yan
* @email : octopus_yan@foxmail.com
* @description : 用户隧道设置模型
* @create : 2022-4-6 16:45
*/
public class ProxySetupModel {
private final SimpleStringProperty id = new SimpleStringProperty();
private final SimpleStringProperty server = new SimpleStringProperty();
private final SimpleStringProperty proxyName = new SimpleStringProperty();
private final SimpleStringProperty proxyType = new SimpleStringProperty();
private final SimpleStringProperty localIp = new SimpleStringProperty();
private final SimpleStringProperty localPort = new SimpleStringProperty();
private final SimpleStringProperty remotePort = new SimpleStringProperty();
private final SimpleStringProperty domain = new SimpleStringProperty();
private final SimpleStringProperty domainSuffix = new SimpleStringProperty();
private final SimpleBooleanProperty useEncryption = new SimpleBooleanProperty();
private final SimpleBooleanProperty useCompression = new SimpleBooleanProperty();
private final SimpleStringProperty locations = new SimpleStringProperty();
private final SimpleStringProperty hostHeaderRewrite = new SimpleStringProperty();
private final SimpleStringProperty header_X_From_Where = new SimpleStringProperty();
private final SimpleStringProperty sk = new SimpleStringProperty();
private final SimpleBooleanProperty status = new SimpleBooleanProperty();
private final SimpleStringProperty serverName = new SimpleStringProperty();
private final SimpleIntegerProperty sort = new SimpleIntegerProperty();
private final SimpleBooleanProperty running = new SimpleBooleanProperty();
private final SimpleBooleanProperty isCustomize = new SimpleBooleanProperty();
private final SimpleStringProperty httpUser = new SimpleStringProperty();
private final SimpleStringProperty httpPwd = new SimpleStringProperty();
public volatile Boolean isProvider = null;
public ProxySetupModel(ProxySetup setup) {
if (setup == null) return;
String domainStr = setup.getDomain();
String suffix = "";
isCustomize.set(DomainUtil.isCustomize(setup));
if (!isCustomize.get()) {
domainStr = DomainUtil.getCustomize(setup);
suffix = DomainUtil.getSuffix(setup);
}
setId(setup.getId());
setServer(ProxyConfig.getServerName(setup.getNode()));
setProxyName(setup.getProxy_name());
setProxyType(StringUtils.upperCase(setup.getProxy_type()));
setLocalIp(setup.getLocal_ip());
setLocalPort(setup.getLocal_port());
setRemotePort(setup.getRemote_port());
setDomain(domainStr);
setHttpUser(setup.getHttp_user());
setHttpPwd(setup.getHttp_pwd());
setDomainSuffix(suffix);
setLocations(setup.getLocations());
setUseEncryption(setup.getUse_encryption());
setUseCompression(setup.getUse_compression());
setHeader_X_From_Where(setup.getHost_header_rewrite());
setHostHeaderRewrite(setup.getHost_header_rewrite());
setStatus(setup.getStatus() == null || setup.getStatus());
setServerName(setup.getServer_name());
setSk(setup.getSk());
setSort(setup.getSort());
setRunning(setup.isRuning());
}
public String getId() {
return id.get();
}
public String getServer() {
return server.get();
}
public String getProxyName() {
return proxyName.get();
}
public String getProxyType() {
return StringUtils.lowerCase(proxyType.get());
}
public String getLocalPort() {
return localPort.get();
}
public String getRemotePort() {
return remotePort.get();
}
public Integer getSort() {
return sort.get();
}
public String getLocalIp() {
return localIp.get();
}
public String getDomain() {
return domain.get();
}
public String getDomainSuffix() {
return domainSuffix.get();
}
public String getHeader_X_From_Where() {
return header_X_From_Where.get();
}
public String getHostHeaderRewrite() {
return hostHeaderRewrite.get();
}
public String getLocations() {
return locations.get();
}
public String getSk() {
return sk.get();
}
public boolean isRunning() {
return running.get();
}
public boolean getStatus() {
return status.get();
}
public Boolean isProvider() {
return serverName.get() == null ? null : serverName.get().equals("提供者");
}
public String getServerName() {
return serverName.get();
}
public boolean isUseCompression() {
return useCompression.get();
}
public boolean isUseEncryption() {
return useEncryption.get();
}
public String getHttpUser() {
return httpUser.get();
}
public String getHttpPwd() {
return httpPwd.get();
}
public void setId(Integer id) {
this.id.set(id == null ? null : id.toString());
}
public void setProxyName(String proxyName) {
this.proxyName.set(proxyName);
}
public void setProxyType(String proxyType) {
this.proxyType.set(StringUtils.upperCase(proxyType));
}
public void setServer(String server) {
this.server.set(server);
}
public void setLocalIp(String localIp) {
this.localIp.set(localIp);
}
public void setDomain(String domain) {
this.domain.set(domain);
}
public void setDomainSuffix(String domainSuffix) {
this.domainSuffix.set(domainSuffix);
}
public void setHeader_X_From_Where(String header_X_From_Where) {
this.header_X_From_Where.set(header_X_From_Where);
}
public void setHostHeaderRewrite(String hostHeaderRewrite) {
this.hostHeaderRewrite.set(hostHeaderRewrite);
}
public void setLocalPort(Integer localPort) {
this.localPort.set(Integer.toString(localPort));
}
public void setRemotePort(String remotePort) {
this.remotePort.set(remotePort);
}
public void setLocations(String locations) {
this.locations.set(locations);
}
public void setRunning(Boolean running) {
this.running.set(running);
}
public void setUseCompression(Boolean useCompression) {
this.useCompression.set(useCompression);
}
public void setSk(String sk) {
this.sk.set(sk);
}
public void setSort(Integer sort) {
if (sort != null) this.sort.set(sort);
}
public void setStatus(boolean status) {
this.status.set(status);
}
public void setServerName(String serverName) {
this.serverName.set(serverName);
}
public void setUseEncryption(boolean useEncryption) {
this.useEncryption.set(useEncryption);
}
public void setHttpUser(String httpUser) {
this.httpUser.set(httpUser);
}
public void setHttpPwd(String httpPwd) {
this.httpPwd.set(httpPwd);
}
public SimpleStringProperty httpPwdProperty() {
return httpPwd;
}
public SimpleStringProperty httpUserProperty() {
return httpUser;
}
public SimpleStringProperty serverProperty() {
return server;
}
public SimpleStringProperty proxyNameProperty() {
return proxyName;
}
public SimpleStringProperty proxyTypeProperty() {
return proxyType;
}
public SimpleBooleanProperty runningProperty() {
return running;
}
public SimpleBooleanProperty statusProperty() {
return status;
}
public SimpleBooleanProperty useCompressionProperty() {
return useCompression;
}
public SimpleBooleanProperty useEncryptionProperty() {
return useEncryption;
}
public SimpleStringProperty idProperty() {
return id;
}
public SimpleStringProperty localPortProperty() {
return localPort;
}
public SimpleStringProperty remotePortProperty() {
return remotePort;
}
public SimpleIntegerProperty sortProperty() {
return sort;
}
public SimpleStringProperty domainProperty() {
return domain;
}
public SimpleStringProperty domainSuffixProperty() {
return domainSuffix;
}
public SimpleStringProperty header_X_From_WhereProperty() {
return header_X_From_Where;
}
public SimpleStringProperty localIpProperty() {
return localIp;
}
public SimpleStringProperty locationsProperty() {
return locations;
}
public SimpleStringProperty skProperty() {
return sk;
}
public SimpleStringProperty hostHeaderRewriteProperty() {
return hostHeaderRewrite;
}
public SimpleStringProperty serverNameProperty() {
return serverName;
}
public SimpleBooleanProperty isCustomizeProperty() {
return isCustomize;
}
public void set(ProxySetup setup) {
String domainStr = setup.getDomain();
String suffix = "";
isCustomize.set(DomainUtil.isCustomize(setup));
if (!isCustomize.get()) {
domainStr = DomainUtil.getCustomize(setup);
suffix = DomainUtil.getSuffix(setup);
}
setId(setup.getId());
setProxyName(setup.getProxy_name());
setProxyType(setup.getProxy_type());
setLocalIp(setup.getLocal_ip());
setLocalPort(setup.getLocal_port());
setRemotePort(setup.getRemote_port());
setDomain(domainStr);
setDomainSuffix(suffix);
setLocations(setup.getLocations());
setUseEncryption(setup.getUse_encryption());
setUseCompression(setup.getUse_compression());
setHeader_X_From_Where(setup.getHost_header_rewrite());
setHostHeaderRewrite(setup.getHost_header_rewrite());
setStatus(setup.getStatus() == null || setup.getStatus());
setServerName(setup.getServer_name());
setSk(setup.getSk());
setSort(setup.getSort());
setRunning(setup.isRuning());
// 数据绑定原因 放在最后
setServer(ProxyConfig.getServerName(setup.getNode()));
}
public ProxySetup get() {
return new ProxySetup(
getId() == null ? null : Integer.parseInt(getId()),
ProxyConfig.getServerNode(server.get()),
getProxyName(),
StringUtils.lowerCase(proxyType.getValue()),
getLocalIp(),
getLocalPort() == null ? null : Integer.parseInt(getLocalPort()),
getRemotePort(),
getDomain() == null ? null : getDomain() + getDomainSuffix(),
ProxyConfig.isHttp(this) ? getHttpUser() : null,
ProxyConfig.isHttp(this) ? getHttpPwd() : null,
isUseEncryption(),
isUseCompression(),
getLocations(),
getHostHeaderRewrite(),
getHeader_X_From_Where(),
getSk(),
getSort(),
serverName.get(),
getStatus(),
isRunning()
);
}
}