diff options
-rw-r--r-- | CmdLine.hs | 1 | ||||
-rw-r--r-- | HTTP/Client.hs | 25 | ||||
-rw-r--r-- | keysafe.cabal | 16 | ||||
-rw-r--r-- | stack.yaml | 17 |
4 files changed, 22 insertions, 37 deletions
@@ -14,6 +14,7 @@ import Storage.Network import Tunables import qualified Gpg import Options.Applicative +import Data.Monoid import qualified Data.ByteString.UTF8 as BU8 import qualified Data.Text as T import System.Directory diff --git a/HTTP/Client.hs b/HTTP/Client.hs index 25ff536..9626eab 100644 --- a/HTTP/Client.hs +++ b/HTTP/Client.hs @@ -15,11 +15,8 @@ import Servant.API import Servant.Client import Data.Proxy import Network.HTTP.Client hiding (port, host, Proxy) -import Network.HTTP.Client.Internal (Connection, makeConnection) -import Control.Monad.Trans.Except (ExceptT, runExceptT) +import Network.HTTP.Client.Internal (Connection) import Control.Exception -import qualified Network.Socket -import Network.Socket.ByteString (sendAll, recv) import Network.Socks5 import qualified Data.ByteString.UTF8 as BU8 import Data.List @@ -28,10 +25,10 @@ import Data.Char httpAPI :: Proxy HttpAPI httpAPI = Proxy -motd :: Manager -> BaseUrl -> ClientM Motd -getObject :: StorableObjectIdent -> Maybe ProofOfWork -> Manager -> BaseUrl -> ClientM (POWGuarded StorableObject) -putObject :: StorableObjectIdent -> Maybe ProofOfWork -> StorableObject -> Manager -> BaseUrl -> ClientM (POWGuarded StoreResult) -countObjects :: Maybe ProofOfWork -> Manager -> BaseUrl -> ClientM (POWGuarded CountResult) +motd :: ClientM Motd +getObject :: StorableObjectIdent -> Maybe ProofOfWork -> ClientM (POWGuarded StorableObject) +putObject :: StorableObjectIdent -> Maybe ProofOfWork -> StorableObject -> ClientM (POWGuarded StoreResult) +countObjects :: Maybe ProofOfWork -> ClientM (POWGuarded CountResult) motd :<|> getObject :<|> putObject :<|> countObjects = client httpAPI tryA :: IO a -> IO (Either SomeException a) @@ -43,7 +40,7 @@ serverRequest -> (String -> a) -> (r -> a) -> p - -> (Maybe ProofOfWork -> Manager -> BaseUrl -> ExceptT ServantError IO (POWGuarded r)) + -> (Maybe ProofOfWork -> ClientM (POWGuarded r)) -> IO a serverRequest srv onerr onsuccess p a = do r <- tryA $ go Nothing maxProofOfWork @@ -69,7 +66,7 @@ serverRequest srv onerr onsuccess p a = do -- comparing IP addresses (which are masked somewhat by using tor). serverRequest' :: Server - -> (Manager -> BaseUrl -> ExceptT ServantError IO r) + -> (ClientM r) -> IO (Either String r) serverRequest' srv a = go Nothing (serverUrls srv) where @@ -77,7 +74,7 @@ serverRequest' srv a = go Nothing (serverUrls srv) maybe "no known address" (\err -> "server failure: " ++ show err) lasterr go _ (url:urls) = do manager <- torableManager - res <- runExceptT $ a manager url + res <- runClientM a (ClientEnv manager url) case res of Left err -> go (Just err) urls Right r -> return (Right r) @@ -104,12 +101,6 @@ torConnection onionaddress p = do socksdomain = SocksAddrDomainName (BU8.fromString onionaddress) socksaddr = SocksAddress socksdomain (fromIntegral p) -socketConnection :: Network.Socket.Socket -> Int -> IO Connection -socketConnection socket chunksize = makeConnection - (recv socket chunksize) - (sendAll socket) - (Network.Socket.close socket) - serverUrls :: Server -> [BaseUrl] serverUrls srv = map go (serverAddress srv) where diff --git a/keysafe.cabal b/keysafe.cabal index 99330e4..dd574bc 100644 --- a/keysafe.cabal +++ b/keysafe.cabal @@ -51,18 +51,18 @@ Executable keysafe , unix == 2.7.* , filepath == 1.4.* , split == 0.2.* - , directory == 1.2.* + , directory (>= 1.2 && < 1.4) , process (>= 1.2 && < 1.5) - , optparse-applicative == 0.12.* + , optparse-applicative (>= 0.12 && < 0.14) , readline == 1.0.* , zxcvbn-c == 1.0.* - , servant (>= 0.7 && < 0.9) - , servant-server (>= 0.7 && < 0.9) - , servant-client (>= 0.7 && < 0.9) - , aeson == 0.11.* + , servant (>= 0.7 && < 0.12) + , servant-server (>= 0.7 && < 0.12) + , servant-client (>= 0.7 && < 0.12) + , aeson (>= 0.11 && < 1.2) , wai == 3.2.* , warp == 3.2.* - , http-client == 0.4.* + , http-client (>= 0.5.3 && < 0.6) , transformers (>= 0.4 && < 0.6) , stm == 2.4.* , socks == 0.5.* @@ -78,7 +78,7 @@ Executable keysafe , unix-compat == 0.4.* , exceptions == 0.8.* , random-shuffle == 0.0.* - , MonadRandom == 0.4.* + , MonadRandom (>= 0.4 && < 0.6) Other-Modules: AutoStart BackupLog @@ -1,16 +1,9 @@ packages: - '.' -resolver: lts-6.12 +resolver: lts-9.0 extra-deps: - - secret-sharing-1.0.0.3 - - dice-entropy-conduit-1.0.0.1 - - polynomial-0.7.2 - - finite-field-0.8.0 - - raaz-0.1.1 - - zxcvbn-c-1.0.0 - - servant-0.7.1 - - servant-server-0.7.1 - - servant-client-0.7.1 - - token-bucket-0.1.0.1 - - argon2-1.2.0 +- argon2-1.2.0 +- secret-sharing-1.0.0.3 +- dice-entropy-conduit-1.0.0.1 +- polynomial-0.7.3 explicit-setup-deps: |