Hunter0x7c7
2022-08-11 a82f9cb69f63aaeba40c024960deda7d75b9fece
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package http
 
import (
    "github.com/v2fly/v2ray-core/v5/common"
    "github.com/v2fly/v2ray-core/v5/common/dice"
    "github.com/v2fly/v2ray-core/v5/transport/internet"
)
 
const protocolName = "http"
 
func (c *Config) getHosts() []string {
    if len(c.Host) == 0 {
        return []string{"www.example.com"}
    }
    return c.Host
}
 
func (c *Config) isValidHost(host string) bool {
    hosts := c.getHosts()
    for _, h := range hosts {
        if h == host {
            return true
        }
    }
    return false
}
 
func (c *Config) getRandomHost() string {
    hosts := c.getHosts()
    return hosts[dice.Roll(len(hosts))]
}
 
func (c *Config) getNormalizedPath() string {
    if c.Path == "" {
        return "/"
    }
    if c.Path[0] != '/' {
        return "/" + c.Path
    }
    return c.Path
}
 
func init() {
    common.Must(internet.RegisterProtocolConfigCreator(protocolName, func() interface{} {
        return new(Config)
    }))
}