diff --git a/cmd/ck-server/ck-server.go b/cmd/ck-server/ck-server.go index c6fc10d..652c7fd 100644 --- a/cmd/ck-server/ck-server.go +++ b/cmd/ck-server/ck-server.go @@ -259,7 +259,7 @@ func main() { https, _ := net.ResolveTCPAddr("tcp", ":443") http, _ := net.ResolveTCPAddr("tcp", ":80") sta.BindAddr = []net.Addr{https, http} - log.Fatalf("bind address cannot be empty") + log.Fatalf("BindAddr cannot be empty") } // when cloak is started as a shadowsocks plugin diff --git a/internal/server/state.go b/internal/server/state.go index eefa14b..34db0b1 100644 --- a/internal/server/state.go +++ b/internal/server/state.go @@ -92,9 +92,23 @@ func (sta *State) ParseConfig(conf string) (err error) { sta.Timeout = time.Duration(preParse.StreamTimeout) * time.Second - sta.RedirAddr, err = net.ResolveIPAddr("ip", preParse.RedirAddr) + redirAddr := preParse.RedirAddr + colonSep := strings.Split(redirAddr, ":") + if len(colonSep) != 0 { + if len(colonSep) == 2 { + logrus.Error("If RedirAddr contains a port number, please remove it.") + redirAddr = colonSep[0] + } else { + if strings.Contains(redirAddr, "[") { + logrus.Error("If RedirAddr contains a port number, please remove it.") + redirAddr = strings.TrimRight(redirAddr, "]:"+colonSep[len(colonSep)-1]) + redirAddr = strings.TrimPrefix(redirAddr, "[") + } + } + } + + sta.RedirAddr, err = net.ResolveIPAddr("ip", redirAddr) if err != nil { - logrus.Error("If RedirAddr contains a port number, please remove it.") return fmt.Errorf("unable to resolve RedirAddr: %v. ", err) }