| 123456789101112131415161718192021222324252627282930313233343536373839 |
- package domainsocket
- import (
- "github.com/xtls/xray-core/common"
- "github.com/xtls/xray-core/common/errors"
- "github.com/xtls/xray-core/common/net"
- "github.com/xtls/xray-core/transport/internet"
- )
- const (
- protocolName = "domainsocket"
- sizeofSunPath = 108
- )
- func (c *Config) GetUnixAddr() (*net.UnixAddr, error) {
- path := c.Path
- if path == "" {
- return nil, errors.New("empty domain socket path")
- }
- if c.Abstract && path[0] != '@' {
- path = "@" + path
- }
- if c.Abstract && c.Padding {
- raw := []byte(path)
- addr := make([]byte, sizeofSunPath)
- copy(addr, raw)
- path = string(addr)
- }
- return &net.UnixAddr{
- Name: path,
- Net: "unix",
- }, nil
- }
- func init() {
- common.Must(internet.RegisterProtocolConfigCreator(protocolName, func() interface{} {
- return new(Config)
- }))
- }
|