mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
Source files keep their SPDX-License-Identifier and Hanzo copyright line; the Gitea, Gogs and LFS Test Server copyrights they used to repeat now live once in NOTICE, alongside LICENSE. The header lint accepts any copyright line above the SPDX line, so it no longer demands an upstream one. Co-authored-by: Hanzo Dev <[email protected]>
50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package cmd
|
|
|
|
import (
|
|
"net"
|
|
"net/http"
|
|
"net/http/fcgi"
|
|
"strings"
|
|
|
|
"github.com/hanzoai/git/modules/graceful"
|
|
"github.com/hanzoai/git/modules/log"
|
|
"github.com/hanzoai/git/modules/setting"
|
|
)
|
|
|
|
func runHTTP(network, listenAddr, name string, m http.Handler, useProxyProtocol bool) error {
|
|
return graceful.HTTPListenAndServe(network, listenAddr, name, m, useProxyProtocol)
|
|
}
|
|
|
|
// NoHTTPRedirector tells our cleanup routine that we will not be using a fallback http redirector
|
|
func NoHTTPRedirector() {
|
|
graceful.GetManager().InformCleanup()
|
|
}
|
|
|
|
// 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()
|
|
}
|
|
|
|
func runFCGI(network, listenAddr, name string, m http.Handler, useProxyProtocol bool) error {
|
|
// This needs to handle stdin as fcgi point
|
|
fcgiServer := graceful.NewServer(network, listenAddr, name)
|
|
|
|
err := fcgiServer.ListenAndServe(func(listener net.Listener) error {
|
|
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)
|
|
}))
|
|
}, useProxyProtocol)
|
|
if err != nil {
|
|
log.Fatal("Failed to start FCGI main server: %v", err)
|
|
}
|
|
log.Info("FCGI Listener: %s Closed", listenAddr)
|
|
return err
|
|
}
|