Files
umbrix-libcore/cmd/cmd_instance.go
2024-09-28 20:31:38 +02:00

60 lines
1.4 KiB
Go

package cmd
import (
"os"
"os/signal"
"syscall"
v2 "github.com/hiddify/hiddify-core/v2"
"github.com/sagernet/sing-box/log"
"github.com/spf13/cobra"
)
var commandInstance = &cobra.Command{
Use: "instance",
Short: "instance",
Args: cobra.OnlyValidArgs,
Run: func(cmd *cobra.Command, args []string) {
hiddifySetting := defaultConfigs
if hiddifySettingPath != "" {
hiddifySetting2, err := v2.ReadHiddifyOptionsAt(hiddifySettingPath)
if err != nil {
log.Fatal(err)
}
hiddifySetting = *hiddifySetting2
}
instance, err := v2.RunInstanceString(&hiddifySetting, configPath)
if err != nil {
log.Fatal(err)
}
defer instance.Close()
ping, err := instance.PingAverage("http://cp.cloudflare.com", 4)
if err != nil {
// log.Fatal(err)
}
log.Info("Average Ping to Cloudflare : ", ping, "\n")
for i := 1; i <= 4; i++ {
ping, err := instance.PingCloudflare()
if err != nil {
log.Warn(i, " Error ", err, "\n")
} else {
log.Info(i, " Ping time: ", ping, " ms\n")
}
}
log.Info("Instance is running on port socks5://127.0.0.1:", instance.ListenPort, "\n")
log.Info("Press Ctrl+C to exit\n")
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)
<-sigChan
log.Info("CTRL+C recived-->stopping\n")
instance.Close()
},
}
func init() {
mainCommand.AddCommand(commandInstance)
addHConfigFlags(commandInstance)
}