{- Copyright 2016 Joey Hess - - Licensed under the GNU AGPL version 3 or higher. -} module Servers where import Types.Server import Servant.Client import System.Random.Shuffle serverUrls :: Server -> [BaseUrl] serverUrls srv = map go (serverAddress srv) where go (ServerAddress addr port) = BaseUrl Http addr port "" networkServers :: [Server] networkServers = [ Server (ServerName "keysafe.joeyh.name") Alternate [ServerAddress "vzgrspuxbtnlrtup.onion" 4242] "Provided by Joey Hess. Digital Ocean VPS, located in Indonesia" , Server (ServerName "keysafe.puri.sm") Alternate [] "Purism server is not yet deployed, but planned." -- Provided by https://faelix.net/ -- Marek Isalski , Server (ServerName "thirdserver") Alternate -- still being vetted [ServerAddress "eqi7glyxe5ravak5.onion" 4242] "Provided by Marek Isalski at Faelix. Currently located in UK, but planned move to CH" ] -- | Shuffles the server list, keeping Recommended first, then -- Alternate, and finally Untrusted. shuffleServers :: [Server] -> IO [Server] shuffleServers l = concat <$> mapM shuf [minBound..maxBound] where shuf sl = shuffleM (filter (\s -> serverLevel s == sl) l)