diff --git a/PortProxyTool.Cli/Program.cs b/PortProxyTool.Cli/Program.cs index 6d55716..8b2ff5e 100644 --- a/PortProxyTool.Cli/Program.cs +++ b/PortProxyTool.Cli/Program.cs @@ -74,6 +74,52 @@ internal static class Program break; } + return; + case "set": + switch (args.Length) + { + case 6: + var targetType = PortProxyUtil.GetPortProxyTypeByString(args[1]); + if (targetType == null) + { + AnsiConsole.MarkupLine( + "[red]参数错误[/][gray]:[/] [white]接受的第一个参数为 v4tov4, v4tov6, v6tov6, v6tov4[/]"); + return; + } + + if (!ushort.TryParse(args[3], out var listenPort)) + { + AnsiConsole.MarkupLine( + "[red]参数错误[/][gray]:[/] [white]接受的第三个参数为 0 - 65535[/]"); + return; + } + + if (!ushort.TryParse(args[5], out var targetPort)) + { + AnsiConsole.MarkupLine( + "[red]参数错误[/][gray]:[/] [white]接受的第五个参数为 0 - 65535[/]"); + return; + } + + var item = new PortProxyItem + { + Type = (PortProxyType)targetType, + ListenAddress = args[2], + ListenPort = listenPort, + TargetAddress = args[4], + TargetPort = targetPort + }; + var result = PortProxy.Set(item); + AnsiConsole.MarkupLine(string.IsNullOrEmpty(result) + ? "[green]设置成功[/]" + : $"[red]设置失败[/][gray]:[/] [white]{result}[/]"); + break; + default: + AnsiConsole.MarkupLine( + "[red]参数错误[/][gray]:[/] [white]接受的参数为 <监听地址> <监听端口> <目标地址> <目标端口>[/]"); + break; + } + return; case "list": switch (args.Length) @@ -173,7 +219,7 @@ internal static class Program return; default: - AnsiConsole.MarkupLine("[red]命令没有找到[/][gray]:[/] [white]接受的命令为 add, remove, list[/]"); + AnsiConsole.MarkupLine("[red]命令没有找到[/][gray]:[/] [white]接受的命令为 add, remove, set, list[/]"); return; } }