mirror of https://github.com/XTLS/Xray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
61 lines
1.4 KiB
package main |
|
|
|
import ( |
|
"flag" |
|
"os" |
|
|
|
"github.com/xtls/xray-core/main/commands/base" |
|
_ "github.com/xtls/xray-core/main/distro/all" |
|
) |
|
|
|
func main() { |
|
os.Args = getArgsV4Compatible() |
|
|
|
base.RootCommand.Long = "Xray is a platform for building proxies." |
|
base.RootCommand.Commands = append( |
|
[]*base.Command{ |
|
cmdRun, |
|
cmdVersion, |
|
}, |
|
base.RootCommand.Commands..., |
|
) |
|
base.Execute() |
|
} |
|
|
|
func getArgsV4Compatible() []string { |
|
if len(os.Args) == 1 { |
|
return []string{os.Args[0], "run"} |
|
} |
|
if os.Args[1][0] != '-' { |
|
return os.Args |
|
} |
|
version := false |
|
fs := flag.NewFlagSet("", flag.ContinueOnError) |
|
fs.BoolVar(&version, "version", false, "") |
|
// parse silently, no usage, no error output |
|
fs.Usage = func() {} |
|
fs.SetOutput(&null{}) |
|
err := fs.Parse(os.Args[1:]) |
|
if err == flag.ErrHelp { |
|
// fmt.Println("DEPRECATED: -h, WILL BE REMOVED IN V5.") |
|
// fmt.Println("PLEASE USE: xray help") |
|
// fmt.Println() |
|
return []string{os.Args[0], "help"} |
|
} |
|
if version { |
|
// fmt.Println("DEPRECATED: -version, WILL BE REMOVED IN V5.") |
|
// fmt.Println("PLEASE USE: xray version") |
|
// fmt.Println() |
|
return []string{os.Args[0], "version"} |
|
} |
|
// fmt.Println("COMPATIBLE MODE, DEPRECATED.") |
|
// fmt.Println("PLEASE USE: xray run [arguments] INSTEAD.") |
|
// fmt.Println() |
|
return append([]string{os.Args[0], "run"}, os.Args[1:]...) |
|
} |
|
|
|
type null struct{} |
|
|
|
func (n *null) Write(p []byte) (int, error) { |
|
return len(p), nil |
|
}
|
|
|