81 lines
1.8 KiB
Go
81 lines
1.8 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/gofiber/fiber/v2"
|
||
|
"github.com/rs/zerolog"
|
||
|
"github.com/rs/zerolog/log"
|
||
|
"io"
|
||
|
"net/http"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
const BaseURL = "https://www.ispyconnect.com"
|
||
|
|
||
|
func main() {
|
||
|
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
|
||
|
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
|
||
|
|
||
|
app := fiber.New()
|
||
|
|
||
|
app.Get("/api/Agent/SMS", func(c *fiber.Ctx) error {
|
||
|
userIdent := c.Query("UserIdent")
|
||
|
number := c.Query("Number")
|
||
|
body := c.Query("Body")
|
||
|
|
||
|
if userIdent == "" || number == "" || body == "" {
|
||
|
return c.SendStatus(400)
|
||
|
}
|
||
|
|
||
|
log.Info().Str("userIdent", userIdent).Str("number", number).Str("body", body).Msg("SMS")
|
||
|
|
||
|
return c.SendStatus(200)
|
||
|
})
|
||
|
app.Get("/api/Agent/CheckLicense", func(c *fiber.Ctx) error {
|
||
|
return c.Send([]byte("true"))
|
||
|
})
|
||
|
|
||
|
app.Use(forwardGetFromContext)
|
||
|
|
||
|
if err := app.ListenTLS(":443", "/data/ssl.crt", "/data/ssl.key"); err != nil {
|
||
|
log.Fatal().Err(err).Msg("Error while starting server")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func forwardGet(url string, h http.Header) ([]byte, int, http.Header, error) {
|
||
|
req, err := http.NewRequest("GET", BaseURL+url, nil)
|
||
|
if err != nil {
|
||
|
return nil, 0, nil, err
|
||
|
}
|
||
|
|
||
|
req.Header = h
|
||
|
|
||
|
resp, err := http.DefaultClient.Do(req)
|
||
|
if err != nil {
|
||
|
return nil, 0, nil, err
|
||
|
}
|
||
|
defer resp.Body.Close()
|
||
|
body, err := io.ReadAll(resp.Body)
|
||
|
if err != nil {
|
||
|
return nil, resp.StatusCode, nil, err
|
||
|
}
|
||
|
|
||
|
return body, resp.StatusCode, resp.Header, nil
|
||
|
}
|
||
|
|
||
|
func forwardGetFromContext(c *fiber.Ctx) error {
|
||
|
resp, status, headers, err := forwardGet(c.OriginalURL(), c.GetReqHeaders())
|
||
|
|
||
|
for k, v := range headers {
|
||
|
c.Set(k, v[0])
|
||
|
}
|
||
|
|
||
|
l := log.Info().Err(err).Str("url", c.OriginalURL()).Int("status", status)
|
||
|
query := c.Queries()
|
||
|
for k, v := range query {
|
||
|
l = l.Str(k, v)
|
||
|
}
|
||
|
l.Msg("Forwarded request")
|
||
|
|
||
|
return c.Status(status).Send(resp)
|
||
|
}
|