added golang http url routing

This commit is contained in:
2024-04-14 16:06:32 +02:00
parent fd4d1b1ed7
commit a0269f37f8
9 changed files with 64 additions and 25 deletions

5
.gitignore vendored
View File

@@ -7,3 +7,8 @@ acecore
# Logging
logs/
# Web
web/key.pem
web/cert.pem

View File

@@ -13,7 +13,7 @@ var color map[string]string = map[string]string{
"primary": "#211951",
}
var Gh_url string = "https://github.com/vaporvee/acecore/blob/main/"
const Gh_url string = "https://github.com/vaporvee/acecore/blob/main/"
func GetColor(s string) int {
hexColor := strings.TrimPrefix(color[s], "#")

1
custom/privacy.html Symbolic link
View File

@@ -0,0 +1 @@
web/html/privacy.html

1
custom/tos.html Symbolic link
View File

@@ -0,0 +1 @@
web/html/tos.html

View File

@@ -19,6 +19,7 @@ import (
"github.com/joho/godotenv"
"github.com/sirupsen/logrus"
"github.com/vaporvee/acecore/log2webhook"
"github.com/vaporvee/acecore/web"
)
var (
@@ -70,6 +71,7 @@ func main() {
logrus.Error(err)
}
logrus.Infof("Bot is now running as '%s'!", app.Bot.Username)
go web.HostRoutes(app.Bot.ID.String())
sc := make(chan os.Signal, 1)
signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt)

View File

@@ -1,23 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="0; url=https://discord.com/oauth2/authorize?client_id=1216816348433219644" />
<title>acecore</title>
</head>
<style>
a {
color: #212121;
}
body {
background-color: black;
}
</style>
<body>
<p><a href="https://discord.com/oauth2/authorize?client_id=1216816348433219644">Redirect</a></p>
</body>
</html>

53
web/web.go Normal file
View File

@@ -0,0 +1,53 @@
package web
import (
"embed"
"log"
"net/http"
"text/template"
"github.com/sirupsen/logrus"
"github.com/vaporvee/acecore/custom"
)
// Embed the HTML file into the binary
//
//go:embed html/privacy.html
var privacyHTML embed.FS
//go:embed html/tos.html
var tosHTML embed.FS
func handleHTML(w http.ResponseWriter, embed embed.FS, path string) {
tmpl, err := template.ParseFS(embed, path)
if err != nil {
logrus.Error(err)
return
}
tmpl.Execute(w, nil)
}
func HostRoutes(botID string) {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, custom.Gh_url, http.StatusMovedPermanently)
})
http.HandleFunc("/invite", func(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "https://discord.com/oauth2/authorize?client_id="+botID, http.StatusMovedPermanently)
})
http.HandleFunc("/privacy", func(w http.ResponseWriter, r *http.Request) {
handleHTML(w, privacyHTML, "./html/privacy.html")
})
http.HandleFunc("/tos", func(w http.ResponseWriter, r *http.Request) {
handleHTML(w, tosHTML, "./html/tos.html")
})
server := &http.Server{
Addr: ":443",
Handler: nil,
ErrorLog: log.New(nil, "", 0),
}
logrus.Info("Starting server for html routes on :443...")
if err := server.ListenAndServeTLS("./web/cert.pem", "./web/key.pem"); err != nil {
logrus.Errorf("Error starting server: %v\n", err)
}
}