add configurable setting to enable running app for tor

This commit is contained in:
Lucy Cifferello
2020-08-12 16:19:58 -06:00
parent 4f33a78ddd
commit 44626aace9
3 changed files with 10 additions and 5 deletions

View File

@@ -32,6 +32,7 @@ app-compatibility-path: "_env:APP_COMPATIBILITY_CONFIG:/etc/start9/registry/comp
resources-path: "_env:RESOURCES_PATH:/var/www/html/resources"
ssl-path: "_env:SSL_PATH:/var/ssl"
registry-hostname: "_env:REGISTRY_HOSTNAME:registry.start9labs.com"
enable-tor: "false"
database:
database: "_env:PG_DATABASE:start9_registry"

View File

@@ -34,7 +34,7 @@ import Database.Persist.Postgresql (createPostgresqlPool, pg
import Language.Haskell.TH.Syntax (qLocation)
import Network.Wai
import Network.Wai.Handler.Warp (Settings, defaultSettings, defaultShouldDisplayException,
getPort, setHost, setOnException, setPort)
getPort, setHost, setOnException, setPort, run)
import Network.Wai.Handler.WarpTLS
import Network.Wai.Middleware.AcceptOverride
import Network.Wai.Middleware.Autohead
@@ -202,7 +202,9 @@ startWeb foundation = do
startWeb' app = do
let AppSettings{..} = appSettings foundation
putStrLn @Text $ "Launching Web Server on port " <> show appPort
action <- async $ runTLS
action <- async $ if enableTor
then run (fromIntegral appPort) app
else runTLS
(tlsSettings sslCertLocation sslKeyLocation)
(warpSettings foundation)
app

View File

@@ -53,6 +53,7 @@ data AppSettings = AppSettings
, sslKeyLocation :: FilePath
, sslCsrLocation :: FilePath
, sslCertLocation :: FilePath
, enableTor :: Bool
}
instance FromJSON AppSettings where
@@ -67,6 +68,7 @@ instance FromJSON AppSettings where
resourcesDir <- o .: "resources-path"
sslPath <- o .: "ssl-path"
registryHostname <- o .: "registry-hostname"
enableTor <- o .: "enable-tor"
let sslKeyLocation = sslPath </> "key.pem"
let sslCsrLocation = sslPath </> "certificate.csr"