Files
directdnsonly-go/cmd/directdnsonly/main.go

59 lines
1.6 KiB
Go
Raw Normal View History

2024-01-17 15:56:44 +13:00
package main
import (
"crypto/subtle"
"net/http"
"os"
"time"
"github.com/guisea/directdnsonly/internal/handlers"
"github.com/guisea/directdnsonly/internal/version"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
echoLog "github.com/labstack/gommon/log"
EchoLogrusMiddleware "github.com/neko-neko/echo-logrus/v2"
"github.com/neko-neko/echo-logrus/v2/log"
"github.com/sirupsen/logrus"
)
func main() {
e := echo.New()
e.HideBanner = true
e.HidePort = true
e.Debug = true
// Logger Handler
log.Logger().SetOutput(os.Stdout)
log.Logger().SetLevel(echoLog.INFO)
log.Logger().SetFormatter(&logrus.JSONFormatter{
TimestampFormat: time.RFC3339,
})
e.Logger = log.Logger()
e.Use(middleware.Recover(),
EchoLogrusMiddleware.Logger(),
middleware.RequestID(),
middleware.BasicAuth(func(username, password string, c echo.Context) (bool, error) {
// Be careful to use constant time comparison to prevent timing attacks
if subtle.ConstantTimeCompare([]byte(username), []byte("test")) == 1 &&
subtle.ConstantTimeCompare([]byte(password), []byte("test")) == 1 {
return true, nil
}
return false, nil
}))
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
})
e.GET("/CMD_API_LOGIN_TEST", handlers.LoginTest)
e.Match([]string{"GET", "POST"}, "/CMD_API_DNS_ADMIN", handlers.DNSAdmin)
log.Info("Directdnsonly Version: " + version.Version + " Started!!")
log.Info("Build Date: ", version.BuildDate)
log.Info("Go Version: ", version.GoVersion)
log.Info("OS / Arch: ", version.OsArch)
e.Logger.Fatal(e.Start(":1323"))
}