65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"net/http"
|
|
"os"
|
|
"runtime"
|
|
"service/app/levi/controller"
|
|
"service/library/httpengine"
|
|
"service/library/httpserver"
|
|
"service/library/logger"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
defer func() {
|
|
logger.Recover()
|
|
}()
|
|
|
|
// 初始化http server
|
|
ip := GetIp()
|
|
port := 9900
|
|
router := httpengine.NewRouter()
|
|
controller.Init(router)
|
|
srv := &http.Server{
|
|
Addr: fmt.Sprintf("%s:%d", ip, port),
|
|
Handler: router,
|
|
}
|
|
|
|
httpserver.StartLeviServer(srv, ip, port)
|
|
}
|
|
|
|
func PrintAndExit(msg string) {
|
|
_, file, line, _ := runtime.Caller(1)
|
|
errorMsg := fmt.Sprintf("file %s, line %d, %s\n", file, line, msg)
|
|
_, _ = fmt.Fprintf(os.Stderr, errorMsg)
|
|
logger.Fatal(errorMsg)
|
|
time.Sleep(1) //wait logger flush
|
|
//os.Exit(1)
|
|
}
|
|
|
|
func GetIp() string {
|
|
addrs, err := net.InterfaceAddrs()
|
|
if err != nil {
|
|
PrintAndExit("get ip fail")
|
|
return "127.0.0.1"
|
|
}
|
|
retIp := ""
|
|
for _, address := range addrs {
|
|
// 检查ip地址判断是否回环地址
|
|
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
|
|
if ipnet.IP.To4() != nil {
|
|
ip := ipnet.IP.String()
|
|
if strings.HasPrefix(ip, "172.") {
|
|
retIp = ip
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return retIp
|
|
}
|