feat(gui): add enable-Web-API toggle and web port settings
- new "Web API settings" section after security settings in the Swing options panel: checkbox bound to webUI plus a port text field bound to webPort (empty -> default 4665; non-numeric or out of 0-65535 shows an invalid-port warning and aborts the save) - load handler fills both controls from the current config item - add i18n keys to klalb_zh_CN / klalb_en_US bundles - include previously missing webUI/webPort fields in KLALBControllerConfigItem equals/hashCode
This commit is contained in:
@@ -111,4 +111,8 @@ performancesettings=Performance settings
|
||||
performancestrategy=Performance strategy
|
||||
singlecore=Single-Core - Cache Affinity First (Best energy/performance ratio, for low-power & cloud)
|
||||
multifill=Multi-Core - Fill Cores Sequentially (Recommended for general-purpose physical servers)
|
||||
multiscatter=Multi-Core - Spread Load Evenly (Optimized for multi-socket NUMA architectures)
|
||||
multiscatter=Multi-Core - Spread Load Evenly (Optimized for multi-socket NUMA architectures)
|
||||
webapisettings=Web API settings
|
||||
enablewebapi=Enable Web API
|
||||
webport=Web port
|
||||
invaildwebport=Invalid web port number
|
||||
|
||||
@@ -111,4 +111,8 @@ performancesettings=性能设置
|
||||
performancestrategy=性能策略
|
||||
singlecore=单核-缓存命中率优先(高能耗比,适合低功耗设备、云机)
|
||||
multifill=多核-负载按顺序填充(适合大多数物理服务器、电脑)
|
||||
multiscatter=多核-负载均匀打散分配(适合特殊的多路NUMA服务器)
|
||||
multiscatter=多核-负载均匀打散分配(适合特殊的多路NUMA服务器)
|
||||
webapisettings=Web API \u8bbe\u7f6e
|
||||
enablewebapi=\u542f\u7528 Web API
|
||||
webport=Web \u7aef\u53e3
|
||||
invaildwebport=\u65e0\u6548\u7684 Web \u7aef\u53e3\u53f7
|
||||
|
||||
@@ -408,11 +408,11 @@ public class KLALBControllerConfigItem extends KLALBConfigItem {
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
if (!super.equals(o)) return false;
|
||||
KLALBControllerConfigItem that = (KLALBControllerConfigItem) o;
|
||||
return nogui == that.nogui && enableTUN == that.enableTUN && denyExternalEndpointQuery == that.denyExternalEndpointQuery && denyExternalEndpointBroadcast == that.denyExternalEndpointBroadcast && Double.compare(burstLimit, that.burstLimit) == 0 && Double.compare(delayUpperBound, that.delayUpperBound) == 0 && Double.compare(delayLowerBound, that.delayLowerBound) == 0 && nagleDelayTime == that.nagleDelayTime && linkNagleDelayTime == that.linkNagleDelayTime && linkConnectionsCount == that.linkConnectionsCount && Objects.equals(language, that.language) && Objects.equals(VirtualAddress, that.VirtualAddress) && Objects.equals(VirtualASN, that.VirtualASN) && Objects.equals(DNS, that.DNS) && Objects.equals(TCPListen, that.TCPListen) && Objects.equals(UDPListen, that.UDPListen) && Objects.equals(VirtualSocketName, that.VirtualSocketName) && Objects.equals(externalEndpoints, that.externalEndpoints) && Objects.equals(autoConnections, that.autoConnections) && Objects.equals(ntpServers, that.ntpServers) && Objects.equals(ExtraRoutes, that.ExtraRoutes) && Objects.equals(congestionAlgorithm, that.congestionAlgorithm) && Objects.equals(TUNName, that.TUNName) && Objects.equals(performanceStrategy, that.performanceStrategy) && Objects.equals(DeviceName, that.DeviceName) && Objects.equals(DeviceDescription, that.DeviceDescription) && Objects.equals(NetworkInterfaceExcepts, that.NetworkInterfaceExcepts);
|
||||
return nogui == that.nogui && enableTUN == that.enableTUN && webUI == that.webUI && denyExternalEndpointQuery == that.denyExternalEndpointQuery && denyExternalEndpointBroadcast == that.denyExternalEndpointBroadcast && Double.compare(burstLimit, that.burstLimit) == 0 && Double.compare(delayUpperBound, that.delayUpperBound) == 0 && Double.compare(delayLowerBound, that.delayLowerBound) == 0 && nagleDelayTime == that.nagleDelayTime && linkNagleDelayTime == that.linkNagleDelayTime && linkConnectionsCount == that.linkConnectionsCount && webPort == that.webPort && Objects.equals(language, that.language) && Objects.equals(VirtualAddress, that.VirtualAddress) && Objects.equals(VirtualASN, that.VirtualASN) && Objects.equals(DNS, that.DNS) && Objects.equals(TCPListen, that.TCPListen) && Objects.equals(UDPListen, that.UDPListen) && Objects.equals(VirtualSocketName, that.VirtualSocketName) && Objects.equals(externalEndpoints, that.externalEndpoints) && Objects.equals(autoConnections, that.autoConnections) && Objects.equals(ntpServers, that.ntpServers) && Objects.equals(ExtraRoutes, that.ExtraRoutes) && Objects.equals(congestionAlgorithm, that.congestionAlgorithm) && Objects.equals(TUNName, that.TUNName) && Objects.equals(performanceStrategy, that.performanceStrategy) && Objects.equals(DeviceName, that.DeviceName) && Objects.equals(DeviceDescription, that.DeviceDescription) && Objects.equals(NetworkInterfaceExcepts, that.NetworkInterfaceExcepts);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(super.hashCode(), language, nogui, VirtualAddress, VirtualASN, DNS, TCPListen, UDPListen, VirtualSocketName, externalEndpoints, autoConnections, ntpServers, ExtraRoutes, denyExternalEndpointQuery, denyExternalEndpointBroadcast, congestionAlgorithm, burstLimit, delayUpperBound, delayLowerBound, nagleDelayTime, linkNagleDelayTime, linkConnectionsCount, enableTUN, TUNName, performanceStrategy, DeviceName, DeviceDescription, NetworkInterfaceExcepts);
|
||||
return Objects.hash(super.hashCode(), language, nogui, VirtualAddress, VirtualASN, DNS, TCPListen, UDPListen, VirtualSocketName, externalEndpoints, autoConnections, ntpServers, ExtraRoutes, denyExternalEndpointQuery, denyExternalEndpointBroadcast, congestionAlgorithm, burstLimit, delayUpperBound, delayLowerBound, nagleDelayTime, linkNagleDelayTime, linkConnectionsCount, enableTUN, TUNName, performanceStrategy, DeviceName, DeviceDescription, NetworkInterfaceExcepts, webUI, webPort);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,6 +76,7 @@ public class KLALBStateGUI3 extends XFrame {
|
||||
private JTextField addressFieldSet; // 地址设置框
|
||||
private JTextField asnFieldSet; // ASN设置框
|
||||
private JTextField tunDeviceName; // 虚拟网卡名称设置框
|
||||
private JTextField webPortSet; // Web API 端口设置框
|
||||
private NetworkGraphPanel graph; // 网络图面板
|
||||
private JTextField textFieldLocate; // 定位地址输入框
|
||||
private JTextField asnField2; // ASN显示框
|
||||
@@ -96,6 +97,7 @@ public class KLALBStateGUI3 extends XFrame {
|
||||
private JTextArea ntpServerSet; // NTP服务器设置区域
|
||||
private JCheckBox denyBroadcast;
|
||||
private JCheckBox denyQuery;
|
||||
private JCheckBox webApiEnabled; // 启用 Web API 开关
|
||||
private ClosableTabbedPane tabbedPane; // 可关闭的标签页面板
|
||||
private JCheckBox nogui;
|
||||
|
||||
@@ -904,7 +906,22 @@ public class KLALBStateGUI3 extends XFrame {
|
||||
CONST.itemwidth, CONST.settingheight);
|
||||
denyBroadcast=denyBroadcastc.getCheckBox();
|
||||
settings.getView().add(denyBroadcastc);
|
||||
|
||||
|
||||
// Web服务设置标题
|
||||
SettingItem wsi = new SettingItem(UIEnv.getRsb().getString("webapisettings"),
|
||||
UIEnv.getFont().deriveFont(20.0f).deriveFont(Font.BOLD), CONST.itemwidth, CONST.settingheight);
|
||||
settings.getView().add(wsi);
|
||||
|
||||
CheckBoxSettingItem webApic = new CheckBoxSettingItem(UIEnv.getRsb().getString("enablewebapi"),
|
||||
CONST.itemwidth, CONST.settingheight);
|
||||
webApiEnabled=webApic.getCheckBox();
|
||||
settings.getView().add(webApic);
|
||||
|
||||
TextSettingItem webPort = new TextSettingItem(UIEnv.getRsb().getString("webport"),
|
||||
CONST.itemwidth, CONST.settingheight);
|
||||
webPortSet = webPort.getTextField();
|
||||
settings.getView().add(webPort);
|
||||
|
||||
//性能设置标题
|
||||
|
||||
SettingItem pshi = new SettingItem(UIEnv.getRsb().getString("performancesettings"),
|
||||
@@ -1140,6 +1157,26 @@ public class KLALBStateGUI3 extends XFrame {
|
||||
}else {
|
||||
kck.setTUNName(tunNameText);
|
||||
}
|
||||
|
||||
// 保存Web API设置
|
||||
kck.setWebUI(webApiEnabled.isSelected());
|
||||
String webPortText = webPortSet.getText().trim();
|
||||
if (webPortText.equals("")) {
|
||||
kck.setWebPort(4665);
|
||||
} else {
|
||||
try {
|
||||
int wp = Integer.parseInt(webPortText);
|
||||
if (wp < 0 || wp > 65535) {
|
||||
throw new NumberFormatException("out of range");
|
||||
}
|
||||
kck.setWebPort(wp);
|
||||
} catch (NumberFormatException e) {
|
||||
e.printStackTrace();
|
||||
JOptionPane.showMessageDialog(this, UIEnv.getRsb().getString("invaildwebport"),
|
||||
UIEnv.getRsb().getString("warning"), JOptionPane.WARNING_MESSAGE);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 保存TCP监听设置
|
||||
String tcptext = tcpListeningSet.getText();
|
||||
@@ -1540,6 +1577,10 @@ public class KLALBStateGUI3 extends XFrame {
|
||||
|
||||
String tunname=kck.getTUNName();
|
||||
tunDeviceName.setText(tunname!=null?tunname:"");
|
||||
|
||||
// 加载Web API设置
|
||||
webApiEnabled.setSelected(kck.isWebUI());
|
||||
webPortSet.setText(Integer.toString(kck.getWebPort()));
|
||||
|
||||
// 加载TCP监听
|
||||
MultiProtocolSocketAddress mpat = kck.getTCPListen();
|
||||
|
||||
Reference in New Issue
Block a user