parent
eaceeeb8ce
commit
027398c9e9
18
src/Main.hs
18
src/Main.hs
@ -334,7 +334,7 @@ readSecretKey = fmap ByteString.Char8.strip . ByteString.readFile
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
options@Options{ priority, verbosity } <- do
|
||||
options@Options{ priority, timeout, verbosity } <- do
|
||||
Options.execParser Options.parserInfo
|
||||
|
||||
storeDirectory <- Nix.getStoreDir
|
||||
@ -351,27 +351,29 @@ main = do
|
||||
|
||||
let application = logger (makeApplication ApplicationOptions{..})
|
||||
|
||||
let sharedSettings =
|
||||
Warp.defaultSettings
|
||||
& Warp.setTimeout (fromIntegral timeout)
|
||||
|
||||
case options of
|
||||
Options{ ssl = Disabled, socket = TCP{ host, port } } -> do
|
||||
let settings =
|
||||
Warp.defaultSettings
|
||||
sharedSettings
|
||||
& Warp.setHost host
|
||||
& Warp.setPort port
|
||||
|
||||
Warp.runSettings settings application
|
||||
|
||||
Options{ ssl = Disabled, socket = Unix{ backlog, path } } -> do
|
||||
let settings = Warp.defaultSettings
|
||||
|
||||
socket <- toSocket backlog path
|
||||
|
||||
Warp.runSettingsSocket settings socket application
|
||||
Warp.runSettingsSocket sharedSettings socket application
|
||||
|
||||
Options{ ssl = Enabled{ cert, key }, socket = TCP{ host, port } } -> do
|
||||
let tlsSettings = WarpTLS.tlsSettings cert key
|
||||
|
||||
let settings =
|
||||
Warp.defaultSettings
|
||||
sharedSettings
|
||||
& Warp.setHost host
|
||||
& Warp.setPort port
|
||||
|
||||
@ -380,8 +382,6 @@ main = do
|
||||
Options{ ssl = Enabled{ cert, key }, socket = Unix{ backlog, path } } -> do
|
||||
let tlsSettings = WarpTLS.tlsSettings cert key
|
||||
|
||||
let settings = Warp.defaultSettings
|
||||
|
||||
socket <- toSocket backlog path
|
||||
|
||||
WarpTLS.runTLSSocket tlsSettings settings socket application
|
||||
WarpTLS.runTLSSocket tlsSettings sharedSettings socket application
|
||||
|
||||
@ -29,6 +29,7 @@ data Options = Options
|
||||
{ priority :: Integer
|
||||
, socket :: Socket
|
||||
, ssl :: SSL
|
||||
, timeout :: Natural
|
||||
, verbosity :: Verbosity
|
||||
}
|
||||
|
||||
@ -128,6 +129,17 @@ parsePriority =
|
||||
<> Options.value 30
|
||||
)
|
||||
|
||||
parseTimeout :: Parser Natural
|
||||
parseTimeout =
|
||||
Options.option Options.auto
|
||||
( Options.long "timeout"
|
||||
<> Options.help "Timeout for requests"
|
||||
<> Options.metavar "SECONDS"
|
||||
-- nix-serve does not timeout requests, but warp insists on a
|
||||
-- timeout, so we use the same default timeout as hydra
|
||||
<> Options.value (10 * 60)
|
||||
)
|
||||
|
||||
parseVerbosity :: Parser Verbosity
|
||||
parseVerbosity =
|
||||
Options.flag' Quiet
|
||||
@ -148,6 +160,8 @@ parseOptions = do
|
||||
|
||||
priority <- parsePriority
|
||||
|
||||
timeout <- parseTimeout
|
||||
|
||||
verbosity <- parseVerbosity
|
||||
|
||||
return Options{..}
|
||||
@ -198,6 +212,8 @@ parseListen = do
|
||||
|
||||
priority <- parsePriority
|
||||
|
||||
timeout <- parseTimeout
|
||||
|
||||
verbosity <- parseVerbosity
|
||||
|
||||
return Options{..}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user