2016-12-31 12:16:02 +03:00
// Copyright 2016 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package cmd
import (
"crypto/tls"
2019-11-24 13:39:50 +03:00
"net"
2016-12-31 12:16:02 +03:00
"net/http"
2019-11-24 13:39:50 +03:00
"net/http/fcgi"
2016-12-31 12:16:02 +03:00
2019-10-15 16:39:51 +03:00
"code.gitea.io/gitea/modules/graceful"
2019-11-24 13:39:50 +03:00
"code.gitea.io/gitea/modules/log"
2016-12-31 12:16:02 +03:00
)
2019-11-24 05:11:24 +03:00
func runHTTP ( network , listenAddr string , m http . Handler ) error {
return graceful . HTTPListenAndServe ( network , listenAddr , m )
2016-12-31 12:16:02 +03:00
}
2019-11-24 05:11:24 +03:00
func runHTTPS ( network , listenAddr , certFile , keyFile string , m http . Handler ) error {
return graceful . HTTPListenAndServeTLS ( network , listenAddr , certFile , keyFile , m )
2019-10-15 16:39:51 +03:00
}
2019-11-24 05:11:24 +03:00
func runHTTPSWithTLSConfig ( network , listenAddr string , tlsConfig * tls . Config , m http . Handler ) error {
return graceful . HTTPListenAndServeTLSConfig ( network , listenAddr , tlsConfig , m )
2019-10-15 16:39:51 +03:00
}
// NoHTTPRedirector tells our cleanup routine that we will not be using a fallback http redirector
func NoHTTPRedirector ( ) {
2019-12-15 12:51:28 +03:00
graceful . GetManager ( ) . InformCleanup ( )
2019-10-15 16:39:51 +03: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 12:51:28 +03:00
graceful . GetManager ( ) . InformCleanup ( )
2016-12-31 12:16:02 +03:00
}
2019-11-24 13:39:50 +03:00
2019-12-10 15:23:26 +03:00
func runFCGI ( network , listenAddr string , m http . Handler ) error {
2019-11-24 13:39:50 +03:00
// This needs to handle stdin as fcgi point
2019-12-10 15:23:26 +03:00
fcgiServer := graceful . NewServer ( network , listenAddr )
2019-11-24 13:39:50 +03:00
err := fcgiServer . ListenAndServe ( func ( listener net . Listener ) error {
return fcgi . Serve ( listener , m )
} )
if err != nil {
log . Fatal ( "Failed to start FCGI main server: %v" , err )
}
log . Info ( "FCGI Listener: %s Closed" , listenAddr )
return err
}