Przeglądaj źródła

Загрузить файлы ''

gr782_lva 3 lat temu
rodzic
commit
ba64e3fab3
4 zmienionych plików z 56 dodań i 0 usunięć
  1. 9 0
      dockerfile
  2. 5 0
      go.mod
  3. 2 0
      go.sum
  4. 40 0
      httpserver.go

+ 9 - 0
dockerfile

@@ -0,0 +1,9 @@
+FROM golang:latest
+
+WORKDIR /app
+COPY go.mod go.sum ./
+RUN go mod download
+COPY . .
+RUN go build -o httpserver.go .
+EXPOSE 80
+CMD ["./httpserver.go"]

+ 5 - 0
go.mod

@@ -0,0 +1,5 @@
+module github.com/you/hello
+
+go 1.17
+
+require github.com/go-chi/chi v1.5.4 // indirect

+ 2 - 0
go.sum

@@ -0,0 +1,2 @@
+github.com/go-chi/chi v1.5.4 h1:QHdzF2szwjqVV4wmByUnTcsbIg7UGaQ0tPF2t5GcAIs=
+github.com/go-chi/chi v1.5.4/go.mod h1:uaf8YgoFazUOkPBG7fxPftUylNumIev9awIWOENIuEg=

+ 40 - 0
httpserver.go

@@ -0,0 +1,40 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"net/http"
+	"strings"
+	"time"
+)
+
+func main() {
+	http.HandleFunc("/", func1)            // Эта строка обеспечивает поддержку адреса <ip>:<port>/
+	http.HandleFunc("/ok", func2)          // Эта строка обеспечивает поддержку адреса <ip>:<port>/ok
+	http.HandleFunc("/info", func3)        // Эта строка обеспечивает поддержку адреса <ip>:<port>/info
+	http.HandleFunc("/status", func4)      // Эта строка обеспечивает поддержку адреса <ip>:<port>/info
+	err := http.ListenAndServe(":80", nil) // устанавливаем порт веб-сервера: 80
+	if err != nil {
+		log.Fatal(err)
+	}
+
+}
+func func1(w http.ResponseWriter, r *http.Request) { //объявляем функцию, которая будет вызвана при переходе на страницу.
+	fmt.Fprint(w, "Перейдите на страницы /ok, /info или /status") //Вывод текста на странице
+}
+
+func func2(w http.ResponseWriter, r *http.Request) {
+	w.WriteHeader(http.StatusOK)          //устанавливаем статус ответа сервера - ОК.
+	fmt.Fprint(w, "HTTP-status 200(OK).") //Вывод текста на странице
+
+}
+func func3(w http.ResponseWriter, r *http.Request) {
+	fmt.Fprint(w, "Одинокова Анастасия Николаевна, 782 гр.") //Вывод текста на странице
+}
+
+func func4(w http.ResponseWriter, r *http.Request) {
+	var ip = strings.Split(string(r.RemoteAddr), ".")
+	fmt.Fprint(w, "Your IP address: ", ip[0], ".x.x.", ip[3][:strings.IndexByte(ip[3], ':')], "\n") //Вывод текста на странице
+	fmt.Fprint(w, "Одинокова Анастасия Николаевна, 782 гр.\n")
+	fmt.Fprint(w, time.Now().Format("2006-01-02 3:4:5 pm"))
+}