Files
old-reklame-agent/internal/app/telal/adserver.go

74 lines
62 KiB
Go
Raw Normal View History

2023-03-02 07:24:12 +01:00
package telal
import (
"encoding/json"
"log"
"net/http"
2023-03-04 11:45:53 +01:00
"path/filepath"
2023-03-02 07:24:12 +01:00
"time"
"github.com/gorilla/websocket"
)
// Message represents the format of messages sent to clients
type Message struct {
Type string `json:"type"`
URL string `json:"url"`
}
2023-03-04 11:45:53 +01:00
func ServeBanners() {
2023-03-02 07:24:12 +01:00
// Create a new WebSocket upgrader
upgrader := websocket.Upgrader{}
2023-03-04 11:45:53 +01:00
upgrader.CheckOrigin = func(r *http.Request) bool { return true }
// Set up a file server to serve static files from the /web/static/ folder
fs := staticFileServer("./web/static")
http.Handle("/", fs)
2023-03-02 07:24:12 +01:00
// Create a handler function for WebSocket connections
handler := func(w http.ResponseWriter, r *http.Request) {
// Upgrade the HTTP connection to a WebSocket connection
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println(err)
return
}
defer conn.Close()
// Send a message containing an image URL every 5 seconds
for {
message := Message{
Type: "image",
2023-03-04 11:45:53 +01:00
URL: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAQ4CAYAAADo08FDAAAgAElEQVR4Xuzce6jfdR3H8c/ZXd2cLrd0OTUvJU5MQQuhBBMEzT8SSZAM/MPqj6RS6Y8gELoR/RGBQWX+UyFE4OUPiW5iN7tJhAvLkpaXpvM23XTM7bitc05kGXo8xw1pzx6/P89+57vzfrxe/734/SZ+s+yavcOLAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBA54gQkD8AGfoQMIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwI2AAVgQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhEBAzAkSCdQYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQOwDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAiYACOBOkMAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIGIB1gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAhEBA3AkSGcQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDAAKwDBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQiAgYgCNBOoMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIGYB0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBARMAAHAnSGQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEDAA6wABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQiAgbgSJDOIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAgAFYBwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBARMABHgnQGAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEDMA6QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYiAATgSpDMIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBgANYBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAQMwJEgnUGAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEDsA4QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgImAAjgTpDAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBiAdYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIRAQNwJEhnECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAwACsAwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEIgIGIAjQTqDAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBmAdIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQETAABwJ0hkECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAwAOsAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEIgIG4EiQziBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgIABWAcIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQETAAR4J0BgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAzAOkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGIgAE4EqQzCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgYADWAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECEQEDMCRIJ1BgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABA7AOECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAICJgAI4E6QwCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgYgHWAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECEQEDcCRIZxAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQMAArAMECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCICBiAI0E6gwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgZgHSBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBEwAAcCdIZBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQMADrAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBCICBuBIkM4gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQICAAVgHCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgEBEwAEeCdAYBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQMwDpAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBiIABOBKkMwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIGAA1gECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhEBAzAkSCdQYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQOwDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAiYACOBOkMAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIGIB1gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAhEBA3AkSGcQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDAAKwDBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQiAgYgCNBOoMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIGYB0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBARMAAHAnSGQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEDAA6wABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQiAgbgSJDOIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAgAFYBwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBARMABHgnQGAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEDMA6QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYiAATgSpDMIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBgANYBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAQMwJEgnUGAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEDsA4QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgImAAjgTpDAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBiAdYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIRAQNwJEhnECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAwACsAwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEIgIGIAjQTqDAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBmAdIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQETAABwJ0hkECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAwAOsAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEIgIG4EiQziBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgIABWAcIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQETAAR4J0BgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAzAOkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAI
2023-03-02 07:24:12 +01:00
}
jsonMessage, err := json.Marshal(message)
if err != nil {
log.Println(err)
return
}
err = conn.WriteMessage(websocket.TextMessage, jsonMessage)
if err != nil {
log.Println(err)
return
}
time.Sleep(5 * time.Second)
}
}
// Set up an HTTP server with the WebSocket handler
2023-03-04 11:45:53 +01:00
http.HandleFunc("/ws", handler)
log.Fatal(http.ListenAndServe(":8081", nil))
}
// staticFileServer returns an http.Handler that serves static files from the given directory
func staticFileServer(dir string) http.Handler {
fs := http.FileServer(http.Dir(dir))
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Set the content type header to "text/html" for .html files
if filepath.Ext(r.URL.Path) == ".html" {
w.Header().Set("Content-Type", "text/html")
}
fs.ServeHTTP(w, r)
})
2023-03-02 07:24:12 +01:00
}