Improve web service related aspects
This commit is contained in:
@@ -1,15 +1,66 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
func WebService() {
|
||||
log.Printf("[Info] Starting web service")
|
||||
log.Printf("[Info] Web service started on 0.0.0.0:2233")
|
||||
err := http.ListenAndServe("0.0.0.0:2233", nil)
|
||||
func getServerAddress(host string, port int) string {
|
||||
return host + ":" + strconv.Itoa(port)
|
||||
}
|
||||
|
||||
func CreateWebService() *http.Server {
|
||||
log.Printf("[Info] Create web service")
|
||||
config, err := GetConfig()
|
||||
if err != nil {
|
||||
log.Fatalf("[Error] Failed to start server: %v", err)
|
||||
log.Fatalf("[Error] Failed to load config: %v", err)
|
||||
}
|
||||
|
||||
addr := getServerAddress(config.Server.Host, config.Server.Port)
|
||||
|
||||
server := &http.Server{
|
||||
Addr: addr,
|
||||
ReadTimeout: time.Duration(config.Server.Advanced.Readtimeout) * time.Second,
|
||||
WriteTimeout: time.Duration(config.Server.Advanced.Writetimeout) * time.Second,
|
||||
IdleTimeout: time.Duration(config.Server.Advanced.Idletimeout) * time.Second,
|
||||
MaxHeaderBytes: config.Server.Advanced.Maxheaderbytes << 16,
|
||||
}
|
||||
if config.Server.Tls.Enabled {
|
||||
log.Printf("[Info] TLS enabled")
|
||||
server.TLSConfig = &tls.Config{
|
||||
PreferServerCipherSuites: true,
|
||||
SessionTicketsDisabled: false,
|
||||
}
|
||||
}
|
||||
return server
|
||||
}
|
||||
|
||||
func ListenWebService(server *http.Server) {
|
||||
config, err := GetConfig()
|
||||
if err != nil {
|
||||
log.Fatalf("[Error] Failed to load config: %v", err)
|
||||
}
|
||||
addr := getServerAddress(config.Server.Host, config.Server.Port)
|
||||
if config.Server.Tls.Enabled {
|
||||
log.Printf("[Info] Starting HTTPS server on %s", addr)
|
||||
err := server.ListenAndServeTLS(
|
||||
config.Server.Tls.Cert,
|
||||
config.Server.Tls.Key,
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatalf("[Error] HTTPS server failed: %v", err)
|
||||
}
|
||||
} else {
|
||||
log.Printf("[Info] Starting HTTP server on %s", addr)
|
||||
err := server.ListenAndServe()
|
||||
if err != nil {
|
||||
log.Fatalf("[Error] HTTP server failed: %v", err)
|
||||
}
|
||||
}
|
||||
if err != nil && err != http.ErrServerClosed {
|
||||
log.Fatalf("[Error] Web server terminated unexpectedly: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user