tools added
parent
2225f8de03
commit
4fbf40d50d
18
main.go
18
main.go
|
@ -4,6 +4,7 @@ import (
|
|||
"bytes"
|
||||
"log"
|
||||
cfg "main/config"
|
||||
"main/tools"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
@ -30,9 +31,20 @@ func main() {
|
|||
// Настройка маршрутов
|
||||
router := app.setupRouter()
|
||||
|
||||
// Запуск сервера
|
||||
log.Println("Run on", cfg.ServerAddr)
|
||||
log.Fatal(http.ListenAndServe(cfg.ServerAddr, router))
|
||||
if ok, err := tools.IsIPInUse(cfg.ServerIP); err != nil {
|
||||
log.Fatal(err)
|
||||
} else if ok {
|
||||
runServer(cfg.ServerIP, cfg.Port, router)
|
||||
} else {
|
||||
runServer(cfg.LocalIP, cfg.Port, router)
|
||||
}
|
||||
}
|
||||
|
||||
// Запускает приложение на указанном IP и порту
|
||||
func runServer(ip, port string, router http.Handler) {
|
||||
addr := ip + port
|
||||
log.Println("Run on", addr)
|
||||
log.Fatal(http.ListenAndServe(addr, router))
|
||||
}
|
||||
|
||||
// Инициализирует приложение
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
package tools
|
||||
|
||||
import (
|
||||
"net"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func IsIPInUse(targetIP string) (bool, error) {
|
||||
// Получаем список всех сетевых интерфейсов
|
||||
interfaces, err := net.Interfaces()
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
for _, iface := range interfaces {
|
||||
// Получаем адреса для каждого интерфейса
|
||||
addrs, err := iface.Addrs()
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
for _, addr := range addrs {
|
||||
if strings.Split(addr.String(), "/")[0] == targetIP {
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false, nil // Адрес не найден
|
||||
}
|
Loading…
Reference in New Issue