mirror of
				https://github.com/v2fly/v2ray-core.git
				synced 2025-10-31 01:39:16 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			114 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"strings"
 | |
| )
 | |
| 
 | |
| type GoOS string
 | |
| 
 | |
| const (
 | |
| 	Windows   = GoOS("windows")
 | |
| 	MacOS     = GoOS("darwin")
 | |
| 	Linux     = GoOS("linux")
 | |
| 	FreeBSD   = GoOS("freebsd")
 | |
| 	OpenBSD   = GoOS("openbsd")
 | |
| 	UnknownOS = GoOS("unknown")
 | |
| )
 | |
| 
 | |
| type GoArch string
 | |
| 
 | |
| const (
 | |
| 	X86         = GoArch("386")
 | |
| 	Amd64       = GoArch("amd64")
 | |
| 	Arm         = GoArch("arm")
 | |
| 	Arm64       = GoArch("arm64")
 | |
| 	Mips64      = GoArch("mips64")
 | |
| 	UnknownArch = GoArch("unknown")
 | |
| )
 | |
| 
 | |
| func parseOS(rawOS string) GoOS {
 | |
| 	osStr := strings.ToLower(rawOS)
 | |
| 	if osStr == "windows" || osStr == "win" {
 | |
| 		return Windows
 | |
| 	}
 | |
| 	if osStr == "darwin" || osStr == "mac" || osStr == "macos" || osStr == "osx" {
 | |
| 		return MacOS
 | |
| 	}
 | |
| 	if osStr == "linux" || osStr == "debian" || osStr == "ubuntu" || osStr == "redhat" || osStr == "centos" {
 | |
| 		return Linux
 | |
| 	}
 | |
| 	if osStr == "freebsd" {
 | |
| 		return FreeBSD
 | |
| 	}
 | |
| 	if osStr == "openbsd" {
 | |
| 		return OpenBSD
 | |
| 	}
 | |
| 	return UnknownOS
 | |
| }
 | |
| 
 | |
| func parseArch(rawArch string) GoArch {
 | |
| 	archStr := strings.ToLower(rawArch)
 | |
| 	if archStr == "x86" || archStr == "386" || archStr == "i386" {
 | |
| 		return X86
 | |
| 	}
 | |
| 	if archStr == "amd64" || archStr == "x86-64" || archStr == "x64" {
 | |
| 		return Amd64
 | |
| 	}
 | |
| 	if archStr == "arm" {
 | |
| 		return Arm
 | |
| 	}
 | |
| 	if archStr == "arm64" {
 | |
| 		return Arm64
 | |
| 	}
 | |
| 	if archStr == "mips" || archStr == "mips64" {
 | |
| 		return Mips64
 | |
| 	}
 | |
| 	return UnknownArch
 | |
| }
 | |
| 
 | |
| func getSuffix(os GoOS, arch GoArch) string {
 | |
| 	suffix := "-custom"
 | |
| 	switch os {
 | |
| 	case Windows:
 | |
| 		switch arch {
 | |
| 		case X86:
 | |
| 			suffix = "-windows-32"
 | |
| 		case Amd64:
 | |
| 			suffix = "-windows-64"
 | |
| 		}
 | |
| 	case MacOS:
 | |
| 		suffix = "-macos"
 | |
| 	case Linux:
 | |
| 		switch arch {
 | |
| 		case X86:
 | |
| 			suffix = "-linux-32"
 | |
| 		case Amd64:
 | |
| 			suffix = "-linux-64"
 | |
| 		case Arm:
 | |
| 			suffix = "-linux-arm"
 | |
| 		case Arm64:
 | |
| 			suffix = "-linux-arm64"
 | |
| 		case Mips64:
 | |
| 			suffix = "-linux-mips64"
 | |
| 		}
 | |
| 	case FreeBSD:
 | |
| 		switch arch {
 | |
| 		case X86:
 | |
| 			suffix = "-freebsd-32"
 | |
| 		case Amd64:
 | |
| 			suffix = "-freebsd-64"
 | |
| 		case Arm:
 | |
| 			suffix = "-freebsd-arm"
 | |
| 		}
 | |
| 	case OpenBSD:
 | |
| 		switch arch {
 | |
| 		case X86:
 | |
| 			suffix = "-openbsd-32"
 | |
| 		case Amd64:
 | |
| 			suffix = "-openbsd-64"
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return suffix
 | |
| }
 | 
