Skip to content

Commit b738319

Browse files
committed
fix: tunnel dial form field
1 parent 767ab59 commit b738319

File tree

5 files changed

+168
-58
lines changed

5 files changed

+168
-58
lines changed

internal/nodepass/parse.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ func ParseTunnelURL(rawURL string) *models.Tunnel {
229229
case "noudp":
230230
// UDP支持控制 (0=启用, 1=禁用)
231231
noUDP = &val
232-
case "diap":
232+
case "dial":
233233
// UDP支持控制 (0=启用, 1=禁用)
234234
tunnel.Dial = &val
235235
case "quic":

internal/tunnel/service.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2474,6 +2474,10 @@ func (s *Service) GetTunnelsWithPagination(params TunnelQueryParams) (*TunnelLis
24742474
var orderClause string
24752475
if params.SortBy != "" {
24762476
switch params.SortBy {
2477+
case "sorts":
2478+
orderClause = fmt.Sprintf(" ORDER BY t.sorts %s, t.id DESC", params.SortOrder)
2479+
case "id":
2480+
orderClause = fmt.Sprintf(" ORDER BY t.id %s", params.SortOrder)
24772481
case "name":
24782482
orderClause = fmt.Sprintf(" ORDER BY t.name %s, t.sorts DESC, t.id DESC", params.SortOrder)
24792483
case "created_at":
@@ -2486,6 +2490,8 @@ func (s *Service) GetTunnelsWithPagination(params TunnelQueryParams) (*TunnelLis
24862490
orderClause = fmt.Sprintf(" ORDER BY t.target_address %s, t.target_port %s, t.sorts DESC, t.id DESC", params.SortOrder, params.SortOrder)
24872491
case "type":
24882492
orderClause = fmt.Sprintf(" ORDER BY t.type %s, t.sorts DESC, t.id DESC", params.SortOrder)
2493+
case "endpoint":
2494+
orderClause = fmt.Sprintf(" ORDER BY e.name %s, t.sorts DESC, t.id DESC", params.SortOrder)
24892495
case "updated_at":
24902496
orderClause = fmt.Sprintf(" ORDER BY t.updated_at %s, t.sorts DESC, t.id DESC", params.SortOrder)
24912497
default:

web/src/components/tunnels/simple-create-tunnel-modal.tsx

Lines changed: 22 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,8 @@ export default function SimpleCreateTunnelModal({
287287
listenType,
288288
extendTargetAddresses,
289289
quic,
290+
dial,
291+
sorts,
290292
} = formData;
291293

292294
// 基本校验
@@ -387,6 +389,8 @@ export default function SimpleCreateTunnelModal({
387389
.filter((addr) => addr.length > 0)
388390
: undefined,
389391
quic: quic !== "" ? quic === "true" : undefined,
392+
dial: dial || undefined,
393+
sorts: sorts !== "" ? parseInt(sorts) : undefined,
390394
resetTraffic: modalMode === "edit" ? resetChecked : undefined,
391395
}),
392396
});
@@ -421,7 +425,7 @@ export default function SimpleCreateTunnelModal({
421425
setIsPasswordVisible(false);
422426
} else if (field === "type") {
423427
// 切换类型时自动设置默认模式
424-
const defaultMode = value === "server" ? 0 : 1;
428+
const defaultMode = value === "server" ? 0 : 2;
425429

426430
setFormData((prev) => ({ ...prev, [field]: value, mode: defaultMode }));
427431
} else if (field === "mode") {
@@ -821,12 +825,14 @@ export default function SimpleCreateTunnelModal({
821825
<label className={`text-sm pl-2 ${LABEL_PLACEMENT === "outside" ? "" : "whitespace-nowrap flex-shrink-0"}`}>证书路径</label>
822826
<Input
823827
value={formData.certPath}
828+
placeholder="/path/to/cert.pem"
824829
onValueChange={(v) => handleField("certPath", v)}
825830
/>
826831
</div>
827832
<div className={`flex ${LABEL_PLACEMENT === "outside" ? "flex-col" : "flex-row items-center gap-2"}`}>
828833
<label className={`text-sm pl-2 ${LABEL_PLACEMENT === "outside" ? "" : "whitespace-nowrap flex-shrink-0"}`}>密钥路径</label>
829834
<Input
835+
placeholder="/path/to/cert.key"
830836
value={formData.keyPath}
831837
onValueChange={(v) => handleField("keyPath", v)}
832838
/>
@@ -903,9 +909,7 @@ export default function SimpleCreateTunnelModal({
903909
}}
904910
>
905911
<div className="space-y-2">
906-
<div className={`grid grid-cols-${((isClientType && formData.mode === 2) || isServerType) ? 3 : 3} gap-2`}
907-
>
908-
912+
<div className={`grid grid-cols-3 gap-2`}>
909913
{isShowClientPoolMin && (
910914
<>
911915
{passwordInput}
@@ -916,29 +920,8 @@ export default function SimpleCreateTunnelModal({
916920
value={formData.min}
917921
onValueChange={(v) => handleField("min", v ? String(v) : "")}
918922
/>
919-
{proxyProtocolSelect}
920-
{sortInput}
921-
<Input
922-
label="Dial"
923-
placeholder="出站源IP地址"
924-
value={formData.dial}
925-
onValueChange={(v) => handleField("dial", v ? String(v) : "")}
926-
/>
927923
</>
928924
)}
929-
{isClientType &&
930-
formData.mode === 1 && (
931-
<>
932-
{proxyProtocolSelect}
933-
{sortInput}
934-
<Input
935-
label="Dial"
936-
placeholder="出站源IP地址"
937-
value={formData.dial}
938-
onValueChange={(v) => handleField("dial", v ? String(v) : "")}
939-
/>
940-
</>
941-
)}
942925
{isServerType && (
943926
<>
944927
{passwordInput}
@@ -949,14 +932,9 @@ export default function SimpleCreateTunnelModal({
949932
value={formData.max}
950933
onValueChange={(v) => handleField("max", v ? String(v) : "")}
951934
/>
952-
{proxyProtocolSelect}
953-
954935
</>
955936
)}
956-
</div>
957937

958-
{/* 数据读取超时、速率限制和最大连接数限制 */}
959-
<div className="grid grid-cols-3 gap-2">
960938
<Input
961939
label="数据读取超时"
962940
placeholder="1h0m0s"
@@ -984,6 +962,7 @@ export default function SimpleCreateTunnelModal({
984962
value={formData.slot}
985963
onValueChange={(v) => handleField("slot", v ? String(v) : "")}
986964
/>
965+
{proxyProtocolSelect}
987966
{/* 启用 QUIC */}
988967
{formData.type == 'server' &&
989968
<>
@@ -1000,15 +979,20 @@ export default function SimpleCreateTunnelModal({
1000979
<SelectItem key="false">关闭</SelectItem>
1001980
<SelectItem key="true">启用</SelectItem>
1002981
</Select>
1003-
{sortInput}
1004-
<Input
1005-
label="Dial"
1006-
placeholder="出站源IP地址"
1007-
value={formData.dial}
1008-
onValueChange={(v) => handleField("dial", v ? String(v) : "")}
1009-
/>
1010982
</>
1011983
}
984+
{sortInput}
985+
<Input
986+
label="出站源IP"
987+
placeholder="auto"
988+
value={formData.dial}
989+
onValueChange={(v) => handleField("dial", v ? String(v) : "")}
990+
/>
991+
</div>
992+
993+
{/* 数据读取超时、速率限制和最大连接数限制 */}
994+
<div className="grid grid-cols-3 gap-2">
995+
1012996
</div>
1013997

1014998

@@ -1042,7 +1026,7 @@ export default function SimpleCreateTunnelModal({
10421026
</>
10431027
)}
10441028
</ModalBody>
1045-
<ModalFooter className="flex items-center justify-between">
1029+
<ModalFooter className="flex items-center justify-between pt-0">
10461030
<div className="flex items-center gap-2">
10471031
{/* 重置流量checkbox,仅编辑模式下显示 */}
10481032
{modalMode === "edit" && (

web/src/pages/tunnels/details/index.tsx

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ interface TunnelInfo {
119119
restart: boolean;
120120
slot?: number | null;
121121
quic?: boolean | null;
122+
dial?: string | null;
122123
targetPort: number;
123124
tlsMode: string;
124125
commandLine: string;
@@ -376,7 +377,7 @@ export default function TunnelDetailPage() {
376377

377378
// 重命名模态控制
378379
const [isRenameModalOpen, setIsRenameModalOpen] = React.useState(false);
379-
const [showConfigLine, setShowConfigLine] = React.useState(false);
380+
const [showConfigLine, setShowConfigLine] = React.useState(true);
380381
// 实例标签模态控制
381382
const [isInstanceTagModalOpen, setIsInstanceTagModalOpen] =
382383
React.useState(false);
@@ -2292,10 +2293,26 @@ export default function TunnelDetailPage() {
22922293
}
22932294
label="启用 QUIC"
22942295
value={
2295-
tunnelInfo?.quic ? "启用" : "关闭"
2296+
tunnelInfo?.quic ? "启用" : "关闭"
22962297
}
22972298
/>
22982299
)}
2300+
<CellValue
2301+
icon={
2302+
<Icon
2303+
className="text-default-600"
2304+
height={20}
2305+
icon="oui:ip"
2306+
width={20}
2307+
/>
2308+
}
2309+
label="出站源IP"
2310+
value={
2311+
<span className="font-mono text-sm">
2312+
{tunnelInfo.dial ? tunnelInfo.dial : "-"}
2313+
</span>
2314+
}
2315+
/>
22992316
<CellValue
23002317
icon={
23012318
<Icon
@@ -2307,7 +2324,7 @@ export default function TunnelDetailPage() {
23072324
}
23082325
isInteractive={true}
23092326
onPress={() => {
2310-
navigate(`/services/details?sid=${tunnelInfo.peer?.sid}&type=${tunnelInfo.peer?.type}`);
2327+
navigate(`/services/details?sid=${tunnelInfo.peer?.sid}&type=${tunnelInfo.peer?.type}`);
23112328
}}
23122329
label="绑定服务"
23132330
value={

0 commit comments

Comments
 (0)