You've already forked directdnsonly-go
59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
|
|
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"))
|
||
|
|
|
||
|
|
}
|