package main import ( "fmt" "os" "runtime" "webp_server_go/config" "webp_server_go/encoder" "webp_server_go/handler" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/etag" "github.com/gofiber/fiber/v2/middleware/logger" log "github.com/sirupsen/logrus" ) var app = fiber.New(fiber.Config{ ServerHeader: "Webp Server Go", AppName: "Webp Server Go", DisableStartupMessage: true, ProxyHeader: "X-Real-IP", }) func setupLogger() { log.SetOutput(os.Stdout) log.SetReportCaller(true) formatter := &log.TextFormatter{ EnvironmentOverrideColors: true, FullTimestamp: true, TimestampFormat: config.TimeDateFormat, CallerPrettyfier: func(f *runtime.Frame) (string, string) { return fmt.Sprintf("[%d:%s]", f.Line, f.Function), "" }, } log.SetFormatter(formatter) log.SetLevel(log.InfoLevel) // fiber logger format app.Use(logger.New(logger.Config{ Format: config.FiberLogFormat, TimeFormat: config.TimeDateFormat, })) log.Infoln("Logger ready.") } func init() { setupLogger() } func main() { // Our banner banner := fmt.Sprintf(` ▌ ▌ ▌ ▛▀▖ ▞▀▖ ▞▀▖ ▌▖▌▞▀▖▛▀▖▙▄▘ ▚▄ ▞▀▖▙▀▖▌ ▌▞▀▖▙▀▖ ▌▄▖▞▀▖ ▙▚▌▛▀ ▌ ▌▌ ▖ ▌▛▀ ▌ ▐▐ ▛▀ ▌ ▌ ▌▌ ▌ ▘ ▘▝▀▘▀▀ ▘ ▝▀ ▝▀▘▘ ▘ ▝▀▘▘ ▝▀ ▝▀ Webp Server Go - v%s Develop by WebP Server team. https://github.com/webp-sh`, config.Version) // process cli params if config.DumpConfig { fmt.Println(config.SampleConfig) os.Exit(0) } if config.DumpSystemd { fmt.Println(config.SampleSystemd) os.Exit(0) } if config.ShowVersion { fmt.Printf("\n %c[1;32m%s%c[0m\n\n", 0x1B, banner+"", 0x1B) os.Exit(0) } if config.Prefetch { go encoder.PrefetchImages() } app.Use(etag.New(etag.Config{ Weak: true, })) listenAddress := config.Config.Host + ":" + config.Config.Port app.Get("/*", handler.Convert) fmt.Printf("\n %c[1;32m%s%c[0m\n\n", 0x1B, banner, 0x1B) fmt.Println("Webp Server Go is Running on http://" + listenAddress) _ = app.Listen(listenAddress) }