package main import ( "fmt" "net" "os" "sync" "rtp-app/config" "rtp-app/handlers" "rtp-app/license" ) const ( address = "0.0.0.0:5005" ) type Client struct { Addr *net.UDPAddr Conn *net.UDPConn } var ( clients = make(map[string]net.UDPAddr) clientsMu sync.Mutex ) func init() { uniqueID, err := license.GetUniqueID() if err != nil { fmt.Println("Ошибка:", err) os.Exit(1) } fmt.Println("Уникальный идентификатор сервера:", uniqueID) config.Cfg = config.LoadConfig("config.json") valid, err := license.ValidateLicense(config.Cfg.LicenseCode) if err != nil { fmt.Println("Ошибка проверки лицензии:", err) os.Exit(1) } if valid { fmt.Println("Лицензия действительна.") } else { fmt.Println("Лицензия недействительна.") os.Exit(1) } } func main() { udpAddr, err := net.ResolveUDPAddr("udp4", address) if err != nil { fmt.Println("Ошибка при разрешении адреса:", err) os.Exit(1) } conn, err := net.ListenUDP("udp4", udpAddr) if err != nil { fmt.Println("Ошибка при запуске сервера:", err) os.Exit(1) } defer conn.Close() fmt.Printf("Сервер запущен на %s\n", address) var wg sync.WaitGroup wg.Add(1) go handlers.HandleConnection(conn, &wg) wg.Wait() }