@@ -27,12 +27,15 @@ public class SettingsTab {
2727 private JButton buttonSaveAdvanced ;
2828 private JLabel labelHexClientHello ;
2929 private JTextField textFieldHexClientHello ;
30+ private JLabel labelExternalProxyUrl ;
31+ private JTextField textFieldExternalProxyUrl ;
3032
3133 public SettingsTab (Settings settings ) {
3234 textFieldInterceptProxyAddress .setText (settings .getInterceptProxyAddress ());
3335 textFieldBurpProxyAddress .setText (settings .getBurpProxyAddress ());
3436 textFieldSpoofProxyAddress .setText (settings .getSpoofProxyAddress ());
3537 textFieldHexClientHello .setText (settings .getHexClientHello ());
38+ textFieldExternalProxyUrl .setText (settings .getExternalProxyUrl ());
3639 spinnerHttpTimout .setValue (settings .getHttpTimeout ());
3740 checkBoxButtonUseInterceptedFingerprint .setSelected (settings .getUseInterceptedFingerprint ());
3841 for (var item : settings .getFingerprints ()) {
@@ -44,6 +47,7 @@ public SettingsTab(Settings settings) {
4447 settings .setSpoofProxyAddress (textFieldSpoofProxyAddress .getText ());
4548 settings .setFingerprint ((String ) comboBoxFingerprint .getSelectedItem ());
4649 settings .setHexClientHello (textFieldHexClientHello .getText ());
50+ settings .setExternalProxyUrl (textFieldExternalProxyUrl .getText ());
4751 settings .setHttpTimeout ((int ) spinnerHttpTimout .getValue ());
4852 });
4953
@@ -78,7 +82,7 @@ public JPanel getUI() {
7882 tabbedPaneTab = new JTabbedPane ();
7983 panelMain .add (tabbedPaneTab , new GridConstraints (0 , 0 , 1 , 1 , GridConstraints .ANCHOR_CENTER , GridConstraints .FILL_BOTH , GridConstraints .SIZEPOLICY_CAN_SHRINK | GridConstraints .SIZEPOLICY_CAN_GROW , GridConstraints .SIZEPOLICY_CAN_SHRINK | GridConstraints .SIZEPOLICY_CAN_GROW , null , new Dimension (200 , 200 ), null , 0 , false ));
8084 panelSettings = new JPanel ();
81- panelSettings .setLayout (new GridLayoutManager (10 , 1 , new Insets (0 , 0 , 0 , 0 ), -1 , -1 ));
85+ panelSettings .setLayout (new GridLayoutManager (12 , 1 , new Insets (0 , 0 , 0 , 0 ), -1 , -1 ));
8286 tabbedPaneTab .addTab ("settings" , panelSettings );
8387 labelSpoofProxyAddress = new JLabel ();
8488 labelSpoofProxyAddress .setRequestFocusEnabled (false );
@@ -103,9 +107,15 @@ public JPanel getUI() {
103107 spinnerHttpTimout = new JSpinner ();
104108 spinnerHttpTimout .setToolTipText ("The maximum amount of time a dial will wait for a connect to complete." );
105109 panelSettings .add (spinnerHttpTimout , new GridConstraints (7 , 0 , 1 , 1 , GridConstraints .ANCHOR_WEST , GridConstraints .FILL_NONE , GridConstraints .SIZEPOLICY_WANT_GROW , GridConstraints .SIZEPOLICY_FIXED , null , null , null , 0 , false ));
110+ labelExternalProxyUrl = new JLabel ();
111+ labelExternalProxyUrl .setText ("External proxy URL:" );
112+ panelSettings .add (labelExternalProxyUrl , new GridConstraints (8 , 0 , 1 , 1 , GridConstraints .ANCHOR_WEST , GridConstraints .FILL_NONE , GridConstraints .SIZEPOLICY_FIXED , GridConstraints .SIZEPOLICY_FIXED , null , null , null , 0 , false ));
113+ textFieldExternalProxyUrl = new JTextField ();
114+ textFieldExternalProxyUrl .setToolTipText ("Upstream proxy (e.g. socks5://127.0.0.1:1080 or http://127.0.0.1:8080)" );
115+ panelSettings .add (textFieldExternalProxyUrl , new GridConstraints (9 , 0 , 1 , 1 , GridConstraints .ANCHOR_WEST , GridConstraints .FILL_HORIZONTAL , GridConstraints .SIZEPOLICY_WANT_GROW , GridConstraints .SIZEPOLICY_FIXED , null , new Dimension (150 , -1 ), null , 0 , false ));
106116 final JPanel panel1 = new JPanel ();
107117 panel1 .setLayout (new GridLayoutManager (1 , 1 , new Insets (0 , 0 , 0 , 0 ), -1 , -1 ));
108- panelSettings .add (panel1 , new GridConstraints (9 , 0 , 1 , 1 , GridConstraints .ANCHOR_CENTER , GridConstraints .FILL_BOTH , GridConstraints .SIZEPOLICY_CAN_SHRINK | GridConstraints .SIZEPOLICY_CAN_GROW , GridConstraints .SIZEPOLICY_CAN_SHRINK | GridConstraints .SIZEPOLICY_CAN_GROW , null , null , null , 0 , false ));
118+ panelSettings .add (panel1 , new GridConstraints (11 , 0 , 1 , 1 , GridConstraints .ANCHOR_CENTER , GridConstraints .FILL_BOTH , GridConstraints .SIZEPOLICY_CAN_SHRINK | GridConstraints .SIZEPOLICY_CAN_GROW , GridConstraints .SIZEPOLICY_CAN_SHRINK | GridConstraints .SIZEPOLICY_CAN_GROW , null , null , null , 0 , false ));
109119 labelHexClientHello = new JLabel ();
110120 labelHexClientHello .setRequestFocusEnabled (false );
111121 labelHexClientHello .setText ("Hex Client Hello:" );
@@ -117,7 +127,7 @@ public JPanel getUI() {
117127 panelSettings .add (textFieldHexClientHello , new GridConstraints (3 , 0 , 1 , 1 , GridConstraints .ANCHOR_WEST , GridConstraints .FILL_HORIZONTAL , GridConstraints .SIZEPOLICY_WANT_GROW , GridConstraints .SIZEPOLICY_FIXED , null , new Dimension (150 , -1 ), null , 0 , false ));
118128 buttonSave = new JButton ();
119129 buttonSave .setText ("Save all settings" );
120- panelSettings .add (buttonSave , new GridConstraints (8 , 0 , 1 , 1 , GridConstraints .ANCHOR_WEST , GridConstraints .FILL_NONE , GridConstraints .SIZEPOLICY_CAN_SHRINK | GridConstraints .SIZEPOLICY_CAN_GROW , GridConstraints .SIZEPOLICY_FIXED , null , null , null , 0 , false ));
130+ panelSettings .add (buttonSave , new GridConstraints (10 , 0 , 1 , 1 , GridConstraints .ANCHOR_WEST , GridConstraints .FILL_NONE , GridConstraints .SIZEPOLICY_CAN_SHRINK | GridConstraints .SIZEPOLICY_CAN_GROW , GridConstraints .SIZEPOLICY_FIXED , null , null , null , 0 , false ));
121131 panelAdvanced = new JPanel ();
122132 panelAdvanced .setLayout (new GridLayoutManager (7 , 1 , new Insets (0 , 0 , 0 , 0 ), -1 , -1 ));
123133 panelAdvanced .setToolTipText ("" );
0 commit comments