mirror of
https://github.com/XTLS/Xray-core.git
synced 2024-11-04 14:13:03 +00:00
Remove compatibility code
The minimum support go version is already 1.18
This commit is contained in:
parent
84537e98c4
commit
debd2e3ba8
@ -1,5 +1,3 @@
|
|||||||
//go:build go1.18
|
|
||||||
|
|
||||||
package outbound
|
package outbound
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
//go:build !go1.18
|
|
||||||
|
|
||||||
package outbound
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/xtls/xray-core/common/net"
|
|
||||||
"github.com/xtls/xray-core/transport/internet/stat"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (h *Handler) getUoTConnection(ctx context.Context, dest net.Destination) (stat.Connection, error) {
|
|
||||||
return nil, os.ErrInvalid
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
//go:build go1.16 && !go1.17
|
|
||||||
// +build go1.16,!go1.17
|
|
||||||
|
|
||||||
package quic
|
|
||||||
|
|
||||||
import (
|
|
||||||
"crypto/cipher"
|
|
||||||
|
|
||||||
"github.com/marten-seemann/qtls-go1-16"
|
|
||||||
)
|
|
||||||
|
|
||||||
type (
|
|
||||||
// A CipherSuiteTLS13 is a cipher suite for TLS 1.3
|
|
||||||
CipherSuiteTLS13 = qtls.CipherSuiteTLS13
|
|
||||||
)
|
|
||||||
|
|
||||||
func AEADAESGCMTLS13(key, fixedNonce []byte) cipher.AEAD {
|
|
||||||
return qtls.AEADAESGCMTLS13(key, fixedNonce)
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
//go:build go1.17 && !go1.18
|
|
||||||
// +build go1.17,!go1.18
|
|
||||||
|
|
||||||
package quic
|
|
||||||
|
|
||||||
import (
|
|
||||||
"crypto/cipher"
|
|
||||||
|
|
||||||
"github.com/marten-seemann/qtls-go1-17"
|
|
||||||
)
|
|
||||||
|
|
||||||
type (
|
|
||||||
// A CipherSuiteTLS13 is a cipher suite for TLS 1.3
|
|
||||||
CipherSuiteTLS13 = qtls.CipherSuiteTLS13
|
|
||||||
)
|
|
||||||
|
|
||||||
func AEADAESGCMTLS13(key, fixedNonce []byte) cipher.AEAD {
|
|
||||||
return qtls.AEADAESGCMTLS13(key, fixedNonce)
|
|
||||||
}
|
|
@ -1,6 +1,3 @@
|
|||||||
//go:build go1.18
|
|
||||||
// +build go1.18
|
|
||||||
|
|
||||||
package quic
|
package quic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
//go:build go1.18
|
|
||||||
|
|
||||||
package conf
|
package conf
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,154 +0,0 @@
|
|||||||
//go:build !go1.18
|
|
||||||
|
|
||||||
package conf
|
|
||||||
|
|
||||||
import (
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
|
||||||
"github.com/xtls/xray-core/common/protocol"
|
|
||||||
"github.com/xtls/xray-core/common/serial"
|
|
||||||
"github.com/xtls/xray-core/proxy/shadowsocks"
|
|
||||||
)
|
|
||||||
|
|
||||||
func cipherFromString(c string) shadowsocks.CipherType {
|
|
||||||
switch strings.ToLower(c) {
|
|
||||||
case "aes-128-gcm", "aead_aes_128_gcm":
|
|
||||||
return shadowsocks.CipherType_AES_128_GCM
|
|
||||||
case "aes-256-gcm", "aead_aes_256_gcm":
|
|
||||||
return shadowsocks.CipherType_AES_256_GCM
|
|
||||||
case "chacha20-poly1305", "aead_chacha20_poly1305", "chacha20-ietf-poly1305":
|
|
||||||
return shadowsocks.CipherType_CHACHA20_POLY1305
|
|
||||||
case "xchacha20-poly1305", "aead_xchacha20_poly1305", "xchacha20-ietf-poly1305":
|
|
||||||
return shadowsocks.CipherType_XCHACHA20_POLY1305
|
|
||||||
case "none", "plain":
|
|
||||||
return shadowsocks.CipherType_NONE
|
|
||||||
default:
|
|
||||||
return shadowsocks.CipherType_UNKNOWN
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type ShadowsocksUserConfig struct {
|
|
||||||
Cipher string `json:"method"`
|
|
||||||
Password string `json:"password"`
|
|
||||||
Level byte `json:"level"`
|
|
||||||
Email string `json:"email"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ShadowsocksServerConfig struct {
|
|
||||||
Cipher string `json:"method"`
|
|
||||||
Password string `json:"password"`
|
|
||||||
Level byte `json:"level"`
|
|
||||||
Email string `json:"email"`
|
|
||||||
Users []*ShadowsocksUserConfig `json:"clients"`
|
|
||||||
NetworkList *NetworkList `json:"network"`
|
|
||||||
IVCheck bool `json:"ivCheck"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *ShadowsocksServerConfig) Build() (proto.Message, error) {
|
|
||||||
config := new(shadowsocks.ServerConfig)
|
|
||||||
config.Network = v.NetworkList.Build()
|
|
||||||
|
|
||||||
if v.Users != nil {
|
|
||||||
for _, user := range v.Users {
|
|
||||||
account := &shadowsocks.Account{
|
|
||||||
Password: user.Password,
|
|
||||||
CipherType: cipherFromString(user.Cipher),
|
|
||||||
IvCheck: v.IVCheck,
|
|
||||||
}
|
|
||||||
if account.Password == "" {
|
|
||||||
return nil, newError("Shadowsocks password is not specified.")
|
|
||||||
}
|
|
||||||
if account.CipherType < shadowsocks.CipherType_AES_128_GCM ||
|
|
||||||
account.CipherType > shadowsocks.CipherType_XCHACHA20_POLY1305 {
|
|
||||||
return nil, newError("unsupported cipher method: ", user.Cipher)
|
|
||||||
}
|
|
||||||
config.Users = append(config.Users, &protocol.User{
|
|
||||||
Email: user.Email,
|
|
||||||
Level: uint32(user.Level),
|
|
||||||
Account: serial.ToTypedMessage(account),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
account := &shadowsocks.Account{
|
|
||||||
Password: v.Password,
|
|
||||||
CipherType: cipherFromString(v.Cipher),
|
|
||||||
IvCheck: v.IVCheck,
|
|
||||||
}
|
|
||||||
if account.Password == "" {
|
|
||||||
return nil, newError("Shadowsocks password is not specified.")
|
|
||||||
}
|
|
||||||
if account.CipherType == shadowsocks.CipherType_UNKNOWN {
|
|
||||||
return nil, newError("unknown cipher method: ", v.Cipher)
|
|
||||||
}
|
|
||||||
config.Users = append(config.Users, &protocol.User{
|
|
||||||
Email: v.Email,
|
|
||||||
Level: uint32(v.Level),
|
|
||||||
Account: serial.ToTypedMessage(account),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return config, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type ShadowsocksServerTarget struct {
|
|
||||||
Address *Address `json:"address"`
|
|
||||||
Port uint16 `json:"port"`
|
|
||||||
Cipher string `json:"method"`
|
|
||||||
Password string `json:"password"`
|
|
||||||
Email string `json:"email"`
|
|
||||||
Level byte `json:"level"`
|
|
||||||
IVCheck bool `json:"ivCheck"`
|
|
||||||
UoT bool `json:"uot"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ShadowsocksClientConfig struct {
|
|
||||||
Servers []*ShadowsocksServerTarget `json:"servers"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *ShadowsocksClientConfig) Build() (proto.Message, error) {
|
|
||||||
if len(v.Servers) == 0 {
|
|
||||||
return nil, newError("0 Shadowsocks server configured.")
|
|
||||||
}
|
|
||||||
|
|
||||||
config := new(shadowsocks.ClientConfig)
|
|
||||||
serverSpecs := make([]*protocol.ServerEndpoint, len(v.Servers))
|
|
||||||
for idx, server := range v.Servers {
|
|
||||||
if server.Address == nil {
|
|
||||||
return nil, newError("Shadowsocks server address is not set.")
|
|
||||||
}
|
|
||||||
if server.Port == 0 {
|
|
||||||
return nil, newError("Invalid Shadowsocks port.")
|
|
||||||
}
|
|
||||||
if server.Password == "" {
|
|
||||||
return nil, newError("Shadowsocks password is not specified.")
|
|
||||||
}
|
|
||||||
account := &shadowsocks.Account{
|
|
||||||
Password: server.Password,
|
|
||||||
}
|
|
||||||
account.CipherType = cipherFromString(server.Cipher)
|
|
||||||
if account.CipherType == shadowsocks.CipherType_UNKNOWN {
|
|
||||||
return nil, newError("unknown cipher method: ", server.Cipher)
|
|
||||||
}
|
|
||||||
|
|
||||||
account.IvCheck = server.IVCheck
|
|
||||||
|
|
||||||
ss := &protocol.ServerEndpoint{
|
|
||||||
Address: server.Address.Build(),
|
|
||||||
Port: uint32(server.Port),
|
|
||||||
User: []*protocol.User{
|
|
||||||
{
|
|
||||||
Level: uint32(server.Level),
|
|
||||||
Email: server.Email,
|
|
||||||
Account: serial.ToTypedMessage(account),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
serverSpecs[idx] = ss
|
|
||||||
}
|
|
||||||
|
|
||||||
config.Server = serverSpecs
|
|
||||||
|
|
||||||
return config, nil
|
|
||||||
}
|
|
@ -1,5 +1,3 @@
|
|||||||
//go:build go1.18
|
|
||||||
|
|
||||||
package shadowsocks_2022
|
package shadowsocks_2022
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
//go:build go1.18
|
|
||||||
|
|
||||||
package shadowsocks_2022
|
package shadowsocks_2022
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
//go:build go1.18
|
|
||||||
|
|
||||||
package shadowsocks_2022
|
package shadowsocks_2022
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
//go:build go1.18
|
|
||||||
|
|
||||||
package shadowsocks_2022
|
package shadowsocks_2022
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
Loading…
Reference in New Issue
Block a user