OAKC-Dzhurich-Lab2.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "strings"
  6. "time"
  7. )
  8. func okHandler(w http.ResponseWriter, r *http.Request) {
  9. w.WriteHeader(http.StatusOK)
  10. fmt.Fprintln(w, "OK")
  11. }
  12. func infoHandler(w http.ResponseWriter, r *http.Request) {
  13. studentInfo := "ФИО: Джурич Михаил Горанович, Номер группы: 712"
  14. fmt.Fprintln(w, studentInfo)
  15. }
  16. func statusHandler(w http.ResponseWriter, r *http.Request) {
  17. ip := r.RemoteAddr
  18. var maskedIP string
  19. fmt.Sscanf(ip, "%[^:]:%*s", &maskedIP)
  20. ipParts := strings.Split(maskedIP, ".")
  21. if len(ipParts) == 4 {
  22. maskedIP = fmt.Sprintf("%s.***.***.%s", ipParts[0], ipParts[3])
  23. }
  24. currentTime := time.Now().Format("2006-01-02 3:4:5 pm")
  25. response := fmt.Sprintf("IP-адрес: %s\nФИО: Джурич Михаил Горанович\nТекущее время: %s", maskedIP, currentTime)
  26. fmt.Fprintln(w, response)
  27. }
  28. func main() {
  29. http.HandleFunc("/ok", okHandler)
  30. http.HandleFunc("/info", infoHandler)
  31. http.HandleFunc("/status", statusHandler)
  32. fmt.Println("Сервер запущен на порту 8080...")
  33. if err := http.ListenAndServe(":8080", nil); err != nil {
  34. fmt.Println("Ошибка запуска сервера:", err)
  35. }
  36. }