lab2.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net"
  6. "net/http"
  7. "regexp"
  8. "time"
  9. )
  10. func GetOutboundIP() net.IP {
  11. conn, err := net.Dial("udp", "8.8.8.8:80")
  12. if err != nil {
  13. log.Fatal(err)
  14. }
  15. defer conn.Close()
  16. localAddr := conn.LocalAddr().(*net.UDPAddr)
  17. return localAddr.IP
  18. }
  19. func Status(w http.ResponseWriter, r *http.Request) {
  20. fmt.Fprint(w, "Начиков Даниил группа 784\n")
  21. now := time.Now()
  22. fmt.Fprint(w, "Now time is: ", now.Format(" 2006-01-02 3:4:5 pm\n"))
  23. ip := GetOutboundIP().String()
  24. regex := regexp.MustCompile("\\W[0-9]*\\W[0-9]*")
  25. ipwithoutoctets := regex.ReplaceAllString(ip, ".*.*")
  26. fmt.Fprint(w, "Ip is: ", ipwithoutoctets, " (without 2 octet)")
  27. }
  28. func OK(w http.ResponseWriter, r *http.Request) {
  29. fmt.Fprintf(w, "HTTP-статус 200")
  30. }
  31. func Info(w http.ResponseWriter, r *http.Request) {
  32. fmt.Fprintf(w, "Начиков Даниил Группа 784")
  33. }
  34. func main() {
  35. http.HandleFunc("/Info", Info)
  36. http.HandleFunc("/OK", OK)
  37. http.HandleFunc("/Status", Status)
  38. err := http.ListenAndServe(":8080", nil)
  39. if err != nil {
  40. log.Fatal("ListenAndServe ", err)
  41. }
  42. }