feat: add the "admin-server-host" config to set the host for the admin server
This commit is contained in:
@@ -5,6 +5,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- #3558, Add the `admin-server-host` config to set the host for the admin server - @develop7
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- #2052, Dropped support for PostgreSQL 9.6 - @wolfgangwalther
|
- #2052, Dropped support for PostgreSQL 9.6 - @wolfgangwalther
|
||||||
|
|||||||
@@ -146,6 +146,21 @@ To reload the configuration from within the database, you can use the ``NOTIFY``
|
|||||||
List of parameters
|
List of parameters
|
||||||
==================
|
==================
|
||||||
|
|
||||||
|
.. _admin-server-host:
|
||||||
|
|
||||||
|
admin-server-host
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
=============== =======================
|
||||||
|
**Type** String
|
||||||
|
**Default** `server-host` value
|
||||||
|
**Reloadable** N
|
||||||
|
**Environment** PGRST_ADMIN_SERVER_HOST
|
||||||
|
**In-Database** `n/a`
|
||||||
|
=============== =======================
|
||||||
|
|
||||||
|
Specifies the host for the :ref:`admin_server`. Defaults to :ref:`server-host` value.
|
||||||
|
|
||||||
.. _admin-server-port:
|
.. _admin-server-port:
|
||||||
|
|
||||||
admin-server-port
|
admin-server-port
|
||||||
|
|||||||
@@ -192,7 +192,8 @@ initSockets AppConfig{..} = do
|
|||||||
cfg'uspm = configServerUnixSocketMode
|
cfg'uspm = configServerUnixSocketMode
|
||||||
cfg'host = configServerHost
|
cfg'host = configServerHost
|
||||||
cfg'port = configServerPort
|
cfg'port = configServerPort
|
||||||
cfg'adminport = configAdminServerPort
|
cfg'adminHost = configAdminServerHost
|
||||||
|
cfg'adminPort = configAdminServerPort
|
||||||
|
|
||||||
sock <- case cfg'usp of
|
sock <- case cfg'usp of
|
||||||
-- I'm not using `streaming-commons`' bindPath function here because it's not defined for Windows,
|
-- I'm not using `streaming-commons`' bindPath function here because it's not defined for Windows,
|
||||||
@@ -210,9 +211,9 @@ initSockets AppConfig{..} = do
|
|||||||
pure (num, sock)
|
pure (num, sock)
|
||||||
pure sock
|
pure sock
|
||||||
|
|
||||||
adminSock <- case cfg'adminport of
|
adminSock <- case cfg'adminPort of
|
||||||
Just adminPort -> do
|
Just adminPort -> do
|
||||||
adminSock <- bindPortTCP adminPort (fromString $ T.unpack cfg'host)
|
adminSock <- bindPortTCP adminPort (fromString $ T.unpack cfg'adminHost)
|
||||||
pure $ Just adminSock
|
pure $ Just adminSock
|
||||||
Nothing -> pure Nothing
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
|
|||||||
@@ -106,6 +106,7 @@ data AppConfig = AppConfig
|
|||||||
, configServerTimingEnabled :: Bool
|
, configServerTimingEnabled :: Bool
|
||||||
, configServerUnixSocket :: Maybe FilePath
|
, configServerUnixSocket :: Maybe FilePath
|
||||||
, configServerUnixSocketMode :: FileMode
|
, configServerUnixSocketMode :: FileMode
|
||||||
|
, configAdminServerHost :: Text
|
||||||
, configAdminServerPort :: Maybe Int
|
, configAdminServerPort :: Maybe Int
|
||||||
, configRoleSettings :: RoleSettings
|
, configRoleSettings :: RoleSettings
|
||||||
, configRoleIsoLvl :: RoleIsolationLvl
|
, configRoleIsoLvl :: RoleIsolationLvl
|
||||||
@@ -176,6 +177,7 @@ toText conf =
|
|||||||
,("server-timing-enabled", T.toLower . show . configServerTimingEnabled)
|
,("server-timing-enabled", T.toLower . show . configServerTimingEnabled)
|
||||||
,("server-unix-socket", q . maybe mempty T.pack . configServerUnixSocket)
|
,("server-unix-socket", q . maybe mempty T.pack . configServerUnixSocket)
|
||||||
,("server-unix-socket-mode", q . T.pack . showSocketMode)
|
,("server-unix-socket-mode", q . T.pack . showSocketMode)
|
||||||
|
,("admin-server-host", q . configAdminServerHost)
|
||||||
,("admin-server-port", maybe "\"\"" show . configAdminServerPort)
|
,("admin-server-port", maybe "\"\"" show . configAdminServerPort)
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -276,12 +278,14 @@ parser optPath env dbSettings roleSettings roleIsolationLvl =
|
|||||||
<*> (fromMaybe False <$> optBool "openapi-security-active")
|
<*> (fromMaybe False <$> optBool "openapi-security-active")
|
||||||
<*> parseOpenAPIServerProxyURI "openapi-server-proxy-uri"
|
<*> parseOpenAPIServerProxyURI "openapi-server-proxy-uri"
|
||||||
<*> parseCORSAllowedOrigins "server-cors-allowed-origins"
|
<*> parseCORSAllowedOrigins "server-cors-allowed-origins"
|
||||||
<*> (fromMaybe "!4" <$> optString "server-host")
|
<*> (defaultServerHost <$> optString "server-host")
|
||||||
<*> (fromMaybe 3000 <$> optInt "server-port")
|
<*> (fromMaybe 3000 <$> optInt "server-port")
|
||||||
<*> (fmap (CI.mk . encodeUtf8) <$> optString "server-trace-header")
|
<*> (fmap (CI.mk . encodeUtf8) <$> optString "server-trace-header")
|
||||||
<*> (fromMaybe False <$> optBool "server-timing-enabled")
|
<*> (fromMaybe False <$> optBool "server-timing-enabled")
|
||||||
<*> (fmap T.unpack <$> optString "server-unix-socket")
|
<*> (fmap T.unpack <$> optString "server-unix-socket")
|
||||||
<*> parseSocketFileMode "server-unix-socket-mode"
|
<*> parseSocketFileMode "server-unix-socket-mode"
|
||||||
|
<*> (defaultServerHost <$> optWithAlias (optString "admin-server-host")
|
||||||
|
(optString "server-host"))
|
||||||
<*> optInt "admin-server-port"
|
<*> optInt "admin-server-port"
|
||||||
<*> pure roleSettings
|
<*> pure roleSettings
|
||||||
<*> pure roleIsolationLvl
|
<*> pure roleIsolationLvl
|
||||||
@@ -412,6 +416,9 @@ parser optPath env dbSettings roleSettings roleIsolationLvl =
|
|||||||
|
|
||||||
defaultHoistedAllowList = ["statement_timeout","plan_filter.statement_cost_limit","default_transaction_isolation"]
|
defaultHoistedAllowList = ["statement_timeout","plan_filter.statement_cost_limit","default_transaction_isolation"]
|
||||||
|
|
||||||
|
defaultServerHost :: Maybe Text -> Text
|
||||||
|
defaultServerHost = fromMaybe "!4"
|
||||||
|
|
||||||
-- | Read the JWT secret from a file if configJwtSecret is actually a
|
-- | Read the JWT secret from a file if configJwtSecret is actually a
|
||||||
-- filepath(has @ as its prefix). To check if the JWT secret is provided is
|
-- filepath(has @ as its prefix). To check if the JWT secret is provided is
|
||||||
-- in fact a file path, it must be decoded as 'Text' to be processed.
|
-- in fact a file path, it must be decoded as 'Text' to be processed.
|
||||||
|
|||||||
@@ -35,4 +35,5 @@ server-trace-header = ""
|
|||||||
server-timing-enabled = false
|
server-timing-enabled = false
|
||||||
server-unix-socket = ""
|
server-unix-socket = ""
|
||||||
server-unix-socket-mode = "660"
|
server-unix-socket-mode = "660"
|
||||||
|
admin-server-host = "!4"
|
||||||
admin-server-port = ""
|
admin-server-port = ""
|
||||||
|
|||||||
@@ -35,4 +35,5 @@ server-trace-header = ""
|
|||||||
server-timing-enabled = false
|
server-timing-enabled = false
|
||||||
server-unix-socket = ""
|
server-unix-socket = ""
|
||||||
server-unix-socket-mode = "660"
|
server-unix-socket-mode = "660"
|
||||||
|
admin-server-host = "!4"
|
||||||
admin-server-port = ""
|
admin-server-port = ""
|
||||||
|
|||||||
@@ -35,4 +35,5 @@ server-trace-header = ""
|
|||||||
server-timing-enabled = false
|
server-timing-enabled = false
|
||||||
server-unix-socket = ""
|
server-unix-socket = ""
|
||||||
server-unix-socket-mode = "660"
|
server-unix-socket-mode = "660"
|
||||||
|
admin-server-host = "!4"
|
||||||
admin-server-port = ""
|
admin-server-port = ""
|
||||||
|
|||||||
@@ -35,4 +35,5 @@ server-trace-header = ""
|
|||||||
server-timing-enabled = false
|
server-timing-enabled = false
|
||||||
server-unix-socket = ""
|
server-unix-socket = ""
|
||||||
server-unix-socket-mode = "660"
|
server-unix-socket-mode = "660"
|
||||||
|
admin-server-host = "!4"
|
||||||
admin-server-port = ""
|
admin-server-port = ""
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ server-trace-header = "traceparent"
|
|||||||
server-timing-enabled = true
|
server-timing-enabled = true
|
||||||
server-unix-socket = "/tmp/pgrst_io_test.sock"
|
server-unix-socket = "/tmp/pgrst_io_test.sock"
|
||||||
server-unix-socket-mode = "777"
|
server-unix-socket-mode = "777"
|
||||||
|
admin-server-host = "127.0.0.1"
|
||||||
admin-server-port = 3001
|
admin-server-port = 3001
|
||||||
app.settings.test = "test"
|
app.settings.test = "test"
|
||||||
app.settings.test2 = "test"
|
app.settings.test2 = "test"
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ server-trace-header = "CF-Ray"
|
|||||||
server-timing-enabled = false
|
server-timing-enabled = false
|
||||||
server-unix-socket = "/tmp/pgrst_io_test.sock"
|
server-unix-socket = "/tmp/pgrst_io_test.sock"
|
||||||
server-unix-socket-mode = "777"
|
server-unix-socket-mode = "777"
|
||||||
|
admin-server-host = "127.0.0.1"
|
||||||
admin-server-port = 3001
|
admin-server-port = 3001
|
||||||
app.settings.test = "test"
|
app.settings.test = "test"
|
||||||
app.settings.test2 = "test"
|
app.settings.test2 = "test"
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ server-trace-header = "X-Request-Id"
|
|||||||
server-timing-enabled = true
|
server-timing-enabled = true
|
||||||
server-unix-socket = "/tmp/pgrst_io_test.sock"
|
server-unix-socket = "/tmp/pgrst_io_test.sock"
|
||||||
server-unix-socket-mode = "777"
|
server-unix-socket-mode = "777"
|
||||||
|
admin-server-host = "127.0.0.1"
|
||||||
admin-server-port = 3001
|
admin-server-port = 3001
|
||||||
app.settings.test = "test"
|
app.settings.test = "test"
|
||||||
app.settings.test2 = "test"
|
app.settings.test2 = "test"
|
||||||
|
|||||||
@@ -35,5 +35,6 @@ server-trace-header = ""
|
|||||||
server-timing-enabled = false
|
server-timing-enabled = false
|
||||||
server-unix-socket = ""
|
server-unix-socket = ""
|
||||||
server-unix-socket-mode = "660"
|
server-unix-socket-mode = "660"
|
||||||
|
admin-server-host = "!4"
|
||||||
admin-server-port = ""
|
admin-server-port = ""
|
||||||
app.settings.test = "Bool False"
|
app.settings.test = "Bool False"
|
||||||
|
|||||||
@@ -38,4 +38,5 @@ PGRST_SERVER_TRACE_HEADER: X-Request-Id
|
|||||||
PGRST_SERVER_TIMING_ENABLED: true
|
PGRST_SERVER_TIMING_ENABLED: true
|
||||||
PGRST_SERVER_UNIX_SOCKET: /tmp/pgrst_io_test.sock
|
PGRST_SERVER_UNIX_SOCKET: /tmp/pgrst_io_test.sock
|
||||||
PGRST_SERVER_UNIX_SOCKET_MODE: 777
|
PGRST_SERVER_UNIX_SOCKET_MODE: 777
|
||||||
|
PGRST_ADMIN_SERVER_HOST: 127.0.0.1
|
||||||
PGRST_ADMIN_SERVER_PORT: 3001
|
PGRST_ADMIN_SERVER_PORT: 3001
|
||||||
|
|||||||
@@ -36,5 +36,6 @@ server-timing-enabled = true
|
|||||||
server-unix-socket = "/tmp/pgrst_io_test.sock"
|
server-unix-socket = "/tmp/pgrst_io_test.sock"
|
||||||
server-unix-socket-mode = "777"
|
server-unix-socket-mode = "777"
|
||||||
admin-server-port = 3001
|
admin-server-port = 3001
|
||||||
|
admin-server-host = "127.0.0.1"
|
||||||
app.settings.test = "test"
|
app.settings.test = "test"
|
||||||
app.settings.test2 = "test"
|
app.settings.test2 = "test"
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ CREATE DATABASE other;
|
|||||||
ALTER ROLE db_config_authenticator IN DATABASE other SET pgrst.db_max_rows = '1111';
|
ALTER ROLE db_config_authenticator IN DATABASE other SET pgrst.db_max_rows = '1111';
|
||||||
|
|
||||||
-- non-reloadable configs
|
-- non-reloadable configs
|
||||||
|
ALTER ROLE db_config_authenticator SET pgrst.admin_server_host = 'ignored';
|
||||||
ALTER ROLE db_config_authenticator SET pgrst.admin_server_port = 'ignored';
|
ALTER ROLE db_config_authenticator SET pgrst.admin_server_port = 'ignored';
|
||||||
ALTER ROLE db_config_authenticator SET pgrst.db_channel = 'ignored';
|
ALTER ROLE db_config_authenticator SET pgrst.db_channel = 'ignored';
|
||||||
ALTER ROLE db_config_authenticator SET pgrst.db_channel_enabled = 'ignored';
|
ALTER ROLE db_config_authenticator SET pgrst.db_channel_enabled = 'ignored';
|
||||||
|
|||||||
@@ -150,6 +150,7 @@ baseCfg = let secret = Just $ encodeUtf8 "reallyreallyreallyreallyverysafe" in
|
|||||||
, configServerUnixSocketMode = 432
|
, configServerUnixSocketMode = 432
|
||||||
, configDbTxAllowOverride = True
|
, configDbTxAllowOverride = True
|
||||||
, configDbTxRollbackAll = True
|
, configDbTxRollbackAll = True
|
||||||
|
, configAdminServerHost = "localhost"
|
||||||
, configAdminServerPort = Nothing
|
, configAdminServerPort = Nothing
|
||||||
, configRoleSettings = mempty
|
, configRoleSettings = mempty
|
||||||
, configRoleIsoLvl = mempty
|
, configRoleIsoLvl = mempty
|
||||||
|
|||||||
Reference in New Issue
Block a user