packages feed

yesod-bin 1.4.5.1 → 1.4.6

raw patch · 6 files changed

+93/−17 lines, 6 filesdep +asyncdep +warp-tls

Dependencies added: async, warp-tls

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+## 1.4.6++* Add TLS support to `yesod devel` [#964](https://github.com/yesodweb/yesod/pull/964)+ ## 1.4.5  * add a switch to yesod to skip deploying a .keter with copy-to [#952](https://github.com/yesodweb/yesod/issues/952)
Devel.hs view
@@ -22,6 +22,7 @@ import           Control.Concurrent                    (forkIO, threadDelay) import           Control.Concurrent.MVar               (MVar, newEmptyMVar,                                                         takeMVar, tryPutMVar)+import           Control.Concurrent.Async              (race_) import qualified Control.Exception                     as Ex import           Control.Monad                         (forever, unless, void,                                                         when, forM)@@ -78,7 +79,8 @@ import           Network.Socket                        (sClose) import           Network.Wai                           (responseLBS, requestHeaders) import           Network.Wai.Parse                     (parseHttpAccept)-import           Network.Wai.Handler.Warp              (run)+import           Network.Wai.Handler.Warp              (run, defaultSettings, setPort)+import           Network.Wai.Handler.WarpTLS           (runTLS, tlsSettingsMemory) import           SrcLoc                                (Located) import           Data.FileEmbed        (embedFile) @@ -108,6 +110,7 @@       , failHook     :: Maybe String       , buildDir     :: Maybe String       , develPort    :: Int+      , develTlsPort :: Int       , proxyTimeout :: Int       , useReverseProxy :: Bool       , terminateWith :: DevelTermOpt@@ -117,7 +120,20 @@ getBuildDir opts = fromMaybe "dist" (buildDir opts)  defaultDevelOpts :: DevelOpts-defaultDevelOpts = DevelOpts False False False (-1) Nothing Nothing Nothing 3000 10 True TerminateOnEnter+defaultDevelOpts = DevelOpts+    { isCabalDev   = False+    , forceCabal   = False+    , verbose      = False+    , eventTimeout = -1+    , successHook  = Nothing+    , failHook     = Nothing+    , buildDir     = Nothing+    , develPort    = 3000+    , develTlsPort = 3443+    , proxyTimeout = 10+    , useReverseProxy = True+    , terminateWith = TerminateOnEnter+    }  cabalProgram :: DevelOpts -> FilePath cabalProgram opts | isCabalDev opts = "cabal-dev"@@ -146,8 +162,7 @@                 ]                 refreshHtml -    let runProxy =-            run (develPort opts) $ waiProxyToSettings+    let proxyApp = waiProxyToSettings                 (const $ do                     appPort <- liftIO $ I.readIORef iappPort                     return $@@ -161,13 +176,26 @@                             else Just (1000000 * proxyTimeout opts)                     }                 manager-    loop runProxy `Ex.onException` exitFailure+        runProxyTls port app = do+          let cert = $(embedFile "certificate.pem")+              key = $(embedFile "key.pem")+              tlsSettings = tlsSettingsMemory cert key+          runTLS tlsSettings (setPort port defaultSettings) app+        httpProxy = run (develPort opts) proxyApp+        httpsProxy = runProxyTls (develTlsPort opts) proxyApp+    putStrLn "Application can be accessed at:\n"+    putStrLn $ "http://127.0.0.1:" ++ show (develPort opts)+    putStrLn $ "https://127.0.0.1:" ++ show (develTlsPort opts)+    putStrLn $ "If you wish to test https capabilities, you should set the following variable:"+    putStrLn $ "  export APPROOT=https://127.0.0.1:" ++ show (develTlsPort opts)+    putStrLn ""+    loop (race_ httpProxy httpsProxy) `Ex.onException` exitFailure   where-    loop proxy = forever $ do-        void proxy-        putStrLn "Reverse proxy stopped, but it shouldn't"+    loop proxies = forever $ do+        void proxies+        putStrLn $ "Reverse proxy stopped, but it shouldn't"         threadDelay 1000000-        putStrLn "Restarting reverse proxy"+        putStrLn $ "Restarting reverse proxies"  checkPort :: Int -> IO Bool checkPort p = do
+ certificate.pem view
@@ -0,0 +1,15 @@+-----BEGIN CERTIFICATE-----+MIICWDCCAcGgAwIBAgIJAJG1ZMlcMDW6MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV+BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX+aWRnaXRzIFB0eSBMdGQwHhcNMTExMDIyMTk0MjU3WhcNMTExMTIxMTk0MjU3WjBF+MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50+ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB+gQCfYZx7kV6ybogMyAf9MINm7Rwin5LKh+TpD1ZkbLgmqFVotQCdthgTK66SPXkx+EXGI27biNzacJhX7Ml7/4o8sp2GslYKUO46DYvgi/nnNX/bzA5cDJSSGK11eQEVs++p0GEZ/6Juhpx/oQwMDMgo0UHkiH8QtKI8ojXnFF2MsLNwIDAQABo1AwTjAdBgNV+HQ4EFgQUaA6FbOj/0VJMb4egNyIDZ/ZNV/YwHwYDVR0jBBgwFoAUaA6FbOj/0VJM+b4egNyIDZ/ZNV/YwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCTQyOk+D86Z+yzedXjTLI6FT8QugmQne1YQ8P0w37P76z2reagSvNee2e9B1oTHoPeKZMs0+k99oS9yJ/NOQ1Ms90P+q0yBVGxAs/gF65qKgE27YGXzNtNobj/D4OoxcFG+BsORw+VvYSBV4FiVy9RwJsr7AMqkUBcOEPCuJHgTx58w==+-----END CERTIFICATE-----
+ key.pem view
@@ -0,0 +1,15 @@+-----BEGIN RSA PRIVATE KEY-----+MIICXAIBAAKBgQCfYZx7kV6ybogMyAf9MINm7Rwin5LKh+TpD1ZkbLgmqFVotQCd+thgTK66SPXkxEXGI27biNzacJhX7Ml7/4o8sp2GslYKUO46DYvgi/nnNX/bzA5cD+JSSGK11eQEVs+p0GEZ/6Juhpx/oQwMDMgo0UHkiH8QtKI8ojXnFF2MsLNwIDAQAB+AoGAR8pgAgjo7tZ60ccIUjOX/LSxB6d5J2Eu6wvNjk6qZD9OuWtOa7up/HigmZ63+CDMjQNI2/o6AOrWtEQkPYZNbibuifzg5V517nHGSqkqjoIgesAiwEsoKpeOgGTtM+MM08oHbJ9uOnDnEEnDBiE0iE3jCTDfmwjqDMpUhu9dZ1EAECQQDKVpzSSV3pzMOp+ixNxMpYxzcE+4K9jgM+MlxPBJSQhVrg/cRQWb26cKBi8LdSxF23hQTsFr+8qLwid+Ah2AgUOBAkEAyaaCjrNRCiHRpd6YzWZ6GKkxbUvxSuOKX3N7hDaE2OFzQTv2Li8B+5mrCsXnSZtOG+MBFdHU66UYie1OzDSDKtwJAKMsvkOID0ihbZmpIwDC/wUjHZkLs+eXY14hVvgShY0XPnb7r/nspWlZsr6Xyf/hhIKfr5yFrBMFMNPIJ5qjflgQJAWsyV+YTgxN4S+6BdxapvIQq58ySA3CGeo+Q4BAimibB4oTal4UpdsHZrZDB00toRs9Dlv+jN70pfGkuS+ZIkIvxQJBAKSf5qpXWp4oZcThkieAiMeAhG96xqRPXhPUxq6QF+YG+T4PF1sjlpZwqy7C+2oF3BqLP09mCW7YkH9Jgnl1zDF8=+-----END RSA PRIVATE KEY-----
main.hs view
@@ -54,6 +54,7 @@                      , develIgnore       :: [String]                      , develExtraArgs    :: [String]                      , _develPort        :: Int+                     , _develTlsPort     :: Int                      , _proxyTimeout     :: Int                      , _noReverseProxy   :: Bool                      , _interruptOnly    :: Bool@@ -107,13 +108,21 @@     Version         -> putStrLn ("yesod-bin version: " ++ showVersion Paths_yesod_bin.version)     AddHandler{..}  -> addHandler addHandlerRoute addHandlerPattern addHandlerMethods     Test            -> cabalTest cabal-    Devel{..}       -> devel (DevelOpts-                              (optCabalPgm o == CabalDev) _develDisableApi (optVerbose o)-                              _develRescan _develSuccessHook _develFailHook-                              _develBuildDir _develPort _proxyTimeout-                              (not _noReverseProxy)-                              (if _interruptOnly then TerminateOnlyInterrupt else TerminateOnEnter )-                           ) develExtraArgs+    Devel{..}       -> let develOpts = DevelOpts+                             { isCabalDev   = optCabalPgm o == CabalDev+                             , forceCabal   = _develDisableApi+                             , verbose      = optVerbose o+                             , eventTimeout = _develRescan+                             , successHook  = _develSuccessHook+                             , failHook     = _develFailHook+                             , buildDir     = _develBuildDir+                             , develPort    = _develPort+                             , develTlsPort = _develTlsPort+                             , proxyTimeout = _proxyTimeout+                             , useReverseProxy = not _noReverseProxy+                             , terminateWith = if _interruptOnly then TerminateOnlyInterrupt else TerminateOnEnter+                             }+                       in devel develOpts develExtraArgs   where     cabalTest cabal = do touch'                          _ <- cabal ["configure", "--enable-tests", "-flibrary-only"]@@ -178,6 +187,8 @@                      <*> extraCabalArgs                      <*> option auto ( long "port" <> short 'p' <> value 3000 <> metavar "N"                             <> help "Devel server listening port" )+                     <*> option auto ( long "tls-port" <> short 'q' <> value 3443 <> metavar "N"+                            <> help "Devel server listening port (tls)" )                      <*> option auto ( long "proxy-timeout" <> short 'x' <> value 0 <> metavar "N"                             <> help "Devel server timeout before returning 'not ready' message (in seconds, 0 for none)" )                      <*> switch ( long "disable-reverse-proxy" <> short 'n'
yesod-bin.cabal view
@@ -1,5 +1,5 @@ name:            yesod-bin-version:         1.4.5.1+version:         1.4.6 license:         MIT license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>@@ -17,6 +17,7 @@   input/*.cg   hsfiles/*.hsfiles   ChangeLog.md+  *.pem  executable             yesod-ghc-wrapper     main-is: ghcwrapper.hs@@ -87,6 +88,8 @@                      , wai-extra                      , data-default-class                      , streaming-commons+                     , warp-tls+                     , async      ghc-options:       -Wall -threaded -rtsopts     main-is:           main.hs