tools added

master
serr 2025-03-27 19:14:10 +03:00
parent 2225f8de03
commit 4fbf40d50d
2 changed files with 45 additions and 3 deletions

18
main.go
View File

@ -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))
}
// Инициализирует приложение

30
tools/tools.go Normal file
View File

@ -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 // Адрес не найден
}