summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-09-03 00:39:55 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-09-03 00:39:55 -0400
commitb584d96c131a23d0f7d6ed424a8915e9e15a6bc4 (patch)
treeda5f81e4000a58326a95fc94cd5a5ad22e76e34c
parent6a45ca465877c3dcf17e4f41ff538dd66b2438c0 (diff)
rsync.net configurator display
Doesn't set up the repo yet.
-rw-r--r--Assistant/WebApp/Configurators/Ssh.hs27
-rw-r--r--Assistant/WebApp/routes1
-rw-r--r--templates/configurators/addrsync.net.hamlet43
-rw-r--r--templates/configurators/main.hamlet2
4 files changed, 69 insertions, 4 deletions
diff --git a/Assistant/WebApp/Configurators/Ssh.hs b/Assistant/WebApp/Configurators/Ssh.hs
index b8e2b351a..334ee0807 100644
--- a/Assistant/WebApp/Configurators/Ssh.hs
+++ b/Assistant/WebApp/Configurators/Ssh.hs
@@ -42,10 +42,10 @@ data SshServer = SshServer
}
deriving (Show)
-sshServerAForm :: Text -> AForm WebApp WebApp SshServer
+sshServerAForm :: (Maybe Text) -> AForm WebApp WebApp SshServer
sshServerAForm localusername = SshServer
<$> aopt check_hostname "Host name" Nothing
- <*> aopt check_username "User name" (Just $ Just localusername)
+ <*> aopt check_username "User name" (Just localusername)
<*> aopt textField "Directory" (Just $ Just $ T.pack gitAnnexAssistantDefaultDir)
where
check_hostname = checkM (liftIO . checkdns) textField
@@ -83,7 +83,7 @@ getAddSshR = sshConfigurator $ do
u <- liftIO $ T.pack . userName
<$> (getUserEntryForID =<< getEffectiveUserID)
((result, form), enctype) <- lift $
- runFormGet $ renderBootstrap $ sshServerAForm u
+ runFormGet $ renderBootstrap $ sshServerAForm (Just u)
case result of
FormSuccess sshserver -> do
(status, needspubkey) <- liftIO $ testServer sshserver
@@ -320,3 +320,24 @@ genSshKey sshdata = do
sshpubkeyfile = sshprivkeyfile ++ ".pub"
mangledhost = "git-annex-" ++ T.unpack (sshHostName sshdata) ++ user
user = maybe "" (\u -> "-" ++ T.unpack u) (sshUserName sshdata)
+
+getAddRsyncNetR :: Handler RepHtml
+getAddRsyncNetR = bootstrap (Just Config) $ do
+ sideBarDisplay
+ setTitle "Add a Rsync.net repository"
+ ((result, form), enctype) <- lift $
+ runFormGet $ renderBootstrap $ sshServerAForm Nothing
+ let showform status = do
+ let authtoken = webAppFormAuthToken
+ $(widgetFile "configurators/addrsync.net")
+ case result of
+ FormSuccess sshserver -> do
+ let host = fromMaybe "" $ hostname sshserver
+ checkhost host showform $ do
+ error "TODO"
+ _ -> showform UntestedServer
+ where
+ checkhost host showform a
+ | ".rsync.net" `T.isSuffixOf` T.toLower host = a
+ | otherwise = showform $ UnusableServer
+ "That is not a rsync.net host name."
diff --git a/Assistant/WebApp/routes b/Assistant/WebApp/routes
index 5f8dfbbc4..7ed1f30d3 100644
--- a/Assistant/WebApp/routes
+++ b/Assistant/WebApp/routes
@@ -10,6 +10,7 @@
/config/repository/add/ssh/confirm/#SshData ConfirmSshR GET
/config/repository/add/ssh/make/git/#SshData MakeSshGitR GET
/config/repository/add/ssh/make/rsync/#SshData MakeSshRsyncR GET
+/config/repository/add/rsync.net AddRsyncNetR GET
/config/repository/first FirstRepositoryR GET
/transfers/#NotificationId TransfersR GET
diff --git a/templates/configurators/addrsync.net.hamlet b/templates/configurators/addrsync.net.hamlet
new file mode 100644
index 000000000..163d0721e
--- /dev/null
+++ b/templates/configurators/addrsync.net.hamlet
@@ -0,0 +1,43 @@
+<div .span9 .hero-unit>
+ <h2>
+ Adding a Rsync.net repository
+ <p>
+ <a href="http://rsync.net/">
+ Rsync.net #
+ is a well-respected cloud storage provider. Its rsync repositories are #
+ supported very well by git-annex. #
+ <a href="http://www.rsync.net/products/pricing.html">
+ pricing details
+ <p>
+ $case status
+ $of UnusableServer msg
+ <div .alert .alert-error>
+ <i .icon-warning-sign></i> #{msg}
+ $of _
+ <i .icon-warning-sign></i> #
+ All your data will be synced to the Rsync.net repository, so make #
+ sure it has enough available space. Your data will be encrypted before #
+ it is sent to Rsync.net.
+ <p>
+ When you sign up for a Rsync.net account, you receive an #
+ email from them with a host name and a username. Fill that #
+ information in below. You also likely don't want to use your whole #
+ rsync.net repository for git-annex alone, so git-annex will use a #
+ subdirectory of it, as configured below.
+ <p>
+ <form .form-horizontal enctype=#{enctype}>
+ <fieldset>
+ ^{form}
+ ^{authtoken}
+ <div .form-actions>
+ <button .btn .btn-primary type=submit onclick="$('#testmodal').modal('show');">
+ Use this rsync.net repository
+<div .modal .fade #testmodal>
+ <div .modal-header>
+ <h3>
+ Making repository ...
+ <div .modal-body>
+ <p>
+ Setting up your rsync.net repository. This could take a minute.
+ <p>
+ You may be prompted for your rsync.net password.
diff --git a/templates/configurators/main.hamlet b/templates/configurators/main.hamlet
index 1482a904b..b0fdcc282 100644
--- a/templates/configurators/main.hamlet
+++ b/templates/configurators/main.hamlet
@@ -5,5 +5,5 @@
<a href="@{RepositoriesR}">
Manage repositories
<p>
- Distribute the files in this repository to other devices,
+ Distribute the files in this repository to other devices, #
make backups, and more, by adding repositories.