2016-12-31 17:16:02 +08:00
// Copyright 2016 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2016-12-31 17:16:02 +08:00
package cmd
import (
2019-11-24 10:39:50 +00:00
"net"
2016-12-31 17:16:02 +08:00
"net/http"
2019-11-24 10:39:50 +00:00
"net/http/fcgi"
2021-04-09 14:17:57 +01:00
"strings"
2016-12-31 17:16:02 +08:00
2019-10-15 14:39:51 +01:00
"code.gitea.io/gitea/modules/graceful"
2019-11-24 10:39:50 +00:00
"code.gitea.io/gitea/modules/log"
2021-04-09 14:17:57 +01:00
"code.gitea.io/gitea/modules/setting"
2016-12-31 17:16:02 +08:00
)
2022-08-21 19:20:43 +01:00
func runHTTP ( network , listenAddr , name string , m http . Handler , useProxyProtocol bool ) error {
return graceful . HTTPListenAndServe ( network , listenAddr , name , m , useProxyProtocol )
2016-12-31 17:16:02 +08:00
}
2019-10-15 14:39:51 +01:00
// NoHTTPRedirector tells our cleanup routine that we will not be using a fallback http redirector
func NoHTTPRedirector ( ) {
2019-12-15 09:51:28 +00:00
graceful . GetManager ( ) . InformCleanup ( )
2019-10-15 14:39:51 +01:00
}
// NoMainListener tells our cleanup routine that we will not be using a possibly provided listener
// for our main HTTP/HTTPS service
func NoMainListener ( ) {
2019-12-15 09:51:28 +00:00
graceful . GetManager ( ) . InformCleanup ( )
2016-12-31 17:16:02 +08:00
}
2019-11-24 10:39:50 +00:00
2020-10-19 22:03:08 +01:00
// NoInstallListener tells our cleanup routine that we will not be using a possibly provided listener
// for our install HTTP/HTTPS service
func NoInstallListener ( ) {
graceful . GetManager ( ) . InformCleanup ( )
}
2022-08-21 19:20:43 +01:00
func runFCGI ( network , listenAddr , name string , m http . Handler , useProxyProtocol bool ) error {
2019-11-24 10:39:50 +00:00
// This needs to handle stdin as fcgi point
2021-03-08 02:43:59 +00:00
fcgiServer := graceful . NewServer ( network , listenAddr , name )
2019-11-24 10:39:50 +00:00
err := fcgiServer . ListenAndServe ( func ( listener net . Listener ) error {
2021-04-09 14:17:57 +01:00
return fcgi . Serve ( listener , http . HandlerFunc ( func ( resp http . ResponseWriter , req * http . Request ) {
if setting . AppSubURL != "" {
req . URL . Path = strings . TrimPrefix ( req . URL . Path , setting . AppSubURL )
}
m . ServeHTTP ( resp , req )
} ) )
2022-08-21 19:20:43 +01:00
} , useProxyProtocol )
2019-11-24 10:39:50 +00:00
if err != nil {
log . Fatal ( "Failed to start FCGI main server: %v" , err )
}
log . Info ( "FCGI Listener: %s Closed" , listenAddr )
return err
}