]> dgit.raspbian.org Git - git-annex.git/commitdiff
add --bind option and listen to both ipv4 and ipv6 by default
authorJoey Hess <joeyh@joeyh.name>
Tue, 23 Jul 2024 19:19:56 +0000 (15:19 -0400)
committerJoey Hess <joeyh@joeyh.name>
Tue, 23 Jul 2024 19:19:56 +0000 (15:19 -0400)
Command/P2PHttp.hs
doc/git-annex-p2phttp.mdwn

index 515cdae4b23ee08437a7785f9005ba99c19b812b..8c34ee26602d6935b96fae9d3cac7c628cf5f0e2 100644 (file)
@@ -21,11 +21,13 @@ import Utility.Env
 import Utility.MonotonicClock
 
 import qualified Network.Wai.Handler.Warp as Warp
+import qualified Network.Wai.Handler.WarpTLS as Warp
 import Servant
 import Servant.Client.Streaming
 import Control.Concurrent.STM
 import Network.Socket (PortNumber)
 import qualified Data.Map as M
+import Data.String
 
 cmd :: Command
 cmd = withAnnexOptions [jobsOption] $ command "p2phttp" SectionPlumbing
@@ -34,6 +36,7 @@ cmd = withAnnexOptions [jobsOption] $ command "p2phttp" SectionPlumbing
 
 data Options = Options
        { portOption :: Maybe PortNumber
+       , bindOption :: Maybe String
        , authEnvOption :: Bool
        , authEnvHttpOption :: Bool
        , unauthReadOnlyOption :: Bool
@@ -47,6 +50,10 @@ optParser _ = Options
                ( long "port" <> metavar paramNumber
                <> help "specify port to listen on"
                ))
+       <*> optional (strOption
+               ( long "bind" <> metavar paramAddress
+               <> help "specify address to bind to"
+               ))
        <*> switch
                ( long "authenv"
                <> help "authenticate users from environment (https only)"
@@ -74,11 +81,19 @@ seek o = getAnnexWorkerPool $ \workerpool ->
                authenv <- getAuthEnv
                st <- mkP2PHttpServerState acquireconn workerpool $
                        mkGetServerMode authenv o
-               Warp.run (fromIntegral port) (p2pHttpApp st)
+               let settings = Warp.setPort port $ Warp.setHost host $
+                       Warp.defaultSettings
+               Warp.runSettings settings (p2pHttpApp st)
+               --Warp.runTLS settings (p2pHttpApp st)
   where
-       port = fromMaybe
+       port = maybe
                (fromIntegral defaultP2PHttpProtocolPort)
+               fromIntegral
                (portOption o)
+       host = maybe
+               (fromString "*") -- both ipv4 and ipv6
+               fromString
+               (bindOption o)
 
 mkGetServerMode :: M.Map Auth P2P.ServerMode -> Options -> GetServerMode
 mkGetServerMode _ o _ Nothing
index 9102af2d4a355f21bcd0aa328369bfe0f09603c1..f9dcd52c96d4e00e0261202b6a969c430ce75b1e 100644 (file)
@@ -48,6 +48,10 @@ convenient way to download the content of any key, by using the path
   use a low port like port 80. It will not drop permissions when run as
   root.
 
+* `--bind=address`
+
+  What address to bind to. The default is to bind to all addresses.
+
 * `--authenv`
 
   Allows users to be authenticated with a username and password.