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 :: IO ()
|
||||||
main = do
|
main = do
|
||||||
options@Options{ priority, verbosity } <- do
|
options@Options{ priority, timeout, verbosity } <- do
|
||||||
Options.execParser Options.parserInfo
|
Options.execParser Options.parserInfo
|
||||||
|
|
||||||
storeDirectory <- Nix.getStoreDir
|
storeDirectory <- Nix.getStoreDir
|
||||||
@ -351,27 +351,29 @@ main = do
|
|||||||
|
|
||||||
let application = logger (makeApplication ApplicationOptions{..})
|
let application = logger (makeApplication ApplicationOptions{..})
|
||||||
|
|
||||||
|
let sharedSettings =
|
||||||
|
Warp.defaultSettings
|
||||||
|
& Warp.setTimeout (fromIntegral timeout)
|
||||||
|
|
||||||
case options of
|
case options of
|
||||||
Options{ ssl = Disabled, socket = TCP{ host, port } } -> do
|
Options{ ssl = Disabled, socket = TCP{ host, port } } -> do
|
||||||
let settings =
|
let settings =
|
||||||
Warp.defaultSettings
|
sharedSettings
|
||||||
& Warp.setHost host
|
& Warp.setHost host
|
||||||
& Warp.setPort port
|
& Warp.setPort port
|
||||||
|
|
||||||
Warp.runSettings settings application
|
Warp.runSettings settings application
|
||||||
|
|
||||||
Options{ ssl = Disabled, socket = Unix{ backlog, path } } -> do
|
Options{ ssl = Disabled, socket = Unix{ backlog, path } } -> do
|
||||||
let settings = Warp.defaultSettings
|
|
||||||
|
|
||||||
socket <- toSocket backlog path
|
socket <- toSocket backlog path
|
||||||
|
|
||||||
Warp.runSettingsSocket settings socket application
|
Warp.runSettingsSocket sharedSettings socket application
|
||||||
|
|
||||||
Options{ ssl = Enabled{ cert, key }, socket = TCP{ host, port } } -> do
|
Options{ ssl = Enabled{ cert, key }, socket = TCP{ host, port } } -> do
|
||||||
let tlsSettings = WarpTLS.tlsSettings cert key
|
let tlsSettings = WarpTLS.tlsSettings cert key
|
||||||
|
|
||||||
let settings =
|
let settings =
|
||||||
Warp.defaultSettings
|
sharedSettings
|
||||||
& Warp.setHost host
|
& Warp.setHost host
|
||||||
& Warp.setPort port
|
& Warp.setPort port
|
||||||
|
|
||||||
@ -380,8 +382,6 @@ main = do
|
|||||||
Options{ ssl = Enabled{ cert, key }, socket = Unix{ backlog, path } } -> do
|
Options{ ssl = Enabled{ cert, key }, socket = Unix{ backlog, path } } -> do
|
||||||
let tlsSettings = WarpTLS.tlsSettings cert key
|
let tlsSettings = WarpTLS.tlsSettings cert key
|
||||||
|
|
||||||
let settings = Warp.defaultSettings
|
|
||||||
|
|
||||||
socket <- toSocket backlog path
|
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
|
{ priority :: Integer
|
||||||
, socket :: Socket
|
, socket :: Socket
|
||||||
, ssl :: SSL
|
, ssl :: SSL
|
||||||
|
, timeout :: Natural
|
||||||
, verbosity :: Verbosity
|
, verbosity :: Verbosity
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,6 +129,17 @@ parsePriority =
|
|||||||
<> Options.value 30
|
<> 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 :: Parser Verbosity
|
||||||
parseVerbosity =
|
parseVerbosity =
|
||||||
Options.flag' Quiet
|
Options.flag' Quiet
|
||||||
@ -148,6 +160,8 @@ parseOptions = do
|
|||||||
|
|
||||||
priority <- parsePriority
|
priority <- parsePriority
|
||||||
|
|
||||||
|
timeout <- parseTimeout
|
||||||
|
|
||||||
verbosity <- parseVerbosity
|
verbosity <- parseVerbosity
|
||||||
|
|
||||||
return Options{..}
|
return Options{..}
|
||||||
@ -198,6 +212,8 @@ parseListen = do
|
|||||||
|
|
||||||
priority <- parsePriority
|
priority <- parsePriority
|
||||||
|
|
||||||
|
timeout <- parseTimeout
|
||||||
|
|
||||||
verbosity <- parseVerbosity
|
verbosity <- parseVerbosity
|
||||||
|
|
||||||
return Options{..}
|
return Options{..}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user