package main import ( "fmt" "net" "net/http" "strings" "time" ) type StudentInfo struct { FullName string `json:"full_name"` Group string `json:"group"` } func GetLocalIP() string { addrs, err := net.InterfaceAddrs() if err != nil { return "Не удалось определить IP" } for _, addr := range addrs { if ipNet, ok := addr.(*net.IPNet); ok && !ipNet.IP.IsLoopback() { if ipNet.IP.To4() != nil { ip := ipNet.IP.String() parts := strings.Split(ip, ".") if len(parts) == 4 { parts[1] = "***" parts[2] = "***" return strings.Join(parts, ".") } } } } return "IP не найден" } func main() { http.HandleFunc("/ok", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) fmt.Fprintln(w, "OK") }) http.HandleFunc("/info", func(w http.ResponseWriter, r *http.Request) { student := StudentInfo{ FullName: "Смолин Алексей Михайлович", Group: "712", } html := fmt.Sprintf(` Info Page

Информация о студенте

ФИО: %s

Группа: %s

`, student.FullName, student.Group) w.Header().Set("Content-Type", "text/html") fmt.Fprintln(w, html) }) http.HandleFunc("/status", func(w http.ResponseWriter, r *http.Request) { student := StudentInfo{ FullName: "Смолин Алексей Михайлович", Group: "712", } localIP := GetLocalIP() now := time.Now().Format("2006-01-02 3:4:5 pm") html := fmt.Sprintf(` Status Page

Статус

IP-адрес компьютера: %s

ФИО: %s

Текущее время: %s

`, localIP, student.FullName, now) w.Header().Set("Content-Type", "text/html") fmt.Fprintln(w, html) }) fmt.Println("Server is running on http://localhost:8080") if err := http.ListenAndServe(":8080", nil); err != nil { fmt.Println("Error starting server:", err) } }