Restructure repo around sing-box-rr package layout
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
CertificateStoreSystem = "system"
|
||||
CertificateStoreMozilla = "mozilla"
|
||||
CertificateStoreChrome = "chrome"
|
||||
CertificateStoreNone = "none"
|
||||
)
|
||||
@@ -0,0 +1,5 @@
|
||||
//go:build cgo
|
||||
|
||||
package constant
|
||||
|
||||
const CGO_ENABLED = true
|
||||
@@ -0,0 +1,5 @@
|
||||
//go:build !cgo
|
||||
|
||||
package constant
|
||||
|
||||
const CGO_ENABLED = false
|
||||
@@ -0,0 +1,8 @@
|
||||
package constant
|
||||
|
||||
import "time"
|
||||
|
||||
const (
|
||||
DHCPTTL = time.Hour
|
||||
DHCPTimeout = 5 * time.Second
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
DefaultDNSTTL = 600
|
||||
)
|
||||
|
||||
type DomainStrategy = uint8
|
||||
|
||||
const (
|
||||
DomainStrategyAsIS DomainStrategy = iota
|
||||
DomainStrategyPreferIPv4
|
||||
DomainStrategyPreferIPv6
|
||||
DomainStrategyIPv4Only
|
||||
DomainStrategyIPv6Only
|
||||
)
|
||||
|
||||
const (
|
||||
DNSTypeLegacy = "legacy"
|
||||
DNSTypeLegacyRcode = "legacy_rcode"
|
||||
DNSTypeUDP = "udp"
|
||||
DNSTypeTCP = "tcp"
|
||||
DNSTypeTLS = "tls"
|
||||
DNSTypeHTTPS = "https"
|
||||
DNSTypeQUIC = "quic"
|
||||
DNSTypeHTTP3 = "h3"
|
||||
DNSTypeLocal = "local"
|
||||
DNSTypeHosts = "hosts"
|
||||
DNSTypeFakeIP = "fakeip"
|
||||
DNSTypeDHCP = "dhcp"
|
||||
DNSTypeTailscale = "tailscale"
|
||||
DNSTypeSDNS = "sdns"
|
||||
DNSTypeFallback = "fallback"
|
||||
)
|
||||
|
||||
const (
|
||||
DNSProviderAliDNS = "alidns"
|
||||
DNSProviderCloudflare = "cloudflare"
|
||||
DNSProviderACMEDNS = "acmedns"
|
||||
)
|
||||
@@ -0,0 +1,7 @@
|
||||
package constant
|
||||
|
||||
import E "github.com/sagernet/sing/common/exceptions"
|
||||
|
||||
var ErrTLSRequired = E.New("TLS required")
|
||||
|
||||
var ErrQUICNotIncluded = E.New(`QUIC is not included in this build, rebuild with -tags with_quic`)
|
||||
@@ -0,0 +1,68 @@
|
||||
// Copyright 2014 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build ignore
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var gooses []string
|
||||
|
||||
func main() {
|
||||
data, err := os.ReadFile("../../go/build/syslist.go")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
const goosPrefix = `const goosList = `
|
||||
for _, line := range strings.Split(string(data), "\n") {
|
||||
if strings.HasPrefix(line, goosPrefix) {
|
||||
text, err := strconv.Unquote(strings.TrimPrefix(line, goosPrefix))
|
||||
if err != nil {
|
||||
log.Fatalf("parsing goosList: %v", err)
|
||||
}
|
||||
gooses = strings.Fields(text)
|
||||
}
|
||||
}
|
||||
|
||||
for _, target := range gooses {
|
||||
if target == "nacl" {
|
||||
continue
|
||||
}
|
||||
var tags []string
|
||||
if target == "linux" {
|
||||
tags = append(tags, "!android") // must explicitly exclude android for linux
|
||||
}
|
||||
if target == "solaris" {
|
||||
tags = append(tags, "!illumos") // must explicitly exclude illumos for solaris
|
||||
}
|
||||
if target == "darwin" {
|
||||
tags = append(tags, "!ios") // must explicitly exclude ios for darwin
|
||||
}
|
||||
tags = append(tags, target) // must explicitly include target for bootstrapping purposes
|
||||
var buf bytes.Buffer
|
||||
fmt.Fprintf(&buf, "// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.\n\n")
|
||||
fmt.Fprintf(&buf, "//go:build %s\n", strings.Join(tags, " && "))
|
||||
fmt.Fprintf(&buf, "package goos\n\n")
|
||||
fmt.Fprintf(&buf, "const GOOS = `%s`\n\n", target)
|
||||
for _, goos := range gooses {
|
||||
value := 0
|
||||
if goos == target {
|
||||
value = 1
|
||||
}
|
||||
fmt.Fprintf(&buf, "const Is%s = %d\n", strings.Title(goos), value)
|
||||
}
|
||||
err := os.WriteFile("zgoos_"+target+".go", buf.Bytes(), 0o666)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// Copyright 2015 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// package goos contains GOOS-specific constants.
|
||||
package goos
|
||||
|
||||
// The next line makes 'go generate' write the zgoos*.go files with
|
||||
// per-OS information, including constants named Is$GOOS for every
|
||||
// known GOOS. The constant is 1 on the current system, 0 otherwise;
|
||||
// multiplying by them is useful for defining GOOS-specific constants.
|
||||
//go:generate go run gengoos.go
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build aix
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `aix`
|
||||
|
||||
const IsAix = 1
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build android
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `android`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 1
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build !ios && darwin
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `darwin`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 1
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build dragonfly
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `dragonfly`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 1
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build freebsd
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `freebsd`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 1
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build hurd
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `hurd`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 1
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build illumos
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `illumos`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 1
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build ios
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `ios`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 1
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build js
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `js`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 1
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build !android && linux
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `linux`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 1
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build netbsd
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `netbsd`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 1
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build openbsd
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `openbsd`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 1
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build plan9
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `plan9`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 1
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build !illumos && solaris
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `solaris`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 1
|
||||
const IsWindows = 0
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build windows
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `windows`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 1
|
||||
const IsZos = 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
|
||||
|
||||
//go:build zos
|
||||
|
||||
package goos
|
||||
|
||||
const GOOS = `zos`
|
||||
|
||||
const IsAix = 0
|
||||
const IsAndroid = 0
|
||||
const IsDarwin = 0
|
||||
const IsDragonfly = 0
|
||||
const IsFreebsd = 0
|
||||
const IsHurd = 0
|
||||
const IsIllumos = 0
|
||||
const IsIos = 0
|
||||
const IsJs = 0
|
||||
const IsLinux = 0
|
||||
const IsNacl = 0
|
||||
const IsNetbsd = 0
|
||||
const IsOpenbsd = 0
|
||||
const IsPlan9 = 0
|
||||
const IsSolaris = 0
|
||||
const IsWindows = 0
|
||||
const IsZos = 1
|
||||
@@ -0,0 +1,7 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
Hysterai2MasqueradeTypeFile = "file"
|
||||
Hysterai2MasqueradeTypeProxy = "proxy"
|
||||
Hysterai2MasqueradeTypeString = "string"
|
||||
)
|
||||
@@ -0,0 +1,9 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
ManagerAPIServer = "server"
|
||||
ManagerAPIClient = "client"
|
||||
|
||||
ManagerAPIProtocolHTTP = "http"
|
||||
ManagerAPIProtocolGrpc = "grpc"
|
||||
)
|
||||
@@ -0,0 +1,58 @@
|
||||
package constant
|
||||
|
||||
import (
|
||||
"github.com/sagernet/sing/common"
|
||||
F "github.com/sagernet/sing/common/format"
|
||||
)
|
||||
|
||||
type InterfaceType uint8
|
||||
|
||||
const (
|
||||
InterfaceTypeWIFI InterfaceType = iota
|
||||
InterfaceTypeCellular
|
||||
InterfaceTypeEthernet
|
||||
InterfaceTypeOther
|
||||
)
|
||||
|
||||
var (
|
||||
interfaceTypeToString = map[InterfaceType]string{
|
||||
InterfaceTypeWIFI: "wifi",
|
||||
InterfaceTypeCellular: "cellular",
|
||||
InterfaceTypeEthernet: "ethernet",
|
||||
InterfaceTypeOther: "other",
|
||||
}
|
||||
StringToInterfaceType = common.ReverseMap(interfaceTypeToString)
|
||||
)
|
||||
|
||||
func (t InterfaceType) String() string {
|
||||
name, loaded := interfaceTypeToString[t]
|
||||
if !loaded {
|
||||
return F.ToString(int(t))
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
||||
type NetworkStrategy uint8
|
||||
|
||||
const (
|
||||
NetworkStrategyDefault NetworkStrategy = iota
|
||||
NetworkStrategyFallback
|
||||
NetworkStrategyHybrid
|
||||
)
|
||||
|
||||
var (
|
||||
networkStrategyToString = map[NetworkStrategy]string{
|
||||
NetworkStrategyDefault: "default",
|
||||
NetworkStrategyFallback: "fallback",
|
||||
NetworkStrategyHybrid: "hybrid",
|
||||
}
|
||||
StringToNetworkStrategy = common.ReverseMap(networkStrategyToString)
|
||||
)
|
||||
|
||||
func (s NetworkStrategy) String() string {
|
||||
name, loaded := networkStrategyToString[s]
|
||||
if !loaded {
|
||||
return F.ToString(int(s))
|
||||
}
|
||||
return name
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
NodeManagerAPIServer = "server"
|
||||
NodeManagerAPIClient = "client"
|
||||
)
|
||||
@@ -0,0 +1,37 @@
|
||||
package constant
|
||||
|
||||
import (
|
||||
"github.com/sagernet/sing-box/constant/goos"
|
||||
)
|
||||
|
||||
const IsAndroid = goos.IsAndroid == 1
|
||||
|
||||
const IsDarwin = goos.IsDarwin == 1 || goos.IsIos == 1
|
||||
|
||||
const IsDragonfly = goos.IsDragonfly == 1
|
||||
|
||||
const IsFreebsd = goos.IsFreebsd == 1
|
||||
|
||||
const IsHurd = goos.IsHurd == 1
|
||||
|
||||
const IsIllumos = goos.IsIllumos == 1
|
||||
|
||||
const IsIos = goos.IsIos == 1
|
||||
|
||||
const IsJs = goos.IsJs == 1
|
||||
|
||||
const IsLinux = goos.IsLinux == 1 || goos.IsAndroid == 1
|
||||
|
||||
const IsNacl = goos.IsNacl == 1
|
||||
|
||||
const IsNetbsd = goos.IsNetbsd == 1
|
||||
|
||||
const IsOpenbsd = goos.IsOpenbsd == 1
|
||||
|
||||
const IsPlan9 = goos.IsPlan9 == 1
|
||||
|
||||
const IsSolaris = goos.IsSolaris == 1
|
||||
|
||||
const IsWindows = goos.IsWindows == 1
|
||||
|
||||
const IsZos = goos.IsZos == 1
|
||||
@@ -0,0 +1,41 @@
|
||||
package constant
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/sagernet/sing/common/rw"
|
||||
)
|
||||
|
||||
const dirName = "sing-box"
|
||||
|
||||
var resourcePaths []string
|
||||
|
||||
func FindPath(name string) (string, bool) {
|
||||
name = os.ExpandEnv(name)
|
||||
if rw.IsFile(name) {
|
||||
return name, true
|
||||
}
|
||||
for _, dir := range resourcePaths {
|
||||
if path := filepath.Join(dir, dirName, name); rw.IsFile(path) {
|
||||
return path, true
|
||||
}
|
||||
if path := filepath.Join(dir, name); rw.IsFile(path) {
|
||||
return path, true
|
||||
}
|
||||
}
|
||||
return name, false
|
||||
}
|
||||
|
||||
func init() {
|
||||
resourcePaths = append(resourcePaths, ".")
|
||||
if home := os.Getenv("HOME"); home != "" {
|
||||
resourcePaths = append(resourcePaths, home)
|
||||
}
|
||||
if userConfigDir, err := os.UserConfigDir(); err == nil {
|
||||
resourcePaths = append(resourcePaths, userConfigDir)
|
||||
}
|
||||
if userCacheDir, err := os.UserCacheDir(); err == nil {
|
||||
resourcePaths = append(resourcePaths, userCacheDir)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
//go:build unix || linux
|
||||
|
||||
package constant
|
||||
|
||||
import (
|
||||
"os"
|
||||
)
|
||||
|
||||
func init() {
|
||||
resourcePaths = append(resourcePaths, "/etc")
|
||||
resourcePaths = append(resourcePaths, "/usr/share")
|
||||
resourcePaths = append(resourcePaths, "/usr/local/etc")
|
||||
resourcePaths = append(resourcePaths, "/usr/local/share")
|
||||
if homeDir := os.Getenv("HOME"); homeDir != "" {
|
||||
resourcePaths = append(resourcePaths, homeDir+"/.local/share")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
ProtocolTLS = "tls"
|
||||
ProtocolHTTP = "http"
|
||||
ProtocolQUIC = "quic"
|
||||
ProtocolDNS = "dns"
|
||||
ProtocolSTUN = "stun"
|
||||
ProtocolBitTorrent = "bittorrent"
|
||||
ProtocolDTLS = "dtls"
|
||||
ProtocolSSH = "ssh"
|
||||
ProtocolRDP = "rdp"
|
||||
ProtocolNTP = "ntp"
|
||||
)
|
||||
|
||||
const (
|
||||
ClientChromium = "chromium"
|
||||
ClientSafari = "safari"
|
||||
ClientFirefox = "firefox"
|
||||
ClientQUICGo = "quic-go"
|
||||
ClientUnknown = "unknown"
|
||||
)
|
||||
@@ -0,0 +1,20 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
ProviderTypeInline = "inline"
|
||||
ProviderTypeLocal = "local"
|
||||
ProviderTypeRemote = "remote"
|
||||
)
|
||||
|
||||
func ProviderDisplayName(providerType string) string {
|
||||
switch providerType {
|
||||
case ProviderTypeInline:
|
||||
return "Inline"
|
||||
case ProviderTypeLocal:
|
||||
return "Local"
|
||||
case ProviderTypeRemote:
|
||||
return "Remote"
|
||||
default:
|
||||
return "Unknown"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
TypeTun = "tun"
|
||||
TypeRedirect = "redirect"
|
||||
TypeTProxy = "tproxy"
|
||||
TypeDirect = "direct"
|
||||
TypeBlock = "block"
|
||||
TypeDNS = "dns"
|
||||
TypeSOCKS = "socks"
|
||||
TypeHTTP = "http"
|
||||
TypeMixed = "mixed"
|
||||
TypeShadowsocks = "shadowsocks"
|
||||
TypeVMess = "vmess"
|
||||
TypeTrojan = "trojan"
|
||||
TypeNaive = "naive"
|
||||
TypeWireGuard = "wireguard"
|
||||
TypeWARP = "warp"
|
||||
TypeMASQUE = "masque"
|
||||
TypeMTProxy = "mtproxy"
|
||||
TypeParser = "parser"
|
||||
TypeHysteria = "hysteria"
|
||||
TypeTor = "tor"
|
||||
TypeSSH = "ssh"
|
||||
TypeShadowTLS = "shadowtls"
|
||||
TypeMieru = "mieru"
|
||||
TypeAnyTLS = "anytls"
|
||||
TypeShadowsocksR = "shadowsocksr"
|
||||
TypeVLESS = "vless"
|
||||
TypeTUIC = "tuic"
|
||||
TypeHysteria2 = "hysteria2"
|
||||
TypeBond = "bond"
|
||||
TypeFailover = "failover"
|
||||
TypeVPNServer = "vpn-server"
|
||||
TypeVPNClient = "vpn-client"
|
||||
TypeTailscale = "tailscale"
|
||||
TypeConnectionLimiter = "connection-limiter"
|
||||
TypeBandwidthLimiter = "bandwidth-limiter"
|
||||
TypeTrafficLimiter = "traffic-limiter"
|
||||
TypeRateLimiter = "rate-limiter"
|
||||
TypeAdminPanel = "admin-panel"
|
||||
TypeManagerAPI = "manager-api"
|
||||
TypeNodeManagerAPI = "node-manager-api"
|
||||
TypeDERP = "derp"
|
||||
TypeManager = "manager"
|
||||
TypeNode = "node"
|
||||
TypeResolved = "resolved"
|
||||
TypeSSMAPI = "ssm-api"
|
||||
TypeCCM = "ccm"
|
||||
TypeOCM = "ocm"
|
||||
TypeOOMKiller = "oom-killer"
|
||||
TypeProfiler = "profiler"
|
||||
)
|
||||
|
||||
const (
|
||||
TypeFallback = "fallback"
|
||||
TypeSelector = "selector"
|
||||
TypeURLTest = "urltest"
|
||||
)
|
||||
|
||||
func ProxyDisplayName(proxyType string) string {
|
||||
switch proxyType {
|
||||
case TypeTun:
|
||||
return "TUN"
|
||||
case TypeRedirect:
|
||||
return "Redirect"
|
||||
case TypeTProxy:
|
||||
return "TProxy"
|
||||
case TypeDirect:
|
||||
return "Direct"
|
||||
case TypeBlock:
|
||||
return "Block"
|
||||
case TypeDNS:
|
||||
return "DNS"
|
||||
case TypeSOCKS:
|
||||
return "SOCKS"
|
||||
case TypeHTTP:
|
||||
return "HTTP"
|
||||
case TypeMixed:
|
||||
return "Mixed"
|
||||
case TypeShadowsocks:
|
||||
return "Shadowsocks"
|
||||
case TypeVMess:
|
||||
return "VMess"
|
||||
case TypeTrojan:
|
||||
return "Trojan"
|
||||
case TypeNaive:
|
||||
return "Naive"
|
||||
case TypeWireGuard:
|
||||
return "WireGuard"
|
||||
case TypeWARP:
|
||||
return "WARP"
|
||||
case TypeMASQUE:
|
||||
return "MASQUE"
|
||||
case TypeMTProxy:
|
||||
return "MTProxy"
|
||||
case TypeParser:
|
||||
return "Parser"
|
||||
case TypeHysteria:
|
||||
return "Hysteria"
|
||||
case TypeTor:
|
||||
return "Tor"
|
||||
case TypeSSH:
|
||||
return "SSH"
|
||||
case TypeShadowTLS:
|
||||
return "ShadowTLS"
|
||||
case TypeShadowsocksR:
|
||||
return "ShadowsocksR"
|
||||
case TypeVLESS:
|
||||
return "VLESS"
|
||||
case TypeTUIC:
|
||||
return "TUIC"
|
||||
case TypeHysteria2:
|
||||
return "Hysteria2"
|
||||
case TypeBond:
|
||||
return "Bond"
|
||||
case TypeFailover:
|
||||
return "Failover"
|
||||
case TypeMieru:
|
||||
return "Mieru"
|
||||
case TypeAnyTLS:
|
||||
return "AnyTLS"
|
||||
case TypeFallback:
|
||||
return "Fallback"
|
||||
case TypeTailscale:
|
||||
return "Tailscale"
|
||||
case TypeSelector:
|
||||
return "Selector"
|
||||
case TypeURLTest:
|
||||
return "URLTest"
|
||||
case TypeConnectionLimiter:
|
||||
return "Connection Limiter"
|
||||
case TypeBandwidthLimiter:
|
||||
return "Bandwidth Limiter"
|
||||
case TypeTrafficLimiter:
|
||||
return "Traffic Limiter"
|
||||
case TypeRateLimiter:
|
||||
return "Rate Limiter"
|
||||
case TypeVPNClient:
|
||||
return "VPN Client"
|
||||
case TypeVPNServer:
|
||||
return "VPN Server"
|
||||
case TypeProfiler:
|
||||
return "Profiler"
|
||||
default:
|
||||
return "Unknown"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
//go:build with_quic
|
||||
|
||||
package constant
|
||||
|
||||
const WithQUIC = true
|
||||
@@ -0,0 +1,5 @@
|
||||
//go:build !with_quic
|
||||
|
||||
package constant
|
||||
|
||||
const WithQUIC = false
|
||||
@@ -0,0 +1,45 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
RuleTypeDefault = "default"
|
||||
RuleTypeLogical = "logical"
|
||||
)
|
||||
|
||||
const (
|
||||
LogicalTypeAnd = "and"
|
||||
LogicalTypeOr = "or"
|
||||
)
|
||||
|
||||
const (
|
||||
RuleSetTypeInline = "inline"
|
||||
RuleSetTypeLocal = "local"
|
||||
RuleSetTypeRemote = "remote"
|
||||
RuleSetFormatSource = "source"
|
||||
RuleSetFormatBinary = "binary"
|
||||
)
|
||||
|
||||
const (
|
||||
RuleSetVersion1 = 1 + iota
|
||||
RuleSetVersion2
|
||||
RuleSetVersion3
|
||||
RuleSetVersion4
|
||||
RuleSetVersionCurrent = RuleSetVersion4
|
||||
)
|
||||
|
||||
const (
|
||||
RuleActionTypeRoute = "route"
|
||||
RuleActionTypeRouteOptions = "route-options"
|
||||
RuleActionTypeDirect = "direct"
|
||||
RuleActionTypeBypass = "bypass"
|
||||
RuleActionTypeReject = "reject"
|
||||
RuleActionTypeHijackDNS = "hijack-dns"
|
||||
RuleActionTypeSniff = "sniff"
|
||||
RuleActionTypeResolve = "resolve"
|
||||
RuleActionTypePredefined = "predefined"
|
||||
)
|
||||
|
||||
const (
|
||||
RuleActionRejectMethodDefault = "default"
|
||||
RuleActionRejectMethodDrop = "drop"
|
||||
RuleActionRejectMethodReply = "reply"
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
package constant
|
||||
|
||||
const MbpsToBps = 125000
|
||||
@@ -0,0 +1,3 @@
|
||||
package constant
|
||||
|
||||
const TimeLayout = "2006-01-02 15:04:05 -0700"
|
||||
@@ -0,0 +1,35 @@
|
||||
package constant
|
||||
|
||||
import "time"
|
||||
|
||||
const (
|
||||
TCPKeepAliveInitial = 5 * time.Minute
|
||||
TCPKeepAliveInterval = 75 * time.Second
|
||||
TCPConnectTimeout = 5 * time.Second
|
||||
TCPTimeout = 15 * time.Second
|
||||
ReadPayloadTimeout = 300 * time.Millisecond
|
||||
DNSTimeout = 10 * time.Second
|
||||
UDPTimeout = 5 * time.Minute
|
||||
DefaultURLTestInterval = 3 * time.Minute
|
||||
DefaultURLTestIdleTimeout = 30 * time.Minute
|
||||
StartTimeout = 10 * time.Second
|
||||
StopTimeout = 5 * time.Second
|
||||
FatalStopTimeout = 10 * time.Second
|
||||
FakeIPMetadataSaveInterval = 10 * time.Second
|
||||
TLSFragmentFallbackDelay = 500 * time.Millisecond
|
||||
)
|
||||
|
||||
var PortProtocols = map[uint16]string{
|
||||
53: ProtocolDNS,
|
||||
123: ProtocolNTP,
|
||||
3478: ProtocolSTUN,
|
||||
443: ProtocolQUIC,
|
||||
}
|
||||
|
||||
var ProtocolTimeouts = map[string]time.Duration{
|
||||
ProtocolDNS: 10 * time.Second,
|
||||
ProtocolNTP: 10 * time.Second,
|
||||
ProtocolSTUN: 10 * time.Second,
|
||||
ProtocolQUIC: 30 * time.Second,
|
||||
ProtocolDTLS: 30 * time.Second,
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
V2RayTransportTypeHTTP = "http"
|
||||
V2RayTransportTypeWebsocket = "ws"
|
||||
V2RayTransportTypeQUIC = "quic"
|
||||
V2RayTransportTypeGRPC = "grpc"
|
||||
V2RayTransportTypeHTTPUpgrade = "httpupgrade"
|
||||
V2RayTransportTypeXHTTP = "xhttp"
|
||||
V2RayTransportTypeKCP = "mkcp"
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
package constant
|
||||
|
||||
var Version = "unknown"
|
||||
Reference in New Issue
Block a user