diff --git a/README.md b/README.md index 0230f2f..ef51eda 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,8 @@ put *config.json* file into the unpacked folder before running "port": "{port}", "protocol": "{protocol}", "packetEncoding": "{packetEncoding}", - "networks": [ - "{networks}" + "transport": [ + "{transport}" ], "user": [ { @@ -37,7 +37,7 @@ put *config.json* file into the unpacked folder before running > `cipher`: see *Ciphers* -> `networks`: see *Transmission* +> `transport`: see *Transport* > `packetEncoding`: "None" | "Packet" @@ -45,7 +45,7 @@ put *config.json* file into the unpacked folder before running ## Features -### Transmission +### Transport | | Shadowsocks | VMess | |:----|:-----------:|:-----:| diff --git a/urban-spork-client-gui/src/com/urbanspork/client/gui/console/component/Console.java b/urban-spork-client-gui/src/com/urbanspork/client/gui/console/component/Console.java index a3cf261..e093abc 100644 --- a/urban-spork-client-gui/src/com/urbanspork/client/gui/console/component/Console.java +++ b/urban-spork-client-gui/src/com/urbanspork/client/gui/console/component/Console.java @@ -13,7 +13,7 @@ import com.urbanspork.common.config.ClientConfig; import com.urbanspork.common.config.ConfigHandler; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import javafx.application.Platform; import javafx.application.Preloader; import javafx.beans.value.ChangeListener; @@ -22,7 +22,13 @@ import javafx.collections.ObservableList; import javafx.scene.Parent; import javafx.scene.Scene; -import javafx.scene.control.*; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.MultipleSelectionModel; +import javafx.scene.control.Tab; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.control.ToggleButton; import javafx.scene.image.Image; import javafx.scene.layout.ColumnConstraints; import javafx.scene.layout.GridPane; @@ -82,7 +88,7 @@ public class Console extends Preloader { private ChoiceBox currentConfigCipherChoiceBox; - private ChoiceBox currentConfigProtocolChoiceBox; + private ChoiceBox currentConfigProtocolChoiceBox; private NumericTextField clientConfigPortTextField; @@ -459,9 +465,9 @@ private void initCurrentConfigCipherChoiceBox() { } private void initCurrentConfigProtocolChoiceBox() { - List ciphers = Arrays.asList(Protocols.values()); + List ciphers = Arrays.asList(Protocol.values()); currentConfigProtocolChoiceBox.setItems(FXCollections.observableArrayList(ciphers)); - currentConfigProtocolChoiceBox.setValue(Protocols.shadowsocks); + currentConfigProtocolChoiceBox.setValue(Protocol.shadowsocks); } private void initServerConfigListView() { diff --git a/urban-spork-client-gui/src/com/urbanspork/client/gui/console/widget/CurrentConfigProtocolChoiceBox.java b/urban-spork-client-gui/src/com/urbanspork/client/gui/console/widget/CurrentConfigProtocolChoiceBox.java index 9519493..361763b 100644 --- a/urban-spork-client-gui/src/com/urbanspork/client/gui/console/widget/CurrentConfigProtocolChoiceBox.java +++ b/urban-spork-client-gui/src/com/urbanspork/client/gui/console/widget/CurrentConfigProtocolChoiceBox.java @@ -1,10 +1,10 @@ package com.urbanspork.client.gui.console.widget; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import javafx.scene.control.ChoiceBox; import javafx.scene.effect.BlendMode; -public class CurrentConfigProtocolChoiceBox extends ChoiceBox { +public class CurrentConfigProtocolChoiceBox extends ChoiceBox { public CurrentConfigProtocolChoiceBox() { setBlendMode(BlendMode.HARD_LIGHT); diff --git a/urban-spork-client/src/com/urbanspork/client/AbstractClientUdpRelayHandler.java b/urban-spork-client/src/com/urbanspork/client/AbstractClientUdpRelayHandler.java index d99379e..5f0b38a 100644 --- a/urban-spork-client/src/com/urbanspork/client/AbstractClientUdpRelayHandler.java +++ b/urban-spork-client/src/com/urbanspork/client/AbstractClientUdpRelayHandler.java @@ -1,7 +1,7 @@ package com.urbanspork.client; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import com.urbanspork.common.util.LruCache; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; diff --git a/urban-spork-client/src/com/urbanspork/client/Client.java b/urban-spork-client/src/com/urbanspork/client/Client.java index c63bb96..e59bd64 100644 --- a/urban-spork-client/src/com/urbanspork/client/Client.java +++ b/urban-spork-client/src/com/urbanspork/client/Client.java @@ -7,7 +7,7 @@ import com.urbanspork.common.config.ClientConfig; import com.urbanspork.common.config.ConfigHandler; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import io.netty.bootstrap.Bootstrap; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; @@ -75,7 +75,7 @@ public static void launch(ClientConfig config, CompletableFuture promi private static DatagramChannel launchUdp(EventLoopGroup bossGroup, EventLoopGroup workerGroup, ClientConfig config) throws InterruptedException { ServerConfig current = config.getCurrent(); ChannelHandler udpTransportHandler; - if (Protocols.vmess == current.getProtocol()) { + if (Protocol.vmess == current.getProtocol()) { udpTransportHandler = new ClientUdpOverTCPHandler(current, workerGroup); } else { udpTransportHandler = new ClientUdpRelayHandler(current, workerGroup); diff --git a/urban-spork-client/src/com/urbanspork/client/ClientSocksConnectHandler.java b/urban-spork-client/src/com/urbanspork/client/ClientSocksConnectHandler.java index 9b42a76..923d8f7 100644 --- a/urban-spork-client/src/com/urbanspork/client/ClientSocksConnectHandler.java +++ b/urban-spork-client/src/com/urbanspork/client/ClientSocksConnectHandler.java @@ -6,7 +6,7 @@ import com.urbanspork.common.channel.ChannelCloseUtils; import com.urbanspork.common.channel.DefaultChannelInboundHandler; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.common.protocol.socks.Socks5; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; @@ -34,7 +34,7 @@ protected void channelRead0(ChannelHandlerContext ctx, Socks5CommandRequest requ ServerConfig config = inboundChannel.attr(AttributeKeys.SERVER_CONFIG).get(); InetSocketAddress serverAddress = new InetSocketAddress(config.getHost(), config.getPort()); ChannelHandler outboundHandler; - if (Protocols.vmess == config.getProtocol()) { + if (Protocol.vmess == config.getProtocol()) { outboundHandler = new ClientChannelInitializer(request, config); } else { outboundHandler = new ClientTCPChannelInitializer(request, config); diff --git a/urban-spork-client/src/com/urbanspork/client/shadowsocks/ClientUDPAssociateHandler.java b/urban-spork-client/src/com/urbanspork/client/shadowsocks/ClientUDPAssociateHandler.java index 5a1e851..e7724e9 100644 --- a/urban-spork-client/src/com/urbanspork/client/shadowsocks/ClientUDPAssociateHandler.java +++ b/urban-spork-client/src/com/urbanspork/client/shadowsocks/ClientUDPAssociateHandler.java @@ -2,7 +2,7 @@ import com.urbanspork.common.channel.AttributeKeys; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.common.protocol.socks.Socks5; import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; @@ -33,7 +33,7 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) { private void channelRead0(ChannelHandlerContext ctx, Socks5CommandRequest request) { Channel channel = ctx.channel(); ServerConfig config = channel.attr(AttributeKeys.SERVER_CONFIG).get(); - if (Protocols.vmess == config.getProtocol() && !config.udpEnabled()) { + if (Protocol.vmess == config.getProtocol() && !config.udpEnabled()) { channel.writeAndFlush(new DefaultSocks5CommandResponse(Socks5CommandStatus.FAILURE, request.dstAddrType())); logger.error("UDP is not enabled"); return; diff --git a/urban-spork-client/src/com/urbanspork/client/shadowsocks/ClientUdpRelayHandler.java b/urban-spork-client/src/com/urbanspork/client/shadowsocks/ClientUdpRelayHandler.java index c3fa991..308df21 100644 --- a/urban-spork-client/src/com/urbanspork/client/shadowsocks/ClientUdpRelayHandler.java +++ b/urban-spork-client/src/com/urbanspork/client/shadowsocks/ClientUdpRelayHandler.java @@ -5,7 +5,7 @@ import com.urbanspork.common.codec.shadowsocks.Mode; import com.urbanspork.common.codec.shadowsocks.udp.UdpRelayCodec; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; diff --git a/urban-spork-client/src/com/urbanspork/client/vmess/ClientUdpOverTCPHandler.java b/urban-spork-client/src/com/urbanspork/client/vmess/ClientUdpOverTCPHandler.java index 5e73109..7001e3f 100644 --- a/urban-spork-client/src/com/urbanspork/client/vmess/ClientUdpOverTCPHandler.java +++ b/urban-spork-client/src/com/urbanspork/client/vmess/ClientUdpOverTCPHandler.java @@ -3,9 +3,9 @@ import com.urbanspork.client.AbstractClientUdpRelayHandler; import com.urbanspork.common.channel.DefaultChannelInboundHandler; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; import com.urbanspork.common.protocol.socks.Socks5; import com.urbanspork.common.protocol.vmess.header.RequestCommand; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; diff --git a/urban-spork-common/src/com/urbanspork/common/channel/AttributeKeys.java b/urban-spork-common/src/com/urbanspork/common/channel/AttributeKeys.java index 745623a..661f63b 100644 --- a/urban-spork-common/src/com/urbanspork/common/channel/AttributeKeys.java +++ b/urban-spork-common/src/com/urbanspork/common/channel/AttributeKeys.java @@ -1,14 +1,14 @@ package com.urbanspork.common.channel; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.network.Network; +import com.urbanspork.common.transport.Transport; import io.netty.util.AttributeKey; public class AttributeKeys { public static final AttributeKey SERVER_CONFIG = AttributeKey.newInstance("SERVER_CONFIG"); public static final AttributeKey SOCKS_PORT = AttributeKey.newInstance("SOCKS5_PORT"); - public static final AttributeKey NETWORK = AttributeKey.newInstance("NETWORK"); + public static final AttributeKey TRANSPORT = AttributeKey.newInstance("TRANSPORT"); private AttributeKeys() {} } diff --git a/urban-spork-common/src/com/urbanspork/common/channel/ExceptionHandler.java b/urban-spork-common/src/com/urbanspork/common/channel/ExceptionHandler.java index e867c76..0ee9805 100644 --- a/urban-spork-common/src/com/urbanspork/common/channel/ExceptionHandler.java +++ b/urban-spork-common/src/com/urbanspork/common/channel/ExceptionHandler.java @@ -2,8 +2,8 @@ import com.urbanspork.common.codec.shadowsocks.Mode; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.Protocols; -import com.urbanspork.common.protocol.network.Network; +import com.urbanspork.common.protocol.Protocol; +import com.urbanspork.common.transport.Transport; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; @@ -28,13 +28,13 @@ public ExceptionHandler(ServerConfig config, Mode mode) { @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { Channel channel = ctx.channel(); - String network = channel instanceof DatagramChannel ? Network.UDP.value() : Network.TCP.value(); - Protocols protocol = config.getProtocol(); + String transport = channel instanceof DatagramChannel ? Transport.UDP.value() : Transport.TCP.value(); + Protocol protocol = config.getProtocol(); String transLog = transLog(channel); if (cause.getCause() instanceof InvalidCipherTextException) { - logger.error("[{}][{}][{}] Invalid cipher text", network, protocol, transLog); + logger.error("[{}][{}][{}] Invalid cipher text", transport, protocol, transLog); } else { - String msg = String.format("[%s][%s][%s] Caught exception", network, protocol, transLog); + String msg = String.format("[%s][%s][%s] Caught exception", transport, protocol, transLog); logger.error(msg, cause); } if (channel instanceof SocketChannel socketChannel && Mode.Server == mode) { diff --git a/urban-spork-common/src/com/urbanspork/common/codec/shadowsocks/udp/UdpRelayCodec.java b/urban-spork-common/src/com/urbanspork/common/codec/shadowsocks/udp/UdpRelayCodec.java index a8a2ed9..40f574e 100644 --- a/urban-spork-common/src/com/urbanspork/common/codec/shadowsocks/udp/UdpRelayCodec.java +++ b/urban-spork-common/src/com/urbanspork/common/codec/shadowsocks/udp/UdpRelayCodec.java @@ -3,8 +3,8 @@ import com.urbanspork.common.codec.shadowsocks.Mode; import com.urbanspork.common.config.ServerConfig; import com.urbanspork.common.manage.shadowsocks.ServerUserManager; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; import com.urbanspork.common.protocol.shadowsocks.Control; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import com.urbanspork.common.util.LruCache; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; diff --git a/urban-spork-common/src/com/urbanspork/common/codec/socks/DatagramPacketDecoder.java b/urban-spork-common/src/com/urbanspork/common/codec/socks/DatagramPacketDecoder.java index 63284ca..7531ec4 100644 --- a/urban-spork-common/src/com/urbanspork/common/codec/socks/DatagramPacketDecoder.java +++ b/urban-spork-common/src/com/urbanspork/common/codec/socks/DatagramPacketDecoder.java @@ -1,7 +1,7 @@ package com.urbanspork.common.codec.socks; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; import com.urbanspork.common.protocol.socks.Address; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.socket.DatagramPacket; diff --git a/urban-spork-common/src/com/urbanspork/common/codec/socks/DatagramPacketEncoder.java b/urban-spork-common/src/com/urbanspork/common/codec/socks/DatagramPacketEncoder.java index 311dfb1..c133836 100644 --- a/urban-spork-common/src/com/urbanspork/common/codec/socks/DatagramPacketEncoder.java +++ b/urban-spork-common/src/com/urbanspork/common/codec/socks/DatagramPacketEncoder.java @@ -1,7 +1,7 @@ package com.urbanspork.common.codec.socks; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; import com.urbanspork.common.protocol.socks.Address; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.socket.DatagramPacket; diff --git a/urban-spork-common/src/com/urbanspork/common/config/ServerConfig.java b/urban-spork-common/src/com/urbanspork/common/config/ServerConfig.java index 7663de5..ff2e067 100644 --- a/urban-spork-common/src/com/urbanspork/common/config/ServerConfig.java +++ b/urban-spork-common/src/com/urbanspork/common/config/ServerConfig.java @@ -1,9 +1,9 @@ package com.urbanspork.common.config; import com.urbanspork.common.codec.CipherKind; -import com.urbanspork.common.protocol.Protocols; -import com.urbanspork.common.protocol.network.Network; -import com.urbanspork.common.protocol.network.PacketEncoding; +import com.urbanspork.common.protocol.Protocol; +import com.urbanspork.common.transport.Transport; +import com.urbanspork.common.transport.udp.PacketEncoding; import java.util.Arrays; import java.util.List; @@ -18,11 +18,11 @@ public class ServerConfig { private CipherKind cipher; - private Protocols protocol; + private Protocol protocol; private String remark; - private Network[] networks; + private Transport[] transport; private PacketEncoding packetEncoding; @@ -60,11 +60,11 @@ public void setPassword(String password) { this.password = password; } - public Protocols getProtocol() { + public Protocol getProtocol() { return protocol; } - public void setProtocol(Protocols protocol) { + public void setProtocol(Protocol protocol) { this.protocol = protocol; } @@ -76,12 +76,12 @@ public void setRemark(String remark) { this.remark = remark; } - public Network[] getNetworks() { - return networks; + public Transport[] getTransport() { + return transport; } - public void setNetworks(Network[] networks) { - this.networks = networks; + public void setTransport(Transport[] transports) { + this.transport = transports; } public PacketEncoding getPacketEncoding() { @@ -109,7 +109,7 @@ public String toString() { StringBuilder builder = new StringBuilder(listItemText()); if (protocol != null) { builder.append('|').append(protocol); - if (Protocols.vmess == protocol) { + if (Protocol.vmess == protocol) { builder.append('|').append("negotiated"); } else { builder.append('|').append(cipher.toString()); @@ -127,7 +127,7 @@ public String listItemText() { } public boolean udpEnabled() { - return networks != null && Arrays.stream(networks).anyMatch(n -> n == Network.UDP); + return transport != null && Arrays.stream(transport).anyMatch(n -> n == Transport.UDP); } private boolean isEmpty(String s) { diff --git a/urban-spork-common/src/com/urbanspork/common/protocol/Protocols.java b/urban-spork-common/src/com/urbanspork/common/protocol/Protocol.java similarity index 73% rename from urban-spork-common/src/com/urbanspork/common/protocol/Protocols.java rename to urban-spork-common/src/com/urbanspork/common/protocol/Protocol.java index 233d7be..e8af5c5 100644 --- a/urban-spork-common/src/com/urbanspork/common/protocol/Protocols.java +++ b/urban-spork-common/src/com/urbanspork/common/protocol/Protocol.java @@ -1,5 +1,5 @@ package com.urbanspork.common.protocol; -public enum Protocols { +public enum Protocol { shadowsocks, vmess, } diff --git a/urban-spork-common/src/com/urbanspork/common/protocol/network/Network.java b/urban-spork-common/src/com/urbanspork/common/transport/Transport.java similarity index 64% rename from urban-spork-common/src/com/urbanspork/common/protocol/network/Network.java rename to urban-spork-common/src/com/urbanspork/common/transport/Transport.java index 56ccdb8..8e114c4 100644 --- a/urban-spork-common/src/com/urbanspork/common/protocol/network/Network.java +++ b/urban-spork-common/src/com/urbanspork/common/transport/Transport.java @@ -1,12 +1,12 @@ -package com.urbanspork.common.protocol.network; +package com.urbanspork.common.transport; -public enum Network { +public enum Transport { TCP, UDP; private final String value; - Network() { + Transport() { value = name().toLowerCase(); } diff --git a/urban-spork-common/src/com/urbanspork/common/protocol/network/PacketEncoding.java b/urban-spork-common/src/com/urbanspork/common/transport/udp/PacketEncoding.java similarity index 88% rename from urban-spork-common/src/com/urbanspork/common/protocol/network/PacketEncoding.java rename to urban-spork-common/src/com/urbanspork/common/transport/udp/PacketEncoding.java index 96d85ec..7e83a69 100644 --- a/urban-spork-common/src/com/urbanspork/common/protocol/network/PacketEncoding.java +++ b/urban-spork-common/src/com/urbanspork/common/transport/udp/PacketEncoding.java @@ -1,4 +1,4 @@ -package com.urbanspork.common.protocol.network; +package com.urbanspork.common.transport.udp; import java.net.InetSocketAddress; diff --git a/urban-spork-common/src/com/urbanspork/common/protocol/network/TernaryDatagramPacket.java b/urban-spork-common/src/com/urbanspork/common/transport/udp/TernaryDatagramPacket.java similarity index 90% rename from urban-spork-common/src/com/urbanspork/common/protocol/network/TernaryDatagramPacket.java rename to urban-spork-common/src/com/urbanspork/common/transport/udp/TernaryDatagramPacket.java index 6503d44..7e9d354 100644 --- a/urban-spork-common/src/com/urbanspork/common/protocol/network/TernaryDatagramPacket.java +++ b/urban-spork-common/src/com/urbanspork/common/transport/udp/TernaryDatagramPacket.java @@ -1,4 +1,4 @@ -package com.urbanspork.common.protocol.network; +package com.urbanspork.common.transport.udp; import io.netty.channel.socket.DatagramPacket; diff --git a/urban-spork-server/src/com/urbanspork/server/RemoteConnectHandler.java b/urban-spork-server/src/com/urbanspork/server/RemoteConnectHandler.java index f076024..8f63072 100644 --- a/urban-spork-server/src/com/urbanspork/server/RemoteConnectHandler.java +++ b/urban-spork-server/src/com/urbanspork/server/RemoteConnectHandler.java @@ -3,7 +3,7 @@ import com.urbanspork.common.channel.AttributeKeys; import com.urbanspork.common.channel.DefaultChannelInboundHandler; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.network.Network; +import com.urbanspork.common.transport.Transport; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelFutureListener; @@ -31,7 +31,7 @@ public RemoteConnectHandler(ServerConfig config) { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) { - if (Network.UDP.equals(ctx.channel().attr(AttributeKeys.NETWORK).get())) { + if (Transport.UDP.equals(ctx.channel().attr(AttributeKeys.TRANSPORT).get())) { udp(ctx, msg); } else { tcp(ctx, msg); diff --git a/urban-spork-server/src/com/urbanspork/server/Server.java b/urban-spork-server/src/com/urbanspork/server/Server.java index 8259522..ef3427a 100644 --- a/urban-spork-server/src/com/urbanspork/server/Server.java +++ b/urban-spork-server/src/com/urbanspork/server/Server.java @@ -8,7 +8,7 @@ import com.urbanspork.common.config.ServerUserConfig; import com.urbanspork.common.manage.shadowsocks.ServerUser; import com.urbanspork.common.manage.shadowsocks.ServerUserManager; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import io.netty.bootstrap.Bootstrap; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; @@ -81,7 +81,7 @@ public static void launch(List configs, CompletableFuture user = config.getUser(); if (user != null) { user.stream().map(ServerUser::from).forEach(ServerUserManager.DEFAULT::addUser); @@ -97,7 +97,7 @@ private static Instance startup(EventLoopGroup bossGroup, EventLoopGroup workerG } private static Optional startupUdp(EventLoopGroup bossGroup, EventLoopGroup workerGroup, ServerConfig config) throws InterruptedException { - if (Protocols.shadowsocks == config.getProtocol() && config.udpEnabled()) { + if (Protocol.shadowsocks == config.getProtocol() && config.udpEnabled()) { Channel channel = new Bootstrap().group(bossGroup).channel(NioDatagramChannel.class) .option(ChannelOption.SO_BROADCAST, true) .handler(new ChannelInitializer<>() { diff --git a/urban-spork-server/src/com/urbanspork/server/ServerInitializer.java b/urban-spork-server/src/com/urbanspork/server/ServerInitializer.java index c111314..49037aa 100644 --- a/urban-spork-server/src/com/urbanspork/server/ServerInitializer.java +++ b/urban-spork-server/src/com/urbanspork/server/ServerInitializer.java @@ -5,7 +5,7 @@ import com.urbanspork.common.codec.shadowsocks.tcp.Context; import com.urbanspork.common.codec.shadowsocks.tcp.TcpRelayCodec; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.server.vmess.ServerAEADCodec; import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; @@ -23,7 +23,7 @@ public ServerInitializer(ServerConfig config) { @Override protected void initChannel(Channel c) { ChannelPipeline pipeline = c.pipeline(); - if (Protocols.vmess == config.getProtocol()) { + if (Protocol.vmess == config.getProtocol()) { pipeline.addLast(new ServerAEADCodec(config)); } else { pipeline.addLast(new TcpRelayCodec(context, config, Mode.Server)); diff --git a/urban-spork-server/src/com/urbanspork/server/ServerUDPOverTCPCodec.java b/urban-spork-server/src/com/urbanspork/server/ServerUDPOverTCPCodec.java index d1b5f9a..3dd634e 100644 --- a/urban-spork-server/src/com/urbanspork/server/ServerUDPOverTCPCodec.java +++ b/urban-spork-server/src/com/urbanspork/server/ServerUDPOverTCPCodec.java @@ -1,6 +1,6 @@ package com.urbanspork.server; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.socket.DatagramPacket; diff --git a/urban-spork-server/src/com/urbanspork/server/ServerUDPRelayHandler.java b/urban-spork-server/src/com/urbanspork/server/ServerUDPRelayHandler.java index c62d0e3..b301592 100644 --- a/urban-spork-server/src/com/urbanspork/server/ServerUDPRelayHandler.java +++ b/urban-spork-server/src/com/urbanspork/server/ServerUDPRelayHandler.java @@ -1,7 +1,7 @@ package com.urbanspork.server; -import com.urbanspork.common.protocol.network.PacketEncoding; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; +import com.urbanspork.common.transport.udp.PacketEncoding; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; diff --git a/urban-spork-server/src/com/urbanspork/server/vmess/ServerAEADCodec.java b/urban-spork-server/src/com/urbanspork/server/vmess/ServerAEADCodec.java index e4fe18b..636851c 100644 --- a/urban-spork-server/src/com/urbanspork/server/vmess/ServerAEADCodec.java +++ b/urban-spork-server/src/com/urbanspork/server/vmess/ServerAEADCodec.java @@ -8,7 +8,6 @@ import com.urbanspork.common.codec.vmess.AEADBodyCodec; import com.urbanspork.common.config.ServerConfig; import com.urbanspork.common.lang.Go; -import com.urbanspork.common.protocol.network.Network; import com.urbanspork.common.protocol.vmess.Address; import com.urbanspork.common.protocol.vmess.ID; import com.urbanspork.common.protocol.vmess.aead.AuthID; @@ -19,6 +18,7 @@ import com.urbanspork.common.protocol.vmess.header.RequestHeader; import com.urbanspork.common.protocol.vmess.header.RequestOption; import com.urbanspork.common.protocol.vmess.header.SecurityType; +import com.urbanspork.common.transport.Transport; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; @@ -30,7 +30,10 @@ import java.util.Arrays; import java.util.List; -import static com.urbanspork.common.protocol.vmess.aead.Const.*; +import static com.urbanspork.common.protocol.vmess.aead.Const.KDF_SALT_AEAD_RESP_HEADER_LEN_IV; +import static com.urbanspork.common.protocol.vmess.aead.Const.KDF_SALT_AEAD_RESP_HEADER_LEN_KEY; +import static com.urbanspork.common.protocol.vmess.aead.Const.KDF_SALT_AEAD_RESP_HEADER_PAYLOAD_IV; +import static com.urbanspork.common.protocol.vmess.aead.Const.KDF_SALT_AEAD_RESP_HEADER_PAYLOAD_KEY; import static com.urbanspork.common.protocol.vmess.aead.Encrypt.openVMessAEADHeader; public class ServerAEADCodec extends ByteToMessageCodec { @@ -104,7 +107,7 @@ public void decode(ChannelHandlerContext ctx, ByteBuf in, List out) thro if (RequestCommand.TCP.equals(command) || RequestCommand.UDP.equals(command)) { address = Address.readAddressPort(decrypted); if (RequestCommand.UDP.equals(command)) { - ctx.channel().attr(AttributeKeys.NETWORK).set(Network.UDP); + ctx.channel().attr(AttributeKeys.TRANSPORT).set(Transport.UDP); } out.add(address); } diff --git a/urban-spork-test/src/com/urbanspork/test/TestDice.java b/urban-spork-test/src/com/urbanspork/test/TestDice.java index 0819f9d..7935a3c 100644 --- a/urban-spork-test/src/com/urbanspork/test/TestDice.java +++ b/urban-spork-test/src/com/urbanspork/test/TestDice.java @@ -1,7 +1,7 @@ package com.urbanspork.test; import com.urbanspork.common.codec.CipherKind; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.common.util.Dice; import java.util.Base64; @@ -38,8 +38,8 @@ static int rollPort() { return ThreadLocalRandom.current().nextInt(49152, 65535); } - static String rollPassword(Protocols protocols, CipherKind kind) { - if (Protocols.shadowsocks == protocols && kind.isAead2022()) { + static String rollPassword(Protocol protocol, CipherKind kind) { + if (Protocol.shadowsocks == protocol && kind.isAead2022()) { return rollAEAD2022Password(kind); } else { return UUID.randomUUID().toString(); diff --git a/urban-spork-test/src/com/urbanspork/test/client/Socks5UDPTestClient.java b/urban-spork-test/src/com/urbanspork/test/client/Socks5UDPTestClient.java index edec245..108e165 100644 --- a/urban-spork-test/src/com/urbanspork/test/client/Socks5UDPTestClient.java +++ b/urban-spork-test/src/com/urbanspork/test/client/Socks5UDPTestClient.java @@ -4,8 +4,8 @@ import com.urbanspork.common.codec.socks.DatagramPacketEncoder; import com.urbanspork.common.config.ClientConfig; import com.urbanspork.common.config.ConfigHandler; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; import com.urbanspork.common.protocol.socks.ClientHandshake; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import com.urbanspork.test.server.udp.DelayedEchoTestServer; import com.urbanspork.test.server.udp.SimpleEchoTestServer; import io.netty.bootstrap.Bootstrap; diff --git a/urban-spork-test/test/com/urbanspork/client/ClientSocksHandshakeTestCase.java b/urban-spork-test/test/com/urbanspork/client/ClientSocksHandshakeTestCase.java index 034c5f9..2f3b7d0 100644 --- a/urban-spork-test/test/com/urbanspork/client/ClientSocksHandshakeTestCase.java +++ b/urban-spork-test/test/com/urbanspork/client/ClientSocksHandshakeTestCase.java @@ -2,7 +2,7 @@ import com.urbanspork.common.config.ClientConfig; import com.urbanspork.common.config.ClientConfigTestCase; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.common.protocol.socks.ClientHandshake; import com.urbanspork.test.TestDice; import io.netty.channel.EventLoopGroup; @@ -26,7 +26,7 @@ class ClientSocksHandshakeTestCase { @Test void testUdpEnable() throws InterruptedException, ExecutionException { ClientConfig config = ClientConfigTestCase.testConfig(0, 0); - config.getServers().getFirst().setProtocol(Protocols.vmess); + config.getServers().getFirst().setProtocol(Protocol.vmess); Client.Instance client = ClientTestCase.asyncLaunchClient(config); InetSocketAddress proxyAddress = new InetSocketAddress(config.getPort()); InetSocketAddress dstAddress1 = new InetSocketAddress(InetAddress.getLoopbackAddress(), TestDice.rollPort()); diff --git a/urban-spork-test/test/com/urbanspork/client/TestClientUdpRelayHandler.java b/urban-spork-test/test/com/urbanspork/client/TestClientUdpRelayHandler.java index 2ff657d..b73db97 100644 --- a/urban-spork-test/test/com/urbanspork/client/TestClientUdpRelayHandler.java +++ b/urban-spork-test/test/com/urbanspork/client/TestClientUdpRelayHandler.java @@ -2,7 +2,7 @@ import com.urbanspork.common.config.ServerConfig; import com.urbanspork.common.config.ServerConfigTestCase; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import com.urbanspork.test.TestDice; import io.netty.buffer.Unpooled; import io.netty.channel.Channel; diff --git a/urban-spork-test/test/com/urbanspork/client/vmess/ClientUDPOverTCPHandlerTestCase.java b/urban-spork-test/test/com/urbanspork/client/vmess/ClientUDPOverTCPHandlerTestCase.java index 9acc512..c9ba973 100644 --- a/urban-spork-test/test/com/urbanspork/client/vmess/ClientUDPOverTCPHandlerTestCase.java +++ b/urban-spork-test/test/com/urbanspork/client/vmess/ClientUDPOverTCPHandlerTestCase.java @@ -3,8 +3,8 @@ import com.urbanspork.common.codec.CipherKind; import com.urbanspork.common.config.ServerConfig; import com.urbanspork.common.config.ServerConfigTestCase; -import com.urbanspork.common.protocol.Protocols; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; +import com.urbanspork.common.protocol.Protocol; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import com.urbanspork.test.TestDice; import io.netty.buffer.Unpooled; import io.netty.channel.EventLoopGroup; @@ -23,8 +23,8 @@ class ClientUDPOverTCPHandlerTestCase { @Test void testConnectFailed() { ServerConfig config = ServerConfigTestCase.testConfig(TestDice.rollPort()); - config.setProtocol(Protocols.vmess); - config.setPassword(TestDice.rollPassword(Protocols.vmess, CipherKind.chacha20_poly1305)); + config.setProtocol(Protocol.vmess); + config.setPassword(TestDice.rollPassword(Protocol.vmess, CipherKind.chacha20_poly1305)); EventLoopGroup executor = new NioEventLoopGroup(); EmbeddedChannel channel = new EmbeddedChannel(new ClientUdpOverTCPHandler(config, executor)); TernaryDatagramPacket packet = new TernaryDatagramPacket(new DatagramPacket(Unpooled.EMPTY_BUFFER, new InetSocketAddress(TestDice.rollPort())), new InetSocketAddress(0)); diff --git a/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/EmbeddedChannelTestCase.java b/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/EmbeddedChannelTestCase.java index 96d0a05..f37d887 100644 --- a/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/EmbeddedChannelTestCase.java +++ b/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/EmbeddedChannelTestCase.java @@ -5,8 +5,8 @@ import com.urbanspork.common.codec.shadowsocks.tcp.TcpRelayCodec; import com.urbanspork.common.codec.shadowsocks.udp.UdpRelayCodec; import com.urbanspork.common.config.ServerConfig; -import com.urbanspork.common.protocol.Protocols; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; +import com.urbanspork.common.protocol.Protocol; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import com.urbanspork.common.util.Dice; import com.urbanspork.test.TestDice; import io.netty.buffer.ByteBuf; @@ -35,7 +35,7 @@ void testTcpRelayChannel() { String host = TestDice.rollHost(); DefaultSocks5CommandRequest request = new DefaultSocks5CommandRequest(Socks5CommandType.CONNECT, Socks5AddressType.DOMAIN, host, port); CipherKind cipher = TestDice.rollCipher(); - String password = TestDice.rollPassword(Protocols.shadowsocks, cipher); + String password = TestDice.rollPassword(Protocol.shadowsocks, cipher); ServerConfig config = new ServerConfig(); config.setCipher(cipher); config.setPassword(password); @@ -65,7 +65,7 @@ void testUdpRelayChannel() { int port = TestDice.rollPort(); InetSocketAddress relay = new InetSocketAddress("192.168.1.1", port); ServerConfig config = new ServerConfig(); - config.setPassword(TestDice.rollPassword(Protocols.shadowsocks, cipher)); + config.setPassword(TestDice.rollPassword(Protocol.shadowsocks, cipher)); config.setCipher(cipher); client.pipeline().addLast(new UdpRelayCodec(config, Mode.Client)); server.pipeline().addLast(new UdpRelayCodec(config, Mode.Server)); @@ -89,7 +89,7 @@ void testAead2022UdpAntiReplay() { EmbeddedChannel client = new EmbeddedChannel(); CipherKind kind = CipherKind.aead2022_blake3_aes_256_gcm; ServerConfig config = new ServerConfig(); - config.setPassword(TestDice.rollPassword(Protocols.shadowsocks, kind)); + config.setPassword(TestDice.rollPassword(Protocol.shadowsocks, kind)); config.setCipher(kind); client.pipeline().addLast(new UdpRelayCodec(config, Mode.Client)); server.pipeline().addLast(new UdpRelayCodec(config, Mode.Server)); @@ -112,7 +112,7 @@ void testAead2022TcpAntiReplay() { EmbeddedChannel client = new EmbeddedChannel(); CipherKind kind = CipherKind.aead2022_blake3_aes_256_gcm; ServerConfig config = new ServerConfig(); - config.setPassword(TestDice.rollPassword(Protocols.shadowsocks, kind)); + config.setPassword(TestDice.rollPassword(Protocol.shadowsocks, kind)); config.setCipher(kind); Context context = Context.checkReplay(); server1.pipeline().addLast(new TcpRelayCodec(context, config, Mode.Server)); diff --git a/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/tcp/AeadCipherCodecTestCase.java b/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/tcp/AeadCipherCodecTestCase.java index 6f2042e..8d9d07a 100644 --- a/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/tcp/AeadCipherCodecTestCase.java +++ b/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/tcp/AeadCipherCodecTestCase.java @@ -8,7 +8,7 @@ import com.urbanspork.common.codec.shadowsocks.Mode; import com.urbanspork.common.config.ServerConfig; import com.urbanspork.common.manage.shadowsocks.ServerUserManager; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.common.protocol.shadowsocks.Identity; import com.urbanspork.common.protocol.shadowsocks.aead2022.AEAD2022; import com.urbanspork.common.util.Dice; @@ -45,7 +45,7 @@ void testUnexpectedStreamType() throws InvalidCipherTextException { DefaultSocks5CommandRequest request = new DefaultSocks5CommandRequest(Socks5CommandType.CONNECT, Socks5AddressType.DOMAIN, TestDice.rollHost(), TestDice.rollPort()); CipherKind kind = CipherKind.aead2022_blake3_aes_128_gcm; int saltSize = 16; - String password = TestDice.rollPassword(Protocols.shadowsocks, kind); + String password = TestDice.rollPassword(Protocol.shadowsocks, kind); CipherMethod method = CipherMethods.AES_GCM.get(); ServerConfig config = new ServerConfig(); config.setPassword(password); diff --git a/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/tcp/AeadCipherCodecsTestCase.java b/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/tcp/AeadCipherCodecsTestCase.java index 4dcf3bf..0f70203 100644 --- a/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/tcp/AeadCipherCodecsTestCase.java +++ b/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/tcp/AeadCipherCodecsTestCase.java @@ -7,7 +7,7 @@ import com.urbanspork.common.codec.shadowsocks.Mode; import com.urbanspork.common.config.ServerConfig; import com.urbanspork.common.manage.shadowsocks.ServerUserManager; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.common.protocol.shadowsocks.Identity; import com.urbanspork.common.util.Dice; import com.urbanspork.test.TestDice; @@ -57,7 +57,7 @@ void test() throws Exception { @DisplayName("All supported cipher iterate") @EnumSource(CipherKind.class) void parameterizedTest(CipherKind kind) throws Exception { - this.password = TestDice.rollPassword(Protocols.shadowsocks, kind); + this.password = TestDice.rollPassword(Protocol.shadowsocks, kind); this.kind = kind; int port = TestDice.rollPort(); String host = TestDice.rollHost(); diff --git a/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/udp/AeadCipherCodecTestCase.java b/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/udp/AeadCipherCodecTestCase.java index df3693d..86942bc 100644 --- a/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/udp/AeadCipherCodecTestCase.java +++ b/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/udp/AeadCipherCodecTestCase.java @@ -4,7 +4,7 @@ import com.urbanspork.common.codec.shadowsocks.Mode; import com.urbanspork.common.config.ServerConfig; import com.urbanspork.common.manage.shadowsocks.ServerUserManager; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.common.protocol.shadowsocks.Control; import com.urbanspork.common.util.Dice; import com.urbanspork.test.TestDice; @@ -91,7 +91,7 @@ private static void testInvalidSocketType(Context c) throws InvalidCipherTextExc static AeadCipherCodec newAEADCipherCodec() { CipherKind kind = CipherKind.aead2022_blake3_aes_128_gcm; ServerConfig config = new ServerConfig(); - config.setPassword(TestDice.rollPassword(Protocols.shadowsocks, kind)); + config.setPassword(TestDice.rollPassword(Protocol.shadowsocks, kind)); config.setCipher(kind); return AeadCipherCodecs.get(config); } diff --git a/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/udp/AeadCipherCodecsTestCase.java b/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/udp/AeadCipherCodecsTestCase.java index 74e292e..8204409 100644 --- a/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/udp/AeadCipherCodecsTestCase.java +++ b/urban-spork-test/test/com/urbanspork/common/codec/shadowsocks/udp/AeadCipherCodecsTestCase.java @@ -7,7 +7,7 @@ import com.urbanspork.common.codec.shadowsocks.Mode; import com.urbanspork.common.config.ServerConfig; import com.urbanspork.common.manage.shadowsocks.ServerUserManager; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.common.protocol.shadowsocks.Control; import com.urbanspork.common.util.Dice; import com.urbanspork.test.TestDice; @@ -54,7 +54,7 @@ void test() throws Exception { @DisplayName("All supported cipher iterate") @EnumSource(CipherKind.class) void parameterizedTest(CipherKind kind) throws Exception { - this.password = TestDice.rollPassword(Protocols.shadowsocks, kind); + this.password = TestDice.rollPassword(Protocol.shadowsocks, kind); this.kind = kind; int port = TestDice.rollPort(); String host = TestDice.rollHost(); diff --git a/urban-spork-test/test/com/urbanspork/common/config/ServerConfigTestCase.java b/urban-spork-test/test/com/urbanspork/common/config/ServerConfigTestCase.java index 655f5d9..af0ab15 100644 --- a/urban-spork-test/test/com/urbanspork/common/config/ServerConfigTestCase.java +++ b/urban-spork-test/test/com/urbanspork/common/config/ServerConfigTestCase.java @@ -1,8 +1,8 @@ package com.urbanspork.common.config; -import com.urbanspork.common.protocol.Protocols; -import com.urbanspork.common.protocol.network.Network; -import com.urbanspork.common.protocol.network.PacketEncoding; +import com.urbanspork.common.protocol.Protocol; +import com.urbanspork.common.transport.Transport; +import com.urbanspork.common.transport.udp.PacketEncoding; import com.urbanspork.test.TestDice; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; @@ -30,11 +30,11 @@ void testCheck() { @Test void testUDPEnable() { ServerConfig config = testConfig(TestDice.rollPort()); - config.setNetworks(new Network[]{Network.UDP}); + config.setTransport(new Transport[]{Transport.UDP}); Assertions.assertTrue(config.udpEnabled()); - config.setNetworks(new Network[]{Network.TCP}); + config.setTransport(new Transport[]{Transport.TCP}); Assertions.assertFalse(config.udpEnabled()); - config.setNetworks(null); + config.setTransport(null); Assertions.assertFalse(config.udpEnabled()); } @@ -70,7 +70,7 @@ public static List testConfigs(int... ports) { ServerConfig serverConfig = new ServerConfig(); serverConfig.setHost(InetAddress.getLoopbackAddress().getHostName()); serverConfig.setPort(port); - serverConfig.setProtocol(Protocols.shadowsocks); + serverConfig.setProtocol(Protocol.shadowsocks); serverConfig.setCipher(TestDice.rollCipher()); serverConfig.setPassword(TestDice.rollPassword(serverConfig.getProtocol(), serverConfig.getCipher())); serverConfig.setPacketEncoding(PacketEncoding.Packet); diff --git a/urban-spork-test/test/com/urbanspork/common/protocol/shadowsocks/aead2022/Aead2022TestCase.java b/urban-spork-test/test/com/urbanspork/common/protocol/shadowsocks/aead2022/Aead2022TestCase.java index acd9255..2379092 100644 --- a/urban-spork-test/test/com/urbanspork/common/protocol/shadowsocks/aead2022/Aead2022TestCase.java +++ b/urban-spork-test/test/com/urbanspork/common/protocol/shadowsocks/aead2022/Aead2022TestCase.java @@ -7,7 +7,7 @@ import com.urbanspork.common.config.ServerUserConfig; import com.urbanspork.common.manage.shadowsocks.ServerUser; import com.urbanspork.common.manage.shadowsocks.ServerUserManager; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.common.protocol.shadowsocks.Control; import com.urbanspork.common.util.Dice; import com.urbanspork.test.TestDice; @@ -56,7 +56,7 @@ void testTcpWithEih() { CipherKind kind = CipherKind.aead2022_blake3_aes_256_gcm; StringJoiner joiner = new StringJoiner(":"); for (int i = 0; i < 3; i++) { - joiner.add(TestDice.rollPassword(Protocols.shadowsocks, kind)); + joiner.add(TestDice.rollPassword(Protocol.shadowsocks, kind)); } String password = joiner.toString(); Keys keys = AEAD2022.passwordToKeys(password); @@ -84,7 +84,7 @@ void testTcpInvalidClientUserIdentity() { void testUdpUserNotFound() throws InvalidCipherTextException { CipherKind kind = CipherKind.aead2022_blake3_aes_256_gcm; CipherMethod method = CipherMethods.AES_GCM.get(); - byte[] iPSK = Base64.getDecoder().decode(TestDice.rollPassword(Protocols.shadowsocks, kind)); + byte[] iPSK = Base64.getDecoder().decode(TestDice.rollPassword(Protocol.shadowsocks, kind)); ServerUser user = rollUser(kind); ServerUserManager userManager = ServerUserManager.DEFAULT; userManager.addUser(user); @@ -117,7 +117,7 @@ void testUdpWithEih() { } private static ServerUser rollUser(CipherKind kind) { - return ServerUser.from(new ServerUserConfig("underdog", TestDice.rollPassword(Protocols.shadowsocks, kind))); + return ServerUser.from(new ServerUserConfig("underdog", TestDice.rollPassword(Protocol.shadowsocks, kind))); } @Override diff --git a/urban-spork-test/test/com/urbanspork/common/protocol/socks/DatagramPacketTestCase.java b/urban-spork-test/test/com/urbanspork/common/protocol/socks/DatagramPacketTestCase.java index 274ee47..6f9b139 100644 --- a/urban-spork-test/test/com/urbanspork/common/protocol/socks/DatagramPacketTestCase.java +++ b/urban-spork-test/test/com/urbanspork/common/protocol/socks/DatagramPacketTestCase.java @@ -2,7 +2,7 @@ import com.urbanspork.common.codec.socks.DatagramPacketDecoder; import com.urbanspork.common.codec.socks.DatagramPacketEncoder; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import com.urbanspork.test.TestDice; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; diff --git a/urban-spork-test/test/com/urbanspork/server/ServerTestCase.java b/urban-spork-test/test/com/urbanspork/server/ServerTestCase.java index 6204de6..319edc6 100644 --- a/urban-spork-test/test/com/urbanspork/server/ServerTestCase.java +++ b/urban-spork-test/test/com/urbanspork/server/ServerTestCase.java @@ -2,7 +2,7 @@ import com.urbanspork.common.config.ServerConfig; import com.urbanspork.common.config.ServerConfigTestCase; -import com.urbanspork.common.protocol.network.Network; +import com.urbanspork.common.transport.Transport; import com.urbanspork.common.util.Dice; import com.urbanspork.test.TestDice; import io.netty.bootstrap.Bootstrap; @@ -72,7 +72,7 @@ void shutdown() { @Test void sendInvalidUDP() throws InterruptedException, ExecutionException { ServerConfig config = ServerConfigTestCase.testConfig(0); - config.setNetworks(new Network[]{Network.TCP, Network.UDP}); + config.setTransport(new Transport[]{Transport.TCP, Transport.UDP}); try (ExecutorService service = Executors.newVirtualThreadPerTaskExecutor()) { CompletableFuture> promise = new CompletableFuture<>(); service.submit(() -> Server.launch(List.of(config), promise)); diff --git a/urban-spork-test/test/com/urbanspork/server/ServerUDPRelayHandlerTestCase.java b/urban-spork-test/test/com/urbanspork/server/ServerUDPRelayHandlerTestCase.java index 170613e..21e68a1 100644 --- a/urban-spork-test/test/com/urbanspork/server/ServerUDPRelayHandlerTestCase.java +++ b/urban-spork-test/test/com/urbanspork/server/ServerUDPRelayHandlerTestCase.java @@ -1,6 +1,6 @@ package com.urbanspork.server; -import com.urbanspork.common.protocol.network.PacketEncoding; +import com.urbanspork.common.transport.udp.PacketEncoding; import com.urbanspork.test.TestDice; import io.netty.buffer.Unpooled; import io.netty.channel.Channel; diff --git a/urban-spork-test/test/com/urbanspork/test/TCPTestCase.java b/urban-spork-test/test/com/urbanspork/test/TCPTestCase.java index a90c163..700a24c 100644 --- a/urban-spork-test/test/com/urbanspork/test/TCPTestCase.java +++ b/urban-spork-test/test/com/urbanspork/test/TCPTestCase.java @@ -8,7 +8,7 @@ import com.urbanspork.common.config.ServerConfigTestCase; import com.urbanspork.common.config.ServerUserConfig; import com.urbanspork.common.manage.shadowsocks.ServerUserManager; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.server.Server; import com.urbanspork.test.template.Parameter; import com.urbanspork.test.template.TCPTestTemplate; @@ -27,7 +27,7 @@ class TCPTestCase extends TCPTestTemplate { @ParameterizedTest @ArgumentsSource(Parameter.Provider.class) void testByParameter(Parameter parameter) throws ExecutionException, InterruptedException { - Protocols protocol = parameter.protocol(); + Protocol protocol = parameter.protocol(); CipherKind cipher = parameter.cipher(); if (cipher.isAead2022() && cipher.supportEih()) { testShadowsocksAEAD2022EihByParameter(parameter); @@ -53,7 +53,7 @@ void testConnectServerFailed() throws ExecutionException, InterruptedException { } void testShadowsocksAEAD2022EihByParameter(Parameter parameter) throws ExecutionException, InterruptedException { - Protocols protocol = parameter.protocol(); + Protocol protocol = parameter.protocol(); CipherKind cipher = parameter.cipher(); ServerConfig serverConfig = ServerConfigTestCase.testConfig(0); serverConfig.setProtocol(protocol); diff --git a/urban-spork-test/test/com/urbanspork/test/UdpTestCase.java b/urban-spork-test/test/com/urbanspork/test/UdpTestCase.java index 6bdeec7..91f5548 100644 --- a/urban-spork-test/test/com/urbanspork/test/UdpTestCase.java +++ b/urban-spork-test/test/com/urbanspork/test/UdpTestCase.java @@ -8,8 +8,8 @@ import com.urbanspork.common.config.ServerConfigTestCase; import com.urbanspork.common.config.ServerUserConfig; import com.urbanspork.common.manage.shadowsocks.ServerUserManager; -import com.urbanspork.common.protocol.Protocols; -import com.urbanspork.common.protocol.network.Network; +import com.urbanspork.common.protocol.Protocol; +import com.urbanspork.common.transport.Transport; import com.urbanspork.server.Server; import com.urbanspork.test.template.Parameter; import com.urbanspork.test.template.UdpTestTemplate; @@ -28,15 +28,15 @@ class UdpTestCase extends UdpTestTemplate { @ParameterizedTest @ArgumentsSource(Parameter.Provider.class) void testByParameter(Parameter parameter) throws ExecutionException, InterruptedException, TimeoutException { - Protocols protocol = parameter.protocol(); + Protocol protocol = parameter.protocol(); CipherKind cipher = parameter.cipher(); if (cipher.isAead2022() && cipher.supportEih()) { testShadowsocksAEAD2022EihByParameter(parameter); } ClientConfig config = ClientConfigTestCase.testConfig(0, 0); ServerConfig serverConfig = config.getServers().getFirst(); - Network[] networks = {Network.TCP, Network.UDP}; - serverConfig.setNetworks(networks); + Transport[] transports = {Transport.TCP, Transport.UDP}; + serverConfig.setTransport(transports); serverConfig.setProtocol(protocol); serverConfig.setCipher(cipher); serverConfig.setPassword(parameter.serverPassword()); @@ -50,10 +50,10 @@ void testByParameter(Parameter parameter) throws ExecutionException, Interrupted void testShadowsocksAEAD2022EihByParameter(Parameter parameter) throws ExecutionException, InterruptedException, TimeoutException { CipherKind cipher = parameter.cipher(); - Protocols protocol = parameter.protocol(); - Network[] networks = {Network.TCP, Network.UDP}; + Protocol protocol = parameter.protocol(); + Transport[] transports = {Transport.TCP, Transport.UDP}; ServerConfig serverConfig = ServerConfigTestCase.testConfig(0); - serverConfig.setNetworks(networks); + serverConfig.setTransport(transports); serverConfig.setProtocol(protocol); serverConfig.setCipher(cipher); serverConfig.setPassword(parameter.serverPassword()); @@ -64,7 +64,7 @@ void testShadowsocksAEAD2022EihByParameter(Parameter parameter) throws Execution ClientConfig clientConfig = ClientConfigTestCase.testConfig(0, serverConfig.getPort()); ServerConfig current = clientConfig.getCurrent(); current.setCipher(cipher); - current.setNetworks(networks); + current.setTransport(transports); current.setProtocol(protocol); current.setPassword(parameter.serverPassword() + ":" + parameter.clientPassword()); Client.Instance client = launchClient(clientConfig); diff --git a/urban-spork-test/test/com/urbanspork/test/template/Parameter.java b/urban-spork-test/test/com/urbanspork/test/template/Parameter.java index e605d04..ef0863a 100644 --- a/urban-spork-test/test/com/urbanspork/test/template/Parameter.java +++ b/urban-spork-test/test/com/urbanspork/test/template/Parameter.java @@ -1,7 +1,7 @@ package com.urbanspork.test.template; import com.urbanspork.common.codec.CipherKind; -import com.urbanspork.common.protocol.Protocols; +import com.urbanspork.common.protocol.Protocol; import com.urbanspork.test.TestDice; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.provider.Arguments; @@ -11,7 +11,7 @@ import java.util.List; import java.util.stream.Stream; -public record Parameter(Protocols protocol, CipherKind cipher, String clientPassword, String serverPassword) { +public record Parameter(Protocol protocol, CipherKind cipher, String clientPassword, String serverPassword) { @Override public String toString() { return String.format("%s|%s", protocol, cipher); @@ -21,9 +21,9 @@ public static class Provider implements ArgumentsProvider { @Override public Stream provideArguments(ExtensionContext extensionContext) { List parameters = new ArrayList<>(); - for (Protocols protocol : Protocols.values()) { + for (Protocol protocol : Protocol.values()) { for (CipherKind cipher : CipherKind.values()) { - if (Protocols.vmess == protocol && cipher.isAead2022()) { + if (Protocol.vmess == protocol && cipher.isAead2022()) { continue; } parameters.add(new Parameter(protocol, cipher, TestDice.rollPassword(protocol, cipher), TestDice.rollPassword(protocol, cipher))); diff --git a/urban-spork-test/test/com/urbanspork/test/template/UdpTestTemplate.java b/urban-spork-test/test/com/urbanspork/test/template/UdpTestTemplate.java index c53c19a..7dc19eb 100644 --- a/urban-spork-test/test/com/urbanspork/test/template/UdpTestTemplate.java +++ b/urban-spork-test/test/com/urbanspork/test/template/UdpTestTemplate.java @@ -2,8 +2,8 @@ import com.urbanspork.common.codec.socks.DatagramPacketDecoder; import com.urbanspork.common.codec.socks.DatagramPacketEncoder; -import com.urbanspork.common.protocol.network.TernaryDatagramPacket; import com.urbanspork.common.protocol.socks.ClientHandshake; +import com.urbanspork.common.transport.udp.TernaryDatagramPacket; import com.urbanspork.test.TestDice; import com.urbanspork.test.server.udp.DelayedEchoTestServer; import com.urbanspork.test.server.udp.SimpleEchoTestServer;