update CGI implementation to include more required variables

Signed-off-by: kim (grufwub) <grufwub@gmail.com>
master
kim (grufwub) 4 years ago
parent 8b902a637e
commit 1fbfe88bb2

@ -10,6 +10,8 @@ import (
)
var (
protocol string
// cgiEnv holds the global slice of constant CGI environment variables
cgiEnv []string
@ -28,6 +30,11 @@ func setupInitialCGIEnv(safePath string) []string {
env := make([]string, 0)
SystemLog.Info("CGI safe path: %s", safePath)
env = append(env, "GATEWAY_INTERFACE=CGI/1.1")
env = append(env, "SERVER_SOFTWARE=gophor "+Version)
env = append(env, "SERVER_PROTOCOL="+protocol)
env = append(env, "REQUEST_METHOD=GET") // always GET (in HTTP terms anywho)
env = append(env, "CONTENT_LENGTH=0") // always 0
env = append(env, "PATH="+safePath)
env = append(env, "SERVER_NAME="+Hostname)
env = append(env, "SERVER_PORT="+FwdPort)

@ -23,7 +23,7 @@ var (
)
// ParseFlagsAndSetup parses necessary core server flags, and sets up the core ready for Start() to be called
func ParseFlagsAndSetup(errorMessageFunc func(ErrorCode) string) {
func ParseFlagsAndSetup(proto string, errorMessageFunc func(ErrorCode) string) {
// Setup numerous temporary flag variables, and store the rest
// directly in their final operating location. Strings are stored
// in `string_constants.go` to allow for later localization
@ -91,11 +91,14 @@ func ParseFlagsAndSetup(errorMessageFunc func(ErrorCode) string) {
Port = strconv.Itoa(int(*port))
FwdPort = strconv.Itoa(int(*fwdPort))
// Set protocol string (only really used by CGI and one call to SystemLog)
protocol = proto
// Setup listener
var err Error
serverListener, err = newListener(BindAddr, Port)
if err != nil {
SystemLog.Fatal(listenerBeginFailStr, BindAddr, Port, err.Error())
SystemLog.Fatal(listenerBeginFailStr, protocol, Hostname, FwdPort, BindAddr, Port, err.Error())
}
// Host buffer sizes
@ -180,7 +183,7 @@ func Start(serve func(*Client)) {
go FileSystem.StartMonitor()
// Start the listener
SystemLog.Info(listeningOnStr, BindAddr, Port, Hostname, FwdPort)
SystemLog.Info(listeningOnStr, protocol, Hostname, FwdPort, BindAddr, Port)
go func() {
for {
client, err := serverListener.Accept()

@ -85,8 +85,8 @@ const (
chDirStr = "Entered server dir: %s"
chDirErrStr = "Error entering server directory: %s"
listenerBeginFailStr = "Failed to start listener on %s:%s (%s)"
listeningOnStr = "Listening on: %s:%s (%s:%s)"
listenerBeginFailStr = "Failed to start listener on %s://%s:%s (%s:%s) - %s"
listeningOnStr = "Listening on %s://%s:%s (%s:%s)"
cacheMonitorStartStr = "Starting cache monitor with freq: %s"

@ -13,7 +13,7 @@ func setup() {
admin := flag.String(adminFlagStr, "", adminDescStr)
desc := flag.String(descFlagStr, "", descDescStr)
geo := flag.String(geoFlagStr, "", geoDescStr)
core.ParseFlagsAndSetup(generateErrorMessage)
core.ParseFlagsAndSetup("gopher", generateErrorMessage)
// Setup gopher specific global variables
subgophermapSizeMax = int64(1048576.0 * *subgopherSizeMax) // convert float to megabytes

Loading…
Cancel
Save