main.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package main
  2. import (
  3. "fmt"
  4. "net"
  5. "net/http"
  6. "strings"
  7. "time"
  8. )
  9. type StudentInfo struct {
  10. FullName string `json:"full_name"`
  11. Group string `json:"group"`
  12. }
  13. func GetLocalIP() string {
  14. addrs, err := net.InterfaceAddrs()
  15. if err != nil {
  16. return "Не удалось определить IP"
  17. }
  18. for _, addr := range addrs {
  19. if ipNet, ok := addr.(*net.IPNet); ok && !ipNet.IP.IsLoopback() {
  20. if ipNet.IP.To4() != nil {
  21. ip := ipNet.IP.String()
  22. parts := strings.Split(ip, ".")
  23. if len(parts) == 4 {
  24. parts[1] = "***"
  25. parts[2] = "***"
  26. return strings.Join(parts, ".")
  27. }
  28. }
  29. }
  30. }
  31. return "IP не найден"
  32. }
  33. func main() {
  34. http.HandleFunc("/ok", func(w http.ResponseWriter, r *http.Request) {
  35. w.WriteHeader(http.StatusOK)
  36. fmt.Fprintln(w, "OK")
  37. })
  38. http.HandleFunc("/info", func(w http.ResponseWriter, r *http.Request) {
  39. student := StudentInfo{
  40. FullName: "Смолин Алексей Михайлович",
  41. Group: "712",
  42. }
  43. html := fmt.Sprintf(`
  44. <!DOCTYPE html>
  45. <html lang="en">
  46. <head>
  47. <meta charset="UTF-8">
  48. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  49. <title>Info Page</title>
  50. </head>
  51. <body>
  52. <h1>Информация о студенте</h1>
  53. <p><strong>ФИО:</strong> %s</p>
  54. <p><strong>Группа:</strong> %s</p>
  55. </body>
  56. </html>
  57. `, student.FullName, student.Group)
  58. w.Header().Set("Content-Type", "text/html")
  59. fmt.Fprintln(w, html)
  60. })
  61. http.HandleFunc("/status", func(w http.ResponseWriter, r *http.Request) {
  62. student := StudentInfo{
  63. FullName: "Смолин Алексей Михайлович",
  64. Group: "712",
  65. }
  66. localIP := GetLocalIP()
  67. now := time.Now().Format("2006-01-02 3:4:5 pm")
  68. html := fmt.Sprintf(`
  69. <!DOCTYPE html>
  70. <html lang="en">
  71. <head>
  72. <meta charset="UTF-8">
  73. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  74. <title>Status Page</title>
  75. </head>
  76. <body>
  77. <h1>Статус</h1>
  78. <p><strong>IP-адрес компьютера:</strong> %s</p>
  79. <p><strong>ФИО:</strong> %s</p>
  80. <p><strong>Текущее время:</strong> %s</p>
  81. </body>
  82. </html>
  83. `, localIP, student.FullName, now)
  84. w.Header().Set("Content-Type", "text/html")
  85. fmt.Fprintln(w, html)
  86. })
  87. fmt.Println("Server is running on http://localhost:8080")
  88. if err := http.ListenAndServe(":8080", nil); err != nil {
  89. fmt.Println("Error starting server:", err)
  90. }
  91. }