From a6bd4cba833bd576c20ca05badc3aa26ce7f0f91 Mon Sep 17 00:00:00 2001 From: "Juan J. Martinez" Date: Tue, 31 Aug 2021 22:57:23 +0100 Subject: Support to pass env variables to CGIs Env variables are configured per virtual host. --- server/src/net/usebox/gemini/server/Response.scala | 5 +++-- server/src/net/usebox/gemini/server/Server.scala | 3 ++- server/src/net/usebox/gemini/server/ServiceConf.scala | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) (limited to 'server/src') diff --git a/server/src/net/usebox/gemini/server/Response.scala b/server/src/net/usebox/gemini/server/Response.scala index a6993c4..edb6cdc 100644 --- a/server/src/net/usebox/gemini/server/Response.scala +++ b/server/src/net/usebox/gemini/server/Response.scala @@ -91,7 +91,8 @@ case class Cgi( scriptName: String, host: String, port: String, - remoteAddr: String + remoteAddr: String, + vhEnv: Map[String, String] ) extends Response { private[this] val logger = getLogger @@ -100,7 +101,7 @@ case class Cgi( val responseRe = "([0-9]{2}) (.*)".r - val env = Map( + val env = vhEnv ++ Map( "GATEWAY_INTERFACE" -> "CGI/1.1", "SERVER_SOFTWARE" -> s"${BuildInfo.name}/${BuildInfo.version}", "SERVER_PROTOCOL" -> "GEMINI", diff --git a/server/src/net/usebox/gemini/server/Server.scala b/server/src/net/usebox/gemini/server/Server.scala index 3c78721..f402191 100644 --- a/server/src/net/usebox/gemini/server/Server.scala +++ b/server/src/net/usebox/gemini/server/Server.scala @@ -137,7 +137,8 @@ case class Server(conf: ServiceConf) { scriptName = cgiFile.getFileName().toString(), host = vhost.host, port = conf.port.toString(), - remoteAddr = remoteAddr + remoteAddr = remoteAddr, + vhEnv = vhost.environment.getOrElse(Map()) ) case path if !path.exists() => logger.debug("no resource") diff --git a/server/src/net/usebox/gemini/server/ServiceConf.scala b/server/src/net/usebox/gemini/server/ServiceConf.scala index dc28650..43786af 100644 --- a/server/src/net/usebox/gemini/server/ServiceConf.scala +++ b/server/src/net/usebox/gemini/server/ServiceConf.scala @@ -26,7 +26,8 @@ case class VirtualHost( geminiParams: Option[String] = None, directories: List[Directory] = Nil, userDirectories: Boolean = false, - userDirectoryPath: Option[String] = None + userDirectoryPath: Option[String] = None, + environment: Option[Map[String, String]] = None ) object VirtualHost { -- cgit v1.2.3