diff --git a/Taskfile.yaml b/Taskfile.yaml index 6535a3e..a77430a 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -12,7 +12,7 @@ tasks: sh: git rev-parse HEAD BUILD_DATE: sh: date "+%Y%m%d%H%M%S" - dir: ./cmd + dir: ./app/cmd/ cmds: - | GOOS={{.GOOS}} GOARCH={{.GOARCH}} GOARM={{.GOARM}} GOMIPS={{.GOMIPS}} \ diff --git a/cmd/auth/external.go b/app/auth/external.go similarity index 100% rename from cmd/auth/external.go rename to app/auth/external.go diff --git a/cmd/auth/funcs.go b/app/auth/funcs.go similarity index 86% rename from cmd/auth/funcs.go rename to app/auth/funcs.go index 04e4693..63d3f50 100644 --- a/cmd/auth/funcs.go +++ b/app/auth/funcs.go @@ -6,11 +6,11 @@ import ( "net/http" "time" - "github.com/apernet/hysteria/pkg/core" + "github.com/apernet/hysteria/core/cs" "github.com/yosuke-furukawa/json5/encoding/json5" ) -func PasswordAuthFunc(rawMsg json5.RawMessage) (core.ConnectFunc, error) { +func PasswordAuthFunc(rawMsg json5.RawMessage) (cs.ConnectFunc, error) { var pwds []string err := json5.Unmarshal(rawMsg, &pwds) if err != nil { @@ -34,7 +34,7 @@ func PasswordAuthFunc(rawMsg json5.RawMessage) (core.ConnectFunc, error) { }, nil } -func ExternalAuthFunc(rawMsg json5.RawMessage) (core.ConnectFunc, error) { +func ExternalAuthFunc(rawMsg json5.RawMessage) (cs.ConnectFunc, error) { var extConfig map[string]string err := json5.Unmarshal(rawMsg, &extConfig) if err != nil { diff --git a/cmd/acme.go b/app/cmd/acme.go similarity index 100% rename from cmd/acme.go rename to app/cmd/acme.go diff --git a/cmd/client.go b/app/cmd/client.go similarity index 96% rename from cmd/client.go rename to app/cmd/client.go index cf3c4fa..857b068 100644 --- a/cmd/client.go +++ b/app/cmd/client.go @@ -11,20 +11,21 @@ import ( "os" "time" - "github.com/apernet/hysteria/pkg/pktconns" + hyHTTP "github.com/apernet/hysteria/app/http" + "github.com/apernet/hysteria/app/redirect" + "github.com/apernet/hysteria/app/relay" + "github.com/apernet/hysteria/app/socks5" + "github.com/apernet/hysteria/app/tproxy" - "github.com/apernet/hysteria/pkg/pmtud" - "github.com/apernet/hysteria/pkg/redirect" + "github.com/apernet/hysteria/core/pktconns" + + "github.com/apernet/hysteria/core/pmtud" "github.com/oschwald/geoip2-golang" "github.com/yosuke-furukawa/json5/encoding/json5" - "github.com/apernet/hysteria/pkg/acl" - "github.com/apernet/hysteria/pkg/core" - hyHTTP "github.com/apernet/hysteria/pkg/http" - "github.com/apernet/hysteria/pkg/relay" - "github.com/apernet/hysteria/pkg/socks5" - "github.com/apernet/hysteria/pkg/tproxy" - "github.com/apernet/hysteria/pkg/transport" + "github.com/apernet/hysteria/core/acl" + "github.com/apernet/hysteria/core/cs" + "github.com/apernet/hysteria/core/transport" "github.com/lucas-clemente/quic-go" "github.com/sirupsen/logrus" ) @@ -129,12 +130,12 @@ func client(config *clientConfig) { } } // Client - var client *core.Client + var client *cs.Client try := 0 up, down, _ := config.Speed() for { try += 1 - c, err := core.NewClient(config.Server, auth, tlsConfig, quicConfig, pktConnFunc, up, down, config.FastOpen, + c, err := cs.NewClient(config.Server, auth, tlsConfig, quicConfig, pktConnFunc, up, down, config.FastOpen, func(err error) { if config.QuitOnDisconnect { logrus.WithFields(logrus.Fields{ diff --git a/cmd/client_gpl.go b/app/cmd/client_gpl.go similarity index 94% rename from cmd/client_gpl.go rename to app/cmd/client_gpl.go index de7aa0b..dd5dad2 100644 --- a/cmd/client_gpl.go +++ b/app/cmd/client_gpl.go @@ -9,11 +9,12 @@ import ( "strings" "time" + "github.com/apernet/hysteria/app/tun" + "github.com/docker/go-units" "gvisor.dev/gvisor/pkg/tcpip/transport/tcp" - "github.com/apernet/hysteria/pkg/core" - "github.com/apernet/hysteria/pkg/tun" + "github.com/apernet/hysteria/core/cs" "github.com/sirupsen/logrus" ) @@ -34,7 +35,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . ` -func startTUN(config *clientConfig, client *core.Client, errChan chan error) { +func startTUN(config *clientConfig, client *cs.Client, errChan chan error) { timeout := time.Duration(config.TUN.Timeout) * time.Second if timeout == 0 { timeout = 300 * time.Second @@ -92,7 +93,7 @@ func startTUN(config *clientConfig, client *core.Client, errChan chan error) { "src": defaultIPMasker.Mask(addr.String()), "dst": defaultIPMasker.Mask(reqAddr), }).Debugf("TUN %s EOF", strings.ToUpper(addr.Network())) - } else if err == core.ErrClosed && strings.HasPrefix(addr.Network(), "udp") { + } else if err == cs.ErrClosed && strings.HasPrefix(addr.Network(), "udp") { logrus.WithFields(logrus.Fields{ "src": defaultIPMasker.Mask(addr.String()), "dst": defaultIPMasker.Mask(reqAddr), diff --git a/cmd/client_nongpl.go b/app/cmd/client_nongpl.go similarity index 91% rename from cmd/client_nongpl.go rename to app/cmd/client_nongpl.go index 7b4e5bb..417159b 100644 --- a/cmd/client_nongpl.go +++ b/app/cmd/client_nongpl.go @@ -4,7 +4,7 @@ package main import ( - "github.com/apernet/hysteria/pkg/core" + "github.com/apernet/hysteria/core/cs" "github.com/sirupsen/logrus" ) @@ -31,6 +31,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ` -func startTUN(config *clientConfig, client *core.Client, errChan chan error) { +func startTUN(config *clientConfig, client *cs.Client, errChan chan error) { logrus.Fatalln("TUN mode is only available in GPL builds. Please rebuild hysteria with -tags gpl") } diff --git a/cmd/completion.go b/app/cmd/completion.go similarity index 100% rename from cmd/completion.go rename to app/cmd/completion.go diff --git a/cmd/config.go b/app/cmd/config.go similarity index 100% rename from cmd/config.go rename to app/cmd/config.go diff --git a/cmd/config_test.go b/app/cmd/config_test.go similarity index 100% rename from cmd/config_test.go rename to app/cmd/config_test.go diff --git a/cmd/ipmasker.go b/app/cmd/ipmasker.go similarity index 100% rename from cmd/ipmasker.go rename to app/cmd/ipmasker.go diff --git a/cmd/kploader.go b/app/cmd/kploader.go similarity index 100% rename from cmd/kploader.go rename to app/cmd/kploader.go diff --git a/cmd/main.go b/app/cmd/main.go similarity index 100% rename from cmd/main.go rename to app/cmd/main.go diff --git a/cmd/mmdb.go b/app/cmd/mmdb.go similarity index 100% rename from cmd/mmdb.go rename to app/cmd/mmdb.go diff --git a/cmd/resolver.go b/app/cmd/resolver.go similarity index 98% rename from cmd/resolver.go rename to app/cmd/resolver.go index a4dacb4..473712c 100644 --- a/cmd/resolver.go +++ b/app/cmd/resolver.go @@ -7,7 +7,7 @@ import ( "net/url" "strings" - "github.com/apernet/hysteria/pkg/utils" + "github.com/apernet/hysteria/core/utils" rdns "github.com/folbricht/routedns" ) diff --git a/cmd/server.go b/app/cmd/server.go similarity index 96% rename from cmd/server.go rename to app/cmd/server.go index f69b829..f4c533b 100644 --- a/cmd/server.go +++ b/app/cmd/server.go @@ -7,14 +7,15 @@ import ( "net/http" "time" - "github.com/apernet/hysteria/pkg/pktconns" + "github.com/apernet/hysteria/app/auth" - "github.com/apernet/hysteria/cmd/auth" - "github.com/apernet/hysteria/pkg/acl" - "github.com/apernet/hysteria/pkg/core" - "github.com/apernet/hysteria/pkg/pmtud" - "github.com/apernet/hysteria/pkg/sockopt" - "github.com/apernet/hysteria/pkg/transport" + "github.com/apernet/hysteria/core/pktconns" + + "github.com/apernet/hysteria/core/acl" + "github.com/apernet/hysteria/core/cs" + "github.com/apernet/hysteria/core/pmtud" + "github.com/apernet/hysteria/core/sockopt" + "github.com/apernet/hysteria/core/transport" "github.com/lucas-clemente/quic-go" "github.com/oschwald/geoip2-golang" "github.com/prometheus/client_golang/prometheus" @@ -90,7 +91,7 @@ func server(config *serverConfig) { logrus.Info("Path MTU Discovery is not yet supported on this platform") } // Auth - var authFunc core.ConnectFunc + var authFunc cs.ConnectFunc var err error switch authMode := config.Auth.Mode; authMode { case "", "none": @@ -221,7 +222,7 @@ func server(config *serverConfig) { } // Server up, down, _ := config.Speed() - server, err := core.NewServer(tlsConfig, quicConfig, pktConn, + server, err := cs.NewServer(tlsConfig, quicConfig, pktConn, transport.DefaultServerTransport, up, down, config.DisableUDP, aclEngine, connectFunc, disconnectFunc, tcpRequestFunc, tcpErrorFunc, udpRequestFunc, udpErrorFunc, promReg) if err != nil { diff --git a/cmd/update.go b/app/cmd/update.go similarity index 100% rename from cmd/update.go rename to app/cmd/update.go diff --git a/pkg/http/server.go b/app/http/server.go similarity index 88% rename from pkg/http/server.go rename to app/http/server.go index 99d9a26..5e08e12 100644 --- a/pkg/http/server.go +++ b/app/http/server.go @@ -7,17 +7,17 @@ import ( "net/http" "time" - "github.com/apernet/hysteria/pkg/transport" - "github.com/apernet/hysteria/pkg/utils" + "github.com/apernet/hysteria/core/transport" + "github.com/apernet/hysteria/core/utils" "github.com/elazarl/goproxy/ext/auth" - "github.com/apernet/hysteria/pkg/acl" - "github.com/apernet/hysteria/pkg/core" + "github.com/apernet/hysteria/core/acl" + "github.com/apernet/hysteria/core/cs" "github.com/elazarl/goproxy" ) -func NewProxyHTTPServer(hyClient *core.Client, transport *transport.ClientTransport, idleTimeout time.Duration, +func NewProxyHTTPServer(hyClient *cs.Client, transport *transport.ClientTransport, idleTimeout time.Duration, aclEngine *acl.Engine, basicAuthFunc func(user, password string) bool, newDialFunc func(reqAddr string, action acl.Action, arg string), diff --git a/pkg/redirect/origdst_linux.go b/app/redirect/origdst_linux.go similarity index 100% rename from pkg/redirect/origdst_linux.go rename to app/redirect/origdst_linux.go diff --git a/pkg/redirect/origdst_linux_386.go b/app/redirect/origdst_linux_386.go similarity index 100% rename from pkg/redirect/origdst_linux_386.go rename to app/redirect/origdst_linux_386.go diff --git a/pkg/redirect/tcp_linux.go b/app/redirect/tcp_linux.go similarity index 91% rename from pkg/redirect/tcp_linux.go rename to app/redirect/tcp_linux.go index 7fcef90..0845690 100644 --- a/pkg/redirect/tcp_linux.go +++ b/app/redirect/tcp_linux.go @@ -7,12 +7,12 @@ import ( "syscall" "time" - "github.com/apernet/hysteria/pkg/core" - "github.com/apernet/hysteria/pkg/utils" + "github.com/apernet/hysteria/core/cs" + "github.com/apernet/hysteria/core/utils" ) type TCPRedirect struct { - HyClient *core.Client + HyClient *cs.Client ListenAddr *net.TCPAddr Timeout time.Duration @@ -20,7 +20,7 @@ type TCPRedirect struct { ErrorFunc func(addr, reqAddr net.Addr, err error) } -func NewTCPRedirect(hyClient *core.Client, listen string, timeout time.Duration, +func NewTCPRedirect(hyClient *cs.Client, listen string, timeout time.Duration, connFunc func(addr, reqAddr net.Addr), errorFunc func(addr, reqAddr net.Addr, err error), ) (*TCPRedirect, error) { diff --git a/pkg/redirect/tcp_stub.go b/app/redirect/tcp_stub.go similarity index 75% rename from pkg/redirect/tcp_stub.go rename to app/redirect/tcp_stub.go index d7bdd99..353abb1 100644 --- a/pkg/redirect/tcp_stub.go +++ b/app/redirect/tcp_stub.go @@ -8,12 +8,12 @@ import ( "net" "time" - "github.com/apernet/hysteria/pkg/core" + "github.com/apernet/hysteria/core/cs" ) type TCPRedirect struct{} -func NewTCPRedirect(hyClient *core.Client, listen string, timeout time.Duration, +func NewTCPRedirect(hyClient *cs.Client, listen string, timeout time.Duration, connFunc func(addr, reqAddr net.Addr), errorFunc func(addr, reqAddr net.Addr, err error), ) (*TCPRedirect, error) { diff --git a/pkg/relay/tcp.go b/app/relay/tcp.go similarity index 85% rename from pkg/relay/tcp.go rename to app/relay/tcp.go index 1852e1c..d09ce9b 100644 --- a/pkg/relay/tcp.go +++ b/app/relay/tcp.go @@ -4,12 +4,12 @@ import ( "net" "time" - "github.com/apernet/hysteria/pkg/core" - "github.com/apernet/hysteria/pkg/utils" + "github.com/apernet/hysteria/core/cs" + "github.com/apernet/hysteria/core/utils" ) type TCPRelay struct { - HyClient *core.Client + HyClient *cs.Client ListenAddr *net.TCPAddr Remote string Timeout time.Duration @@ -18,7 +18,7 @@ type TCPRelay struct { ErrorFunc func(addr net.Addr, err error) } -func NewTCPRelay(hyClient *core.Client, listen, remote string, timeout time.Duration, +func NewTCPRelay(hyClient *cs.Client, listen, remote string, timeout time.Duration, connFunc func(addr net.Addr), errorFunc func(addr net.Addr, err error), ) (*TCPRelay, error) { tAddr, err := net.ResolveTCPAddr("tcp", listen) diff --git a/pkg/relay/udp.go b/app/relay/udp.go similarity index 93% rename from pkg/relay/udp.go rename to app/relay/udp.go index 8941b50..a165c32 100644 --- a/pkg/relay/udp.go +++ b/app/relay/udp.go @@ -7,7 +7,7 @@ import ( "sync/atomic" "time" - "github.com/apernet/hysteria/pkg/core" + "github.com/apernet/hysteria/core/cs" ) const udpBufferSize = 4096 @@ -15,7 +15,7 @@ const udpBufferSize = 4096 var ErrTimeout = errors.New("inactivity timeout") type UDPRelay struct { - HyClient *core.Client + HyClient *cs.Client ListenAddr *net.UDPAddr Remote string Timeout time.Duration @@ -24,7 +24,7 @@ type UDPRelay struct { ErrorFunc func(addr net.Addr, err error) } -func NewUDPRelay(hyClient *core.Client, listen, remote string, timeout time.Duration, +func NewUDPRelay(hyClient *cs.Client, listen, remote string, timeout time.Duration, connFunc func(addr net.Addr), errorFunc func(addr net.Addr, err error), ) (*UDPRelay, error) { uAddr, err := net.ResolveUDPAddr("udp", listen) @@ -46,7 +46,7 @@ func NewUDPRelay(hyClient *core.Client, listen, remote string, timeout time.Dura } type connEntry struct { - HyConn core.HyUDPConn + HyConn cs.HyUDPConn Deadline atomic.Value } diff --git a/pkg/socks5/server.go b/app/socks5/server.go similarity index 97% rename from pkg/socks5/server.go rename to app/socks5/server.go index 575762f..58255d8 100644 --- a/pkg/socks5/server.go +++ b/app/socks5/server.go @@ -6,10 +6,10 @@ import ( "fmt" "strconv" - "github.com/apernet/hysteria/pkg/acl" - "github.com/apernet/hysteria/pkg/core" - "github.com/apernet/hysteria/pkg/transport" - "github.com/apernet/hysteria/pkg/utils" + "github.com/apernet/hysteria/core/acl" + "github.com/apernet/hysteria/core/cs" + "github.com/apernet/hysteria/core/transport" + "github.com/apernet/hysteria/core/utils" ) import ( @@ -27,7 +27,7 @@ var ( ) type Server struct { - HyClient *core.Client + HyClient *cs.Client Transport *transport.ClientTransport AuthFunc func(username, password string) bool Method byte @@ -44,7 +44,7 @@ type Server struct { tcpListener *net.TCPListener } -func NewServer(hyClient *core.Client, transport *transport.ClientTransport, addr string, +func NewServer(hyClient *cs.Client, transport *transport.ClientTransport, addr string, authFunc func(username, password string) bool, tcpTimeout time.Duration, aclEngine *acl.Engine, disableUDP bool, tcpReqFunc func(addr net.Addr, reqAddr string, action acl.Action, arg string), @@ -320,7 +320,7 @@ func (s *Server) handleUDP(c *net.TCPConn, r *socks5.Request) error { return nil } -func (s *Server) udpServer(clientConn *net.UDPConn, localRelayConn *net.UDPConn, hyUDP core.HyUDPConn) { +func (s *Server) udpServer(clientConn *net.UDPConn, localRelayConn *net.UDPConn, hyUDP cs.HyUDPConn) { var clientAddr *net.UDPAddr buf := make([]byte, udpBufferSize) // Local to remote diff --git a/pkg/tproxy/tcp_linux.go b/app/tproxy/tcp_linux.go similarity index 88% rename from pkg/tproxy/tcp_linux.go rename to app/tproxy/tcp_linux.go index 2c8f822..c090a97 100644 --- a/pkg/tproxy/tcp_linux.go +++ b/app/tproxy/tcp_linux.go @@ -5,12 +5,12 @@ import ( "time" "github.com/LiamHaworth/go-tproxy" - "github.com/apernet/hysteria/pkg/core" - "github.com/apernet/hysteria/pkg/utils" + "github.com/apernet/hysteria/core/cs" + "github.com/apernet/hysteria/core/utils" ) type TCPTProxy struct { - HyClient *core.Client + HyClient *cs.Client ListenAddr *net.TCPAddr Timeout time.Duration @@ -18,7 +18,7 @@ type TCPTProxy struct { ErrorFunc func(addr, reqAddr net.Addr, err error) } -func NewTCPTProxy(hyClient *core.Client, listen string, timeout time.Duration, +func NewTCPTProxy(hyClient *cs.Client, listen string, timeout time.Duration, connFunc func(addr, reqAddr net.Addr), errorFunc func(addr, reqAddr net.Addr, err error), ) (*TCPTProxy, error) { diff --git a/pkg/tproxy/tcp_stub.go b/app/tproxy/tcp_stub.go similarity index 74% rename from pkg/tproxy/tcp_stub.go rename to app/tproxy/tcp_stub.go index a4059b7..5f4f30d 100644 --- a/pkg/tproxy/tcp_stub.go +++ b/app/tproxy/tcp_stub.go @@ -8,12 +8,12 @@ import ( "net" "time" - "github.com/apernet/hysteria/pkg/core" + "github.com/apernet/hysteria/core/cs" ) type TCPTProxy struct{} -func NewTCPTProxy(hyClient *core.Client, listen string, timeout time.Duration, +func NewTCPTProxy(hyClient *cs.Client, listen string, timeout time.Duration, connFunc func(addr, reqAddr net.Addr), errorFunc func(addr, reqAddr net.Addr, err error), ) (*TCPTProxy, error) { diff --git a/pkg/tproxy/udp_linux.go b/app/tproxy/udp_linux.go similarity index 94% rename from pkg/tproxy/udp_linux.go rename to app/tproxy/udp_linux.go index daa6f7f..b67500d 100644 --- a/pkg/tproxy/udp_linux.go +++ b/app/tproxy/udp_linux.go @@ -5,13 +5,13 @@ import ( "time" "github.com/LiamHaworth/go-tproxy" - "github.com/apernet/hysteria/pkg/core" + "github.com/apernet/hysteria/core/cs" ) const udpBufferSize = 4096 type UDPTProxy struct { - HyClient *core.Client + HyClient *cs.Client ListenAddr *net.UDPAddr Timeout time.Duration @@ -19,7 +19,7 @@ type UDPTProxy struct { ErrorFunc func(addr, reqAddr net.Addr, err error) } -func NewUDPTProxy(hyClient *core.Client, listen string, timeout time.Duration, +func NewUDPTProxy(hyClient *cs.Client, listen string, timeout time.Duration, connFunc func(addr, reqAddr net.Addr), errorFunc func(addr, reqAddr net.Addr, err error), ) (*UDPTProxy, error) { diff --git a/pkg/tproxy/udp_stub.go b/app/tproxy/udp_stub.go similarity index 77% rename from pkg/tproxy/udp_stub.go rename to app/tproxy/udp_stub.go index c884953..d794dfb 100644 --- a/pkg/tproxy/udp_stub.go +++ b/app/tproxy/udp_stub.go @@ -8,14 +8,14 @@ import ( "net" "time" - "github.com/apernet/hysteria/pkg/core" + "github.com/apernet/hysteria/core/cs" ) var ErrTimeout = errors.New("inactivity timeout") type UDPTProxy struct{} -func NewUDPTProxy(hyClient *core.Client, listen string, timeout time.Duration, +func NewUDPTProxy(hyClient *cs.Client, listen string, timeout time.Duration, connFunc func(addr, reqAddr net.Addr), errorFunc func(addr, reqAddr net.Addr, err error), ) (*UDPTProxy, error) { return nil, errors.New("not supported on the current system") diff --git a/pkg/tun/server.go b/app/tun/server.go similarity index 93% rename from pkg/tun/server.go rename to app/tun/server.go index 337713c..297257b 100644 --- a/pkg/tun/server.go +++ b/app/tun/server.go @@ -14,7 +14,7 @@ import ( "github.com/xjasonlyu/tun2socks/v2/core/option" - "github.com/apernet/hysteria/pkg/core" + "github.com/apernet/hysteria/core/cs" "github.com/sirupsen/logrus" t2score "github.com/xjasonlyu/tun2socks/v2/core" "github.com/xjasonlyu/tun2socks/v2/core/adapter" @@ -27,7 +27,7 @@ import ( var _ adapter.TransportHandler = (*Server)(nil) type Server struct { - HyClient *core.Client + HyClient *cs.Client Timeout time.Duration DeviceInfo DeviceInfo @@ -66,7 +66,7 @@ func (d *DeviceInfo) Open() (dev device.Device, err error) { return } -func NewServerWithTunFd(hyClient *core.Client, timeout time.Duration, tunFd int, mtu uint32, +func NewServerWithTunFd(hyClient *cs.Client, timeout time.Duration, tunFd int, mtu uint32, tcpSendBufferSize, tcpReceiveBufferSize int, tcpModerateReceiveBuffer bool, ) (*Server, error) { if mtu == 0 { @@ -87,7 +87,7 @@ func NewServerWithTunFd(hyClient *core.Client, timeout time.Duration, tunFd int, return s, nil } -func NewServer(hyClient *core.Client, timeout time.Duration, name string, mtu uint32, +func NewServer(hyClient *cs.Client, timeout time.Duration, name string, mtu uint32, tcpSendBufferSize, tcpReceiveBufferSize int, tcpModerateReceiveBuffer bool, ) (*Server, error) { if mtu == 0 { diff --git a/pkg/tun/tcp.go b/app/tun/tcp.go similarity index 95% rename from pkg/tun/tcp.go rename to app/tun/tcp.go index 2b09ab8..7a59989 100644 --- a/pkg/tun/tcp.go +++ b/app/tun/tcp.go @@ -6,7 +6,7 @@ package tun import ( "net" - "github.com/apernet/hysteria/pkg/utils" + "github.com/apernet/hysteria/core/utils" "github.com/xjasonlyu/tun2socks/v2/core/adapter" ) diff --git a/pkg/tun/udp.go b/app/tun/udp.go similarity index 92% rename from pkg/tun/udp.go rename to app/tun/udp.go index d81309a..78f3f31 100644 --- a/pkg/tun/udp.go +++ b/app/tun/udp.go @@ -9,7 +9,7 @@ import ( "strconv" "time" - "github.com/apernet/hysteria/pkg/core" + "github.com/apernet/hysteria/core/cs" "github.com/xjasonlyu/tun2socks/v2/core/adapter" ) @@ -52,7 +52,7 @@ func (s *Server) handleUDPConn(conn adapter.UDPConn) { err = s.relayUDP(conn, rc, &remoteAddr, s.Timeout) } -func (s *Server) relayUDP(lc adapter.UDPConn, rc core.HyUDPConn, to *net.UDPAddr, timeout time.Duration) (err error) { +func (s *Server) relayUDP(lc adapter.UDPConn, rc cs.HyUDPConn, to *net.UDPAddr, timeout time.Duration) (err error) { errChan := make(chan error, 2) // local => remote go func() { diff --git a/build.ps1 b/build.ps1 index 462beb5..e97014c 100644 --- a/build.ps1 +++ b/build.ps1 @@ -59,7 +59,7 @@ foreach ($platform in $platforms) { if ($env:GOOS -eq "windows") { $output = "$output.exe" } - go build -o $output -tags=gpl -ldflags $ldflags -trimpath ./cmd/ + go build -o $output -tags=gpl -ldflags $ldflags -trimpath ./app/cmd/ if ($LastExitCode -ne 0) { Write-Host "Error: failed to build $env:GOOS/$env:GOARCH" -ForegroundColor Red exit 1 diff --git a/build.sh b/build.sh index 1c36dcb..1a4f5fa 100755 --- a/build.sh +++ b/build.sh @@ -52,7 +52,7 @@ for platform in "${platforms[@]}"; do if [ $GOOS = "windows" ]; then output="$output.exe" fi - env GOOS=$GOOS GOARCH=$GOARCH CGO_ENABLED=0 go build -o $output -tags=gpl -ldflags "$ldflags" -trimpath ./cmd/ + env GOOS=$GOOS GOARCH=$GOARCH CGO_ENABLED=0 go build -o $output -tags=gpl -ldflags "$ldflags" -trimpath ./app/cmd/ if [ $? -ne 0 ]; then echo "Error: failed to build $GOOS/$GOARCH" exit 1 diff --git a/pkg/acl/engine.go b/core/acl/engine.go similarity index 98% rename from pkg/acl/engine.go rename to core/acl/engine.go index 95f2b3c..679c971 100644 --- a/pkg/acl/engine.go +++ b/core/acl/engine.go @@ -8,7 +8,7 @@ import ( lru "github.com/hashicorp/golang-lru/v2" - "github.com/apernet/hysteria/pkg/utils" + "github.com/apernet/hysteria/core/utils" "github.com/oschwald/geoip2-golang" ) diff --git a/pkg/acl/engine_test.go b/core/acl/engine_test.go similarity index 100% rename from pkg/acl/engine_test.go rename to core/acl/engine_test.go diff --git a/pkg/acl/entry.go b/core/acl/entry.go similarity index 100% rename from pkg/acl/entry.go rename to core/acl/entry.go diff --git a/pkg/acl/entry_test.go b/core/acl/entry_test.go similarity index 100% rename from pkg/acl/entry_test.go rename to core/acl/entry_test.go diff --git a/pkg/congestion/brutal.go b/core/congestion/brutal.go similarity index 100% rename from pkg/congestion/brutal.go rename to core/congestion/brutal.go diff --git a/pkg/congestion/pacer.go b/core/congestion/pacer.go similarity index 100% rename from pkg/congestion/pacer.go rename to core/congestion/pacer.go diff --git a/pkg/core/client.go b/core/cs/client.go similarity index 98% rename from pkg/core/client.go rename to core/cs/client.go index f6dc0ca..971d312 100644 --- a/pkg/core/client.go +++ b/core/cs/client.go @@ -1,4 +1,4 @@ -package core +package cs import ( "bytes" @@ -12,12 +12,12 @@ import ( "sync" "time" - "github.com/apernet/hysteria/pkg/pktconns" + "github.com/apernet/hysteria/core/pktconns" - "github.com/apernet/hysteria/pkg/congestion" + "github.com/apernet/hysteria/core/congestion" - "github.com/apernet/hysteria/pkg/pmtud" - "github.com/apernet/hysteria/pkg/utils" + "github.com/apernet/hysteria/core/pmtud" + "github.com/apernet/hysteria/core/utils" "github.com/lucas-clemente/quic-go" "github.com/lunixbochs/struc" ) diff --git a/pkg/core/frag.go b/core/cs/frag.go similarity index 99% rename from pkg/core/frag.go rename to core/cs/frag.go index 7a38774..c9e491d 100644 --- a/pkg/core/frag.go +++ b/core/cs/frag.go @@ -1,4 +1,4 @@ -package core +package cs func fragUDPMessage(m udpMessage, maxSize int) []udpMessage { if m.Size() <= maxSize { diff --git a/pkg/core/frag_test.go b/core/cs/frag_test.go similarity index 99% rename from pkg/core/frag_test.go rename to core/cs/frag_test.go index aa1c616..b0c27cb 100644 --- a/pkg/core/frag_test.go +++ b/core/cs/frag_test.go @@ -1,4 +1,4 @@ -package core +package cs import ( "reflect" diff --git a/pkg/core/protocol.go b/core/cs/protocol.go similarity index 99% rename from pkg/core/protocol.go rename to core/cs/protocol.go index 6359ff9..2c1cef9 100644 --- a/pkg/core/protocol.go +++ b/core/cs/protocol.go @@ -1,4 +1,4 @@ -package core +package cs import ( "time" diff --git a/pkg/core/server.go b/core/cs/server.go similarity index 96% rename from pkg/core/server.go rename to core/cs/server.go index 8b30952..230903d 100644 --- a/pkg/core/server.go +++ b/core/cs/server.go @@ -1,4 +1,4 @@ -package core +package cs import ( "context" @@ -7,11 +7,11 @@ import ( "fmt" "net" - "github.com/apernet/hysteria/pkg/congestion" + "github.com/apernet/hysteria/core/congestion" - "github.com/apernet/hysteria/pkg/acl" - "github.com/apernet/hysteria/pkg/pmtud" - "github.com/apernet/hysteria/pkg/transport" + "github.com/apernet/hysteria/core/acl" + "github.com/apernet/hysteria/core/pmtud" + "github.com/apernet/hysteria/core/transport" "github.com/lucas-clemente/quic-go" "github.com/lunixbochs/struc" "github.com/prometheus/client_golang/prometheus" diff --git a/pkg/core/server_client.go b/core/cs/server_client.go similarity index 98% rename from pkg/core/server_client.go rename to core/cs/server_client.go index 893c7aa..4d2c9f6 100644 --- a/pkg/core/server_client.go +++ b/core/cs/server_client.go @@ -1,4 +1,4 @@ -package core +package cs import ( "bytes" @@ -9,9 +9,9 @@ import ( "strconv" "sync" - "github.com/apernet/hysteria/pkg/acl" - "github.com/apernet/hysteria/pkg/transport" - "github.com/apernet/hysteria/pkg/utils" + "github.com/apernet/hysteria/core/acl" + "github.com/apernet/hysteria/core/transport" + "github.com/apernet/hysteria/core/utils" "github.com/lucas-clemente/quic-go" "github.com/lunixbochs/struc" "github.com/prometheus/client_golang/prometheus" diff --git a/pkg/core/stream.go b/core/cs/stream.go similarity index 99% rename from pkg/core/stream.go rename to core/cs/stream.go index 65259e4..8670470 100644 --- a/pkg/core/stream.go +++ b/core/cs/stream.go @@ -1,4 +1,4 @@ -package core +package cs import ( "context" diff --git a/pkg/pktconns/faketcp/LICENSE b/core/pktconns/faketcp/LICENSE similarity index 100% rename from pkg/pktconns/faketcp/LICENSE rename to core/pktconns/faketcp/LICENSE diff --git a/pkg/pktconns/faketcp/obfs.go b/core/pktconns/faketcp/obfs.go similarity index 97% rename from pkg/pktconns/faketcp/obfs.go rename to core/pktconns/faketcp/obfs.go index f8d89f9..ead2281 100644 --- a/pkg/pktconns/faketcp/obfs.go +++ b/core/pktconns/faketcp/obfs.go @@ -6,7 +6,7 @@ import ( "syscall" "time" - "github.com/apernet/hysteria/pkg/pktconns/obfs" + "github.com/apernet/hysteria/core/pktconns/obfs" ) const udpBufferSize = 4096 diff --git a/pkg/pktconns/faketcp/tcp_linux.go b/core/pktconns/faketcp/tcp_linux.go similarity index 100% rename from pkg/pktconns/faketcp/tcp_linux.go rename to core/pktconns/faketcp/tcp_linux.go diff --git a/pkg/pktconns/faketcp/tcp_stub.go b/core/pktconns/faketcp/tcp_stub.go similarity index 100% rename from pkg/pktconns/faketcp/tcp_stub.go rename to core/pktconns/faketcp/tcp_stub.go diff --git a/pkg/pktconns/faketcp/tcp_test.go b/core/pktconns/faketcp/tcp_test.go similarity index 100% rename from pkg/pktconns/faketcp/tcp_test.go rename to core/pktconns/faketcp/tcp_test.go diff --git a/pkg/pktconns/funcs.go b/core/pktconns/funcs.go similarity index 96% rename from pkg/pktconns/funcs.go rename to core/pktconns/funcs.go index 23427c4..b0675f1 100644 --- a/pkg/pktconns/funcs.go +++ b/core/pktconns/funcs.go @@ -5,10 +5,10 @@ import ( "strings" "time" - "github.com/apernet/hysteria/pkg/pktconns/faketcp" - "github.com/apernet/hysteria/pkg/pktconns/obfs" - "github.com/apernet/hysteria/pkg/pktconns/udp" - "github.com/apernet/hysteria/pkg/pktconns/wechat" + "github.com/apernet/hysteria/core/pktconns/faketcp" + "github.com/apernet/hysteria/core/pktconns/obfs" + "github.com/apernet/hysteria/core/pktconns/udp" + "github.com/apernet/hysteria/core/pktconns/wechat" ) type ( diff --git a/pkg/pktconns/obfs/obfs.go b/core/pktconns/obfs/obfs.go similarity index 100% rename from pkg/pktconns/obfs/obfs.go rename to core/pktconns/obfs/obfs.go diff --git a/pkg/pktconns/obfs/obfs_test.go b/core/pktconns/obfs/obfs_test.go similarity index 100% rename from pkg/pktconns/obfs/obfs_test.go rename to core/pktconns/obfs/obfs_test.go diff --git a/pkg/pktconns/udp/hop.go b/core/pktconns/udp/hop.go similarity index 99% rename from pkg/pktconns/udp/hop.go rename to core/pktconns/udp/hop.go index e1e4f9e..4458131 100644 --- a/pkg/pktconns/udp/hop.go +++ b/core/pktconns/udp/hop.go @@ -10,7 +10,7 @@ import ( "syscall" "time" - "github.com/apernet/hysteria/pkg/pktconns/obfs" + "github.com/apernet/hysteria/core/pktconns/obfs" ) const ( diff --git a/pkg/pktconns/udp/hop_test.go b/core/pktconns/udp/hop_test.go similarity index 100% rename from pkg/pktconns/udp/hop_test.go rename to core/pktconns/udp/hop_test.go diff --git a/pkg/pktconns/udp/obfs.go b/core/pktconns/udp/obfs.go similarity index 97% rename from pkg/pktconns/udp/obfs.go rename to core/pktconns/udp/obfs.go index 7aee8a9..9f1165e 100644 --- a/pkg/pktconns/udp/obfs.go +++ b/core/pktconns/udp/obfs.go @@ -7,7 +7,7 @@ import ( "syscall" "time" - "github.com/apernet/hysteria/pkg/pktconns/obfs" + "github.com/apernet/hysteria/core/pktconns/obfs" ) const udpBufferSize = 4096 diff --git a/pkg/pktconns/wechat/obfs.go b/core/pktconns/wechat/obfs.go similarity index 98% rename from pkg/pktconns/wechat/obfs.go rename to core/pktconns/wechat/obfs.go index 62a4d6b..e6935f7 100644 --- a/pkg/pktconns/wechat/obfs.go +++ b/core/pktconns/wechat/obfs.go @@ -9,7 +9,7 @@ import ( "syscall" "time" - "github.com/apernet/hysteria/pkg/pktconns/obfs" + "github.com/apernet/hysteria/core/pktconns/obfs" ) const udpBufferSize = 4096 diff --git a/pkg/pmtud/avail.go b/core/pmtud/avail.go similarity index 100% rename from pkg/pmtud/avail.go rename to core/pmtud/avail.go diff --git a/pkg/pmtud/unavail.go b/core/pmtud/unavail.go similarity index 100% rename from pkg/pmtud/unavail.go rename to core/pmtud/unavail.go diff --git a/pkg/sockopt/sockopt.go b/core/sockopt/sockopt.go similarity index 100% rename from pkg/sockopt/sockopt.go rename to core/sockopt/sockopt.go diff --git a/pkg/sockopt/sockopt_linux.go b/core/sockopt/sockopt_linux.go similarity index 100% rename from pkg/sockopt/sockopt_linux.go rename to core/sockopt/sockopt_linux.go diff --git a/pkg/sockopt/sockopt_others.go b/core/sockopt/sockopt_others.go similarity index 100% rename from pkg/sockopt/sockopt_others.go rename to core/sockopt/sockopt_others.go diff --git a/pkg/transport/client.go b/core/transport/client.go similarity index 100% rename from pkg/transport/client.go rename to core/transport/client.go diff --git a/pkg/transport/resolve.go b/core/transport/resolve.go similarity index 100% rename from pkg/transport/resolve.go rename to core/transport/resolve.go diff --git a/pkg/transport/server.go b/core/transport/server.go similarity index 96% rename from pkg/transport/server.go rename to core/transport/server.go index b32f7e9..dee4af2 100644 --- a/pkg/transport/server.go +++ b/core/transport/server.go @@ -5,8 +5,8 @@ import ( "strconv" "time" - "github.com/apernet/hysteria/pkg/sockopt" - "github.com/apernet/hysteria/pkg/utils" + "github.com/apernet/hysteria/core/sockopt" + "github.com/apernet/hysteria/core/utils" ) type ServerTransport struct { diff --git a/pkg/transport/socks5.go b/core/transport/socks5.go similarity index 100% rename from pkg/transport/socks5.go rename to core/transport/socks5.go diff --git a/pkg/utils/misc.go b/core/utils/misc.go similarity index 100% rename from pkg/utils/misc.go rename to core/utils/misc.go diff --git a/pkg/utils/pipe.go b/core/utils/pipe.go similarity index 100% rename from pkg/utils/pipe.go rename to core/utils/pipe.go