From 04de3f84a7fafd069bbbef24db2317890d73dc84 Mon Sep 17 00:00:00 2001 From: teddy Date: Sat, 19 Apr 2025 01:05:10 +0700 Subject: [PATCH] update --- .dockerignore | 1 + .env-example | 15 +++++++ route/route.go | 74 +++++++++++++++++++++++++++++++++ template/high-memory-usage.html | 58 ++++++++++++++++++++++++++ template/server-down.html | 59 ++++++++++++++++++++++++++ 5 files changed, 207 insertions(+) create mode 100644 .env-example create mode 100644 template/high-memory-usage.html create mode 100644 template/server-down.html diff --git a/.dockerignore b/.dockerignore index e69de29..f9623a1 100644 --- a/.dockerignore +++ b/.dockerignore @@ -0,0 +1 @@ +.env-example \ No newline at end of file diff --git a/.env-example b/.env-example new file mode 100644 index 0000000..e670cf9 --- /dev/null +++ b/.env-example @@ -0,0 +1,15 @@ +PORT=3000 + +DB_PORT= +DB_NAME= +DB_USERNAME= +DB_PASSWORD= +DB_HOST= + +SMTP_PORT= +SMTP_HOST= +SMTP_SENDER= +AUTH_EMAIL= +AUTH_PASSWORD= + +ALERT_EMAIL=xxx@gmail.com,yyy@gmail.com \ No newline at end of file diff --git a/route/route.go b/route/route.go index c7627c2..344e967 100644 --- a/route/route.go +++ b/route/route.go @@ -8,6 +8,8 @@ import ( "fmt" "log" "net/http" + "os" + "strings" "time" "gorm.io/gorm" @@ -119,6 +121,78 @@ func Route(db *gorm.DB) { w.Write([]byte("success")) })) + http.HandleFunc("/server-down-notification", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodGet { + http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) + } + + sessionID := helper.GenerateSessionID() + module := "SERVER DOWN NOTIFICATION" + log.Printf("%+v %+v request %+v", sessionID, module, nil) + + subject := "Server Down 🚨" + + sendTo := strings.Split(os.Getenv("ALERT_EMAIL"), ",") + + type Data struct { + TimeAt string + Host string + } + + data := Data{TimeAt: time.Now().Format("2006-01-02 15:04:05"), Host: "36.66.3.44"} + + htmlString := helper.ParseHTML("template/server-down.html", data) + + go func() { + log.Printf("%+v %+v SENDING EMAIL TO %+v", sessionID, module, sendTo) + err := helper.SendEmail(sendTo, sendTo, "", subject, "", htmlString) + if err != nil { + log.Printf("%+v %+v response %+v", sessionID, module, err.Error()) + } else { + log.Printf("%+v %+v EMAIL SENT TO %+v", sessionID, module, sendTo) + } + }() + + log.Printf("%+v %+v response %+v", sessionID, module, "success") + w.Write([]byte("success")) + })) + + http.HandleFunc("/high-memory-notification", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodGet { + http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) + } + + sessionID := helper.GenerateSessionID() + module := "HIGH MEMORY USAGE NOTIFICATION" + log.Printf("%+v %+v request %+v", sessionID, module, nil) + + subject := "High Memory Usage 🚨" + + sendTo := strings.Split(os.Getenv("ALERT_EMAIL"), ",") + + type Data struct { + TimeAt string + Host string + } + + data := Data{TimeAt: time.Now().Format("2006-01-02 15:04:05"), Host: "36.66.3.44"} + + htmlString := helper.ParseHTML("template/high-memory-usage.html", data) + + go func() { + log.Printf("%+v %+v SENDING EMAIL TO %+v", sessionID, module, sendTo) + err := helper.SendEmail(sendTo, sendTo, "", subject, "", htmlString) + if err != nil { + log.Printf("%+v %+v response %+v", sessionID, module, err.Error()) + } else { + log.Printf("%+v %+v EMAIL SENT TO %+v", sessionID, module, sendTo) + } + }() + + log.Printf("%+v %+v response %+v", sessionID, module, "success") + w.Write([]byte("success")) + })) + http.HandleFunc("*", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(404) w.Write([]byte("what are you looking for!?")) diff --git a/template/high-memory-usage.html b/template/high-memory-usage.html new file mode 100644 index 0000000..11cdf34 --- /dev/null +++ b/template/high-memory-usage.html @@ -0,0 +1,58 @@ + + + + + 🚨 Penggunaan Memori Tinggi + + + +
+
🚨 Peringatan: Penggunaan Memori Tinggi
+ +
+ 🖥 Host: {{.Host}}
+ 📊 Penggunaan RAM: Melebihi 85%
+ 🕒 Waktu Deteksi: {{.TimeAt}}
+
+ +

+ Penggunaan memori pada server telah melebihi batas yang diizinkan. Mohon + segera lakukan pemeriksaan untuk menghindari potensi gangguan layanan. +

+ + +
+ + diff --git a/template/server-down.html b/template/server-down.html new file mode 100644 index 0000000..1c51bc1 --- /dev/null +++ b/template/server-down.html @@ -0,0 +1,59 @@ + + + + + 🚨 Server Down + + + +
+
+ 🚨 Peringatan: Server Down +
+ +
+ 🕒 Waktu Deteksi: {{.TimeAt}}
+ 🌐 Host / Endpoint: {{.Host}}
+
+ +

+ Mohon segera lakukan pengecekan pada sistem terkait agar layanan dapat + kembali normal. +

+ + +
+ +