这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ For ``serve`` subcommand these are the flags available

.. code-block:: none

--server-host IP address of network interface that graphql-engine will listen on (default: '*', all interfaces)

--server-port Port on which graphql-engine should be served (default: 8080)

--access-key Secret access key, required to access this instance.
Expand Down Expand Up @@ -74,7 +76,7 @@ For ``serve`` subcommand these are the flags available

-i, --tx-iso Transaction isolation. read-commited / repeatable-read /
serializable

--enable-console Enable API console. It is served at '/' and '/console'


Expand Down Expand Up @@ -113,6 +115,7 @@ These are the environment variables which are available:
HASURA_GRAPHQL_TX_ISOLATION transaction isolation. read-committed /
repeatable-read / serializable
(default: read-commited)
HASURA_GRAPHQL_SERVER_HOST IP address of network interface that graphql-engine will listen on

HASURA_GRAPHQL_SERVER_PORT Port on which graphql-engine should be served

Expand Down
9 changes: 5 additions & 4 deletions server/src-exec/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ parseHGECommand =
where
serveOpts = RawServeOptions
<$> parseServerPort
<*> parseServerHost
<*> parseConnParams
<*> parseTxIsolation
<*> parseAccessKey
Expand Down Expand Up @@ -99,8 +100,8 @@ main = do
loggerCtx <- mkLoggerCtx $ defaultLoggerSettings True
let logger = mkLogger loggerCtx
case hgeCmd of
HCServe so@(ServeOptions port cp isoL mAccessKey mAuthHook mJwtSecret
mUnAuthRole corsCfg enableConsole) -> do
HCServe so@(ServeOptions port host cp isoL mAccessKey mAuthHook
mJwtSecret mUnAuthRole corsCfg enableConsole) -> do
-- log serve options
unLogger logger $ serveOptsToLog so
hloggerCtx <- mkLoggerCtx $ defaultLoggerSettings False
Expand All @@ -123,8 +124,8 @@ main = do
pool <- Q.initPGPool ci cp
(app, cacheRef) <- mkWaiApp isoL loggerCtx pool httpManager
am corsCfg enableConsole
let warpSettings = Warp.setPort port Warp.defaultSettings
-- Warp.setHost "*" Warp.defaultSettings

let warpSettings = Warp.setPort port $ Warp.setHost host Warp.defaultSettings

-- start a background thread to check for updates
void $ C.forkIO $ checkForUpdates loggerCtx httpManager
Expand Down
28 changes: 25 additions & 3 deletions server/src-lib/Hasura/Server/Init.hs
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@ import qualified Data.Aeson as J
import qualified Data.Text as T
import qualified Hasura.Logging as L
import qualified Text.PrettyPrint.ANSI.Leijen as PP

import qualified Data.String as DataString
import Hasura.Prelude
import Hasura.RQL.DDL.Utils
import Hasura.RQL.Types (RoleName (..))
import Hasura.Server.Auth
import Hasura.Server.Logging
import Hasura.Server.Utils
import Network.Wai.Handler.Warp


initErrExit :: (Show e) => e -> IO a
initErrExit e = print e >> exitFailure
Expand All @@ -36,6 +38,7 @@ type RawAuthHook = AuthHookG (Maybe T.Text) (Maybe AuthHookType)
data RawServeOptions
= RawServeOptions
{ rsoPort :: !(Maybe Int)
, rsoHost :: !(Maybe HostPreference)
, rsoConnParams :: !RawConnParams
, rsoTxIso :: !(Maybe Q.TxIsolation)
, rsoAccessKey :: !(Maybe AccessKey)
Expand All @@ -58,6 +61,7 @@ type CorsConfig = CorsConfigG T.Text
data ServeOptions
= ServeOptions
{ soPort :: !Int
, soHost :: !HostPreference
, soConnParams :: !Q.ConnParams
, soTxIso :: !Q.TxIsolation
, soAccessKey :: !(Maybe AccessKey)
Expand Down Expand Up @@ -107,6 +111,9 @@ class FromEnv a where
instance FromEnv String where
fromEnv = Right

instance FromEnv HostPreference where
fromEnv = Right . DataString.fromString

instance FromEnv Text where
fromEnv = Right . T.pack

Expand Down Expand Up @@ -202,6 +209,9 @@ mkServeOptions :: RawServeOptions -> WithEnv ServeOptions
mkServeOptions rso = do
port <- fromMaybe 8080 <$>
withEnv (rsoPort rso) (fst servePortEnv)
host <- fromMaybe "*" <$>
withEnv (rsoHost rso) (fst serveHostEnv)

connParams <- mkConnParams $ rsoConnParams rso
txIso <- fromMaybe Q.ReadCommitted <$>
withEnv (rsoTxIso rso) (fst txIsoEnv)
Expand All @@ -212,7 +222,7 @@ mkServeOptions rso = do
corsCfg <- mkCorsConfig $ rsoCorsConfig rso
enableConsole <- withEnvBool (rsoEnableConsole rso) $
fst enableConsoleEnv
return $ ServeOptions port connParams txIso accKey authHook
return $ ServeOptions port host connParams txIso accKey authHook
jwtSecr unAuthRole corsCfg enableConsole
where
mkConnParams (RawConnParams s c i) = do
Expand Down Expand Up @@ -308,7 +318,7 @@ serveCmdFooter =

envVarDoc = mkEnvVarDoc $ envVars <> eventEnvs
envVars =
[ servePortEnv, pgStripesEnv, pgConnsEnv, pgTimeoutEnv
[ servePortEnv, serveHostEnv, pgStripesEnv, pgConnsEnv, pgTimeoutEnv
, txIsoEnv, accessKeyEnv, authHookEnv , authHookModeEnv
, jwtSecretEnv , unAuthRoleEnv, corsDomainEnv , enableConsoleEnv
]
Expand All @@ -328,6 +338,12 @@ servePortEnv =
, "Port on which graphql-engine should be served (default: 8080)"
)

serveHostEnv :: (String, String)
serveHostEnv =
( "HASURA_GRAPHQL_SERVER_HOST"
, "Host on which graphql-engine will listen (default: *)"
)

pgConnsEnv :: (String, String)
pgConnsEnv =
( "HASURA_GRAPHQL_PG_CONNECTIONS"
Expand Down Expand Up @@ -501,6 +517,12 @@ parseServerPort = optional $
help (snd servePortEnv)
)

parseServerHost :: Parser (Maybe HostPreference)
parseServerHost = optional $ strOption ( long "server-host" <>
metavar "HOST" <>
help "Host on which graphql-engine will listen (default: *)"
)

parseAccessKey :: Parser (Maybe AccessKey)
parseAccessKey =
optional $ AccessKey <$>
Expand Down