webapp: Use IP address, rather than localhost
since some systems may have configuration problems or other issues that prevent web browsers from connecting to the right localhost IP for the webapp. Tested on both ipv4 and ipv6 localhost. Url for the latter looks like: http://[::1]:50676
This commit is contained in:
parent
b78c71ca4c
commit
6f7ae84650
4 changed files with 18 additions and 12 deletions
|
@ -35,7 +35,7 @@ import Git
|
|||
|
||||
import Yesod
|
||||
import Yesod.Static
|
||||
import Network.Socket (PortNumber)
|
||||
import Network.Socket (SockAddr)
|
||||
import Data.Text (pack, unpack)
|
||||
|
||||
thisThread :: String
|
||||
|
@ -67,14 +67,14 @@ webAppThread assistantdata urlrenderer noannex postfirstrun onstartup = thread $
|
|||
( return $ httpDebugLogger app
|
||||
, return app
|
||||
)
|
||||
runWebApp app' $ \port -> if noannex
|
||||
runWebApp app' $ \addr -> if noannex
|
||||
then withTempFile "webapp.html" $ \tmpfile _ ->
|
||||
go port webapp tmpfile Nothing
|
||||
go addr webapp tmpfile Nothing
|
||||
else do
|
||||
let st = threadState assistantdata
|
||||
htmlshim <- runThreadState st $ fromRepo gitAnnexHtmlShim
|
||||
urlfile <- runThreadState st $ fromRepo gitAnnexUrlFile
|
||||
go port webapp htmlshim (Just urlfile)
|
||||
go addr webapp htmlshim (Just urlfile)
|
||||
where
|
||||
thread = NamedThread thisThread
|
||||
getreldir
|
||||
|
@ -82,13 +82,13 @@ webAppThread assistantdata urlrenderer noannex postfirstrun onstartup = thread $
|
|||
| otherwise = Just <$>
|
||||
(relHome =<< absPath
|
||||
=<< runThreadState (threadState assistantdata) (fromRepo repoPath))
|
||||
go port webapp htmlshim urlfile = do
|
||||
let url = myUrl webapp port
|
||||
go addr webapp htmlshim urlfile = do
|
||||
let url = myUrl webapp addr
|
||||
maybe noop (`writeFileProtected` url) urlfile
|
||||
writeHtmlShim "Starting webapp..." url htmlshim
|
||||
maybe noop (\a -> a url htmlshim) onstartup
|
||||
|
||||
myUrl :: WebApp -> PortNumber -> Url
|
||||
myUrl webapp port = unpack $ yesodRender webapp urlbase HomeR []
|
||||
myUrl :: WebApp -> SockAddr -> Url
|
||||
myUrl webapp addr = unpack $ yesodRender webapp urlbase HomeR []
|
||||
where
|
||||
urlbase = pack $ "http://localhost:" ++ show port
|
||||
urlbase = pack $ "http://" ++ show addr
|
||||
|
|
|
@ -54,14 +54,14 @@ runBrowser url env = boolSystemEnv cmd [Param url] env
|
|||
|
||||
{- Binds to a socket on localhost, and runs a webapp on it.
|
||||
-
|
||||
- An IO action can also be run, to do something with the port number,
|
||||
- An IO action can also be run, to do something with the address,
|
||||
- such as start a web browser to view the webapp.
|
||||
-}
|
||||
runWebApp :: Wai.Application -> (PortNumber -> IO ()) -> IO ()
|
||||
runWebApp :: Wai.Application -> (SockAddr -> IO ()) -> IO ()
|
||||
runWebApp app observer = do
|
||||
sock <- localSocket
|
||||
void $ forkIO $ runSettingsSocket defaultSettings sock app
|
||||
observer =<< socketPort sock
|
||||
observer =<< getSocketName sock
|
||||
|
||||
{- Binds to a local socket, selecting any free port.
|
||||
-
|
||||
|
|
3
debian/changelog
vendored
3
debian/changelog
vendored
|
@ -6,6 +6,9 @@ git-annex (3.20130108) UNRELEASED; urgency=low
|
|||
* drop: Suggest using git annex move when numcopies prevents dropping a file.
|
||||
* webapp: Repo switcher filters out repos that do not exist any more
|
||||
(or are on a drive that's not mounted).
|
||||
* webapp: Use IP address, rather than localhost, since some systems may
|
||||
have configuration problems or other issues that prevent web browsers
|
||||
from connecting to the right localhost IP for the webapp.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Tue, 08 Jan 2013 12:37:38 -0400
|
||||
|
||||
|
|
|
@ -25,3 +25,6 @@ I've tested this with:
|
|||
* chromium
|
||||
|
||||
Iceweasel is the only one which correctly fell back to IPv4 and worked.
|
||||
|
||||
> Ok, I've made it use the IP address in the URL. Ugly, but avoids
|
||||
> whatever mess results in this behavior. [[done]] --[[Joey]]
|
||||
|
|
Loading…
Reference in a new issue