summaryrefslogtreecommitdiffhomepage
path: root/Types/Server.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Types/Server.hs')
-rw-r--r--Types/Server.hs36
1 files changed, 36 insertions, 0 deletions
diff --git a/Types/Server.hs b/Types/Server.hs
new file mode 100644
index 0000000..6a3fe23
--- /dev/null
+++ b/Types/Server.hs
@@ -0,0 +1,36 @@
+{- Copyright 2016 Joey Hess <id@joeyh.name>
+ -
+ - Licensed under the GNU AGPL version 3 or higher.
+ -}
+
+{-# LANGUAGE DeriveGeneric #-}
+
+module Types.Server (module Types.Server, Port) where
+
+import Data.Aeson
+import GHC.Generics
+import Network.Wai.Handler.Warp (Port)
+
+type HostName = String
+
+-- | Server address can use either tor .onion addresses, or regular
+-- hostnames. Using tor is highly recommended, to avoid correlation
+-- attacks.
+data ServerAddress = ServerAddress HostName Port
+ deriving (Show, Eq, Ord)
+
+-- | Name used in queuing uploads to the server. Should remain stable
+-- across keysafe versions.
+newtype ServerName = ServerName { fromServerName :: String }
+ deriving (Show, Eq, Ord, Generic)
+
+instance ToJSON ServerName
+instance FromJSON ServerName
+
+data Server = Server
+ { serverName :: ServerName
+ , serverAddress :: [ServerAddress]
+ -- ^ A server may have multiple addresses, or no current address.
+ , serverDesc :: String
+ }
+ deriving (Show, Eq, Ord)