This commit is contained in:
2025-10-26 13:01:35 +03:00
parent 2f9deb6997
commit e8353f7e28

63
main.go
View File

@@ -6,6 +6,7 @@ import (
"log"
"net/http"
"os"
"strings"
"time"
"gopkg.in/yaml.v3"
@@ -25,6 +26,35 @@ type ConfigTelegraam struct {
GroupID int64 `yaml:"group_id"`
}
func BuildMessage(r *http.Request) string {
t := time.Now()
var body []byte
if r.ContentLength > 1024 {
body = []byte("too long")
} else {
// Читаем тело запроса
body, _ = io.ReadAll(r.Body)
_ = r.Body.Close()
}
// Формируем содержимое
entry := fmt.Sprintf("[%s] %s %s%s\n", t.Format(time.RFC3339), r.Method, r.Host, r.URL.String())
entry += "RemoteAddr: " + r.RemoteAddr + "\n"
entry += "Headers:\n"
for name, values := range r.Header {
for _, v := range values {
entry += fmt.Sprintf(" %s: %s\n", name, v)
}
}
entry += fmt.Sprintf("Body:\n%s\n", string(body))
entry += "----\n"
entry = "```" + entry + "```"
return entry
}
func main() {
log.Println("Запуск приложения")
// Загружаем конфиг
@@ -44,31 +74,18 @@ func main() {
// Общий обработчик
handler := func(w http.ResponseWriter, r *http.Request) {
t := time.Now()
var body []byte
if r.ContentLength > 1024 {
body = []byte("too long")
} else {
// Читаем тело запроса
body, _ = io.ReadAll(r.Body)
_ = r.Body.Close()
paths := strings.Split(r.URL.Path, "/")
switch {
case len(paths) < 2:
w.WriteHeader(http.StatusNotFound)
return
case paths[1] == "telegram":
default:
w.WriteHeader(http.StatusNotFound)
return
}
// Формируем содержимое
entry := fmt.Sprintf("[%s] %s %s%s\n", t.Format(time.RFC3339), r.Method, r.Host, r.URL.String())
entry += "Headers:\n"
for name, values := range r.Header {
for _, v := range values {
entry += fmt.Sprintf(" %s: %s\n", name, v)
}
}
entry += fmt.Sprintf("Body:\n%s\n", string(body))
entry += "----\n"
entry = "```" + entry + "```"
entry := BuildMessage(r)
_, err = tg.SendTextMessage(cfg.Telegram.GroupID, entry)
if err != nil {
log.Println(err)