tytanium/main.go

71 lines
2.2 KiB
Go
Raw Permalink Normal View History

2021-01-15 21:44:25 +00:00
package main
import (
2021-07-08 02:22:34 +00:00
_ "embed"
2021-01-15 21:44:25 +00:00
"github.com/valyala/fasthttp"
"log"
"os"
2021-07-24 14:01:51 +00:00
"os/signal"
"strconv"
2021-01-15 21:44:25 +00:00
"time"
2022-03-30 19:13:35 +00:00
"tytanium/constants"
"tytanium/global"
"tytanium/logger"
"tytanium/middleware"
2021-01-15 21:44:25 +00:00
)
func main() {
s := &fasthttp.Server{
ErrorHandler: nil,
// yo what da fuck
2021-09-08 23:37:19 +00:00
Handler: middleware.HandleCORS(middleware.LimitPath(middleware.HandleHTTPRequest)),
2021-01-15 21:44:25 +00:00
HeaderReceived: nil,
ContinueHandler: nil,
Concurrency: global.Configuration.Server.Concurrency,
2021-01-15 21:44:25 +00:00
DisableKeepalive: false,
2022-03-23 03:15:29 +00:00
ReadTimeout: time.Millisecond * time.Duration(global.Configuration.Server.ReadTimeout),
WriteTimeout: time.Millisecond * time.Duration(global.Configuration.Server.WriteTimeout),
2021-01-15 21:44:25 +00:00
TCPKeepalive: false,
TCPKeepalivePeriod: 0,
2022-03-23 03:15:29 +00:00
MaxRequestBodySize: int(global.Configuration.Storage.MaxSize) + constants.RequestMaxBodySizePadding,
2021-01-15 21:44:25 +00:00
ReduceMemoryUsage: false,
GetOnly: false,
2022-03-23 03:15:29 +00:00
DisablePreParseMultipartForm: true,
2021-01-15 21:44:25 +00:00
LogAllErrors: false,
DisableHeaderNamesNormalizing: false,
2022-03-23 03:15:29 +00:00
NoDefaultServerHeader: true,
NoDefaultDate: true,
NoDefaultContentType: true,
2021-01-15 21:44:25 +00:00
KeepHijackedConns: false,
}
2022-03-23 03:15:29 +00:00
portAsString := strconv.Itoa(global.Configuration.Server.Port)
log.Println("Server is listening for new requests on port " + portAsString)
if global.Configuration.Logging.Enabled {
2022-03-30 19:13:35 +00:00
logger.InfoLogger.Printf("Server online, port %s, version %s", portAsString, constants.Version)
2022-03-23 03:15:29 +00:00
}
2021-07-24 14:01:51 +00:00
stop := make(chan os.Signal)
signal.Notify(stop, os.Interrupt)
go func() {
2021-09-08 23:37:19 +00:00
if err := s.ListenAndServe(":" + portAsString); err != nil {
2021-07-24 14:01:51 +00:00
log.Fatalf("Listen error: %v\n", err)
}
}()
<-stop
2022-03-30 19:13:35 +00:00
log.Println("Server is shutting down, please wait")
2022-03-23 03:15:29 +00:00
logger.InfoLogger.Println("Server started graceful shutdown")
2021-07-24 14:01:51 +00:00
if err := s.Shutdown(); err != nil {
2022-03-23 03:15:29 +00:00
logger.ErrorLogger.Printf("Server failed to shut down gracefully: %v", err)
2021-07-24 14:01:51 +00:00
log.Fatalf("Failed to shutdown gracefully: %v\n", err)
2021-01-15 21:44:25 +00:00
}
2022-03-30 19:13:35 +00:00
log.Println("Shut down. See you next time!")
2022-03-23 03:15:29 +00:00
logger.InfoLogger.Println("Server shut down successfully")
2021-07-24 14:01:51 +00:00
os.Exit(0)
2021-01-15 21:44:25 +00:00
}