mirror of
https://github.com/apernet/hysteria.git
synced 2025-04-03 04:27:39 +03:00
189 lines
4.3 KiB
Go
189 lines
4.3 KiB
Go
package cmd
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
// TestServerConfig tests the parsing of the server config
|
|
func TestServerConfig(t *testing.T) {
|
|
viper.SetConfigFile("server_test.yaml")
|
|
err := viper.ReadInConfig()
|
|
assert.NoError(t, err)
|
|
var config serverConfig
|
|
err = viper.Unmarshal(&config)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, config, serverConfig{
|
|
Listen: ":8443",
|
|
Obfs: serverConfigObfs{
|
|
Type: "salamander",
|
|
Salamander: serverConfigObfsSalamander{
|
|
Password: "cry_me_a_r1ver",
|
|
},
|
|
},
|
|
TLS: &serverConfigTLS{
|
|
Cert: "some.crt",
|
|
Key: "some.key",
|
|
SNIGuard: "strict",
|
|
},
|
|
ACME: &serverConfigACME{
|
|
Domains: []string{
|
|
"sub1.example.com",
|
|
"sub2.example.com",
|
|
},
|
|
Email: "haha@cringe.net",
|
|
CA: "zero",
|
|
ListenHost: "127.0.0.9",
|
|
Dir: "random_dir",
|
|
Type: "dns",
|
|
HTTP: serverConfigACMEHTTP{
|
|
AltPort: 8888,
|
|
},
|
|
TLS: serverConfigACMETLS{
|
|
AltPort: 44333,
|
|
},
|
|
DNS: serverConfigACMEDNS{
|
|
Name: "gomommy",
|
|
Config: map[string]string{
|
|
"key1": "value1",
|
|
"key2": "value2",
|
|
},
|
|
},
|
|
DisableHTTP: true,
|
|
DisableTLSALPN: true,
|
|
AltHTTPPort: 8080,
|
|
AltTLSALPNPort: 4433,
|
|
},
|
|
QUIC: serverConfigQUIC{
|
|
InitStreamReceiveWindow: 77881,
|
|
MaxStreamReceiveWindow: 77882,
|
|
InitConnectionReceiveWindow: 77883,
|
|
MaxConnectionReceiveWindow: 77884,
|
|
MaxIdleTimeout: 999 * time.Second,
|
|
MaxIncomingStreams: 256,
|
|
DisablePathMTUDiscovery: true,
|
|
},
|
|
Bandwidth: serverConfigBandwidth{
|
|
Up: "500 mbps",
|
|
Down: "100 mbps",
|
|
},
|
|
IgnoreClientBandwidth: true,
|
|
SpeedTest: true,
|
|
DisableUDP: true,
|
|
UDPIdleTimeout: 120 * time.Second,
|
|
Auth: serverConfigAuth{
|
|
Type: "password",
|
|
Password: "goofy_ahh_password",
|
|
UserPass: map[string]string{
|
|
"yolo": "swag",
|
|
"lol": "kek",
|
|
"foo": "bar",
|
|
},
|
|
HTTP: serverConfigAuthHTTP{
|
|
URL: "http://127.0.0.1:5000/auth",
|
|
Insecure: true,
|
|
},
|
|
Command: "/etc/some_command",
|
|
},
|
|
Resolver: serverConfigResolver{
|
|
Type: "udp",
|
|
TCP: serverConfigResolverTCP{
|
|
Addr: "123.123.123.123:5353",
|
|
Timeout: 4 * time.Second,
|
|
},
|
|
UDP: serverConfigResolverUDP{
|
|
Addr: "4.6.8.0:53",
|
|
Timeout: 2 * time.Second,
|
|
},
|
|
TLS: serverConfigResolverTLS{
|
|
Addr: "dot.yolo.com:8853",
|
|
Timeout: 10 * time.Second,
|
|
SNI: "server1.yolo.net",
|
|
Insecure: true,
|
|
},
|
|
HTTPS: serverConfigResolverHTTPS{
|
|
Addr: "cringe.ahh.cc",
|
|
Timeout: 5 * time.Second,
|
|
SNI: "real.stuff.net",
|
|
Insecure: true,
|
|
},
|
|
},
|
|
Sniff: serverConfigSniff{
|
|
Enable: true,
|
|
Timeout: 1 * time.Second,
|
|
RewriteDomain: true,
|
|
TCPPorts: "80,443,1000-2000",
|
|
UDPPorts: "443",
|
|
},
|
|
ACL: serverConfigACL{
|
|
File: "chnroute.txt",
|
|
Inline: []string{
|
|
"lmao(ok)",
|
|
"kek(cringe,boba,tea)",
|
|
},
|
|
GeoIP: "some.dat",
|
|
GeoSite: "some_site.dat",
|
|
GeoUpdateInterval: 168 * time.Hour,
|
|
},
|
|
Outbounds: []serverConfigOutboundEntry{
|
|
{
|
|
Name: "goodstuff",
|
|
Type: "direct",
|
|
Direct: serverConfigOutboundDirect{
|
|
Mode: "64",
|
|
BindIPv4: "2.4.6.8",
|
|
BindIPv6: "0:0:0:0:0:ffff:0204:0608",
|
|
BindDevice: "eth233",
|
|
FastOpen: true,
|
|
},
|
|
},
|
|
{
|
|
Name: "badstuff",
|
|
Type: "socks5",
|
|
SOCKS5: serverConfigOutboundSOCKS5{
|
|
Addr: "shady.proxy.ru:1080",
|
|
Username: "hackerman",
|
|
Password: "Elliot Alderson",
|
|
},
|
|
},
|
|
{
|
|
Name: "weirdstuff",
|
|
Type: "http",
|
|
HTTP: serverConfigOutboundHTTP{
|
|
URL: "https://eyy.lmao:4443/goofy",
|
|
Insecure: true,
|
|
},
|
|
},
|
|
},
|
|
TrafficStats: serverConfigTrafficStats{
|
|
Listen: ":9999",
|
|
Secret: "its_me_mario",
|
|
},
|
|
Masquerade: serverConfigMasquerade{
|
|
Type: "proxy",
|
|
File: serverConfigMasqueradeFile{
|
|
Dir: "/www/masq",
|
|
},
|
|
Proxy: serverConfigMasqueradeProxy{
|
|
URL: "https://some.site.net",
|
|
RewriteHost: true,
|
|
Insecure: true,
|
|
},
|
|
String: serverConfigMasqueradeString{
|
|
Content: "aint nothin here",
|
|
Headers: map[string]string{
|
|
"content-type": "text/plain",
|
|
"custom-haha": "lol",
|
|
},
|
|
StatusCode: 418,
|
|
},
|
|
ListenHTTP: ":80",
|
|
ListenHTTPS: ":443",
|
|
ForceHTTPS: true,
|
|
},
|
|
})
|
|
}
|