{- 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 -- | Keysafe's server list. -- -- Note: Avoid removing servers from this list, as that will break -- restores. If necessary, a server can be set to Untrusted to prevent -- uploads to it. -- -- Also, avoid changing the ServerName of any server, as that will -- cause any uploads queued under that name to not go through. 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." , 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) serverUrls :: Server -> [BaseUrl] serverUrls srv = map go (serverAddress srv) where go (ServerAddress addr port) = BaseUrl Http addr port ""