package top.octopusyan.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.jfoenix.controls.*; import com.jfoenix.validation.base.ValidatorBase; import javafx.application.Platform; import javafx.beans.InvalidationListener; import javafx.beans.Observable; import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.value.ObservableValue; import javafx.collections.ObservableList; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.*; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.layout.StackPane; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import top.octopusyan.base.BaseController; import top.octopusyan.config.ProxyConfig; import top.octopusyan.config.ProxyConfig.ProxyServer; import top.octopusyan.config.ProxyConfig.ProxyType; import top.octopusyan.config.TextValidate; import top.octopusyan.http.listener.OnHttpListener; import top.octopusyan.manager.FrpManager; import top.octopusyan.manager.ProxyManager; import top.octopusyan.manager.http.request.ProxySetup; import top.octopusyan.model.ApplicatonStore; import top.octopusyan.model.ProxySetupModel; import top.octopusyan.utils.*; import java.io.IOException; import java.util.List; import java.util.*; import static top.octopusyan.model.ApplicatonStore.*; /** * @author : octopus yan * @email : octopus_yan@foxmail.com * @description : * @create : 2022-4-4 22:32 */ public class MainController extends BaseController implements Initializable { public static final String PROXY_LIST_ITEM_CLASS = "proxyListItem"; public static final String PROXY_LIST_ITEM_STOP_CLASS = "proxyListItem-stop"; public static final String PROXY_LIST_ITEM_RUN_CLASS = "proxyListItem-run"; public static final String PROXY_LIST_ITEM_CLOSE_CLASS = "proxyListItem-close"; public static final String PROXY_LIST_ITEM_SELECT_CLASS = "proxyListItem-select"; /* 窗口通用控件 */ public StackPane root; public JFXButton minimizeBtn, closeBtn; public Label appVersionLabel; /* 隧道设置控件 */ public JFXComboBox proxyServerComboBox; public JFXButton resetProxyBtn; public JFXTextField proxyNameTextField; public JFXRadioButton openProxyRBtn, closeProxyRBtn; public JFXComboBox proxyProtocolComboBox; public JFXRadioButton serverProviderRBtn, serverVisitorRBtn; public Label localHostLabel; public JFXTextField localHostTextField, localPortTextField; public HBox domainPane; public JFXTextField domainTextField, domainSuffixTextField; public JFXButton customizeDomainBtn; public HBox httpUserPane; public JFXTextField httpUserTextField; public HBox httpPwdPane; public JFXTextField httpPwdTextField; public HBox p2pRolePane, p2pPwdPane, p2pRoleView, serverNamePane; public JFXButton copyP2pConfig, importP2pConfig; public JFXTextField p2pPwdTextField, serverNameTextField; public JFXButton proxyStatusTip, httpUserTip, proxyTypeTip, p2pPwdTip, serverNameTip; public HBox proxyStatusPane; public Label runingLabel; public Hyperlink domainLink; public JFXButton copyDomainBtn; /* 隧道列表控件 */ public JFXListView