diff --git a/Handler/ShowChallenge.hs b/Handler/ShowChallenge.hs index 819f480..e6d7eb5 100644 --- a/Handler/ShowChallenge.hs +++ b/Handler/ShowChallenge.hs @@ -77,6 +77,9 @@ getChallengeHowToR name = do (Entity _ challenge) <- runDB $ getBy404 $ UniqueName name maybeUser <- maybeAuth + app <- getYesod + let repoHost = appRepoHost $ appSettings app + case maybeUser of Just (Entity userId user) -> do enableTriggerToken userId (userTriggerToken user) @@ -94,7 +97,7 @@ getChallengeHowToR name = do keys <- runDB $ selectList [PublicKeyUser ==. userId] [] return $ not (null keys) Nothing -> return False - challengeLayout False challenge (challengeHowTo challenge (idToBeShown challenge maybeUser) isIDSet isSSHUploaded mToken) + challengeLayout False challenge (challengeHowTo challenge repoHost (idToBeShown challenge maybeUser) isIDSet isSSHUploaded mToken) idToBeShown challenge maybeUser = case maybeUser of @@ -106,7 +109,7 @@ idToBeShown challenge maybeUser = defaultRepo challenge maybeUser = "ssh://gitolite@gonito.net/" ++ (idToBeShown challenge maybeUser) ++ "/" ++ (challengeName challenge) -challengeHowTo challenge idToBeShown isIDSet isSSHUploaded mToken = $(widgetFile "challenge-how-to") +challengeHowTo challenge repoHost idToBeShown isIDSet isSSHUploaded mToken = $(widgetFile "challenge-how-to") getChallengeSubmissionR :: Text -> Handler Html getChallengeSubmissionR name = do diff --git a/Settings.hs b/Settings.hs index 49b3a36..58b12ba 100644 --- a/Settings.hs +++ b/Settings.hs @@ -61,6 +61,8 @@ data AppSettings = AppSettings , appAdminPassword :: Maybe Text -- ^ Additional info for the instance , appLocation :: Maybe Text + -- ^ Repo host + , appRepoHost :: Text } instance FromJSON AppSettings where @@ -93,6 +95,8 @@ instance FromJSON AppSettings where appAdminPassword <- o .:? "admin-password" appLocation <- o .:? "location" + appRepoHost <- o .: "repo-host" + return AppSettings {..} -- | Settings for 'widgetFile', such as which template languages to support and diff --git a/config/settings.yml b/config/settings.yml index 4f89602..3183669 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -8,6 +8,7 @@ approot: "_env:APPROOT:http://localhost:3000" ip-from-header: "_env:IP_FROM_HEADER:false" var-dir: "_env:VAR_DIR:." contact-email: "_env:CONTACT_EMAIL:filipg@amu.edu.pl" +repo-host: "_env:REPO_HOST:ssh://gitolite@gonito.net/" # Optional values with the following production defaults. # In development, they default to the inverse. diff --git a/templates/challenge-how-to.hamlet b/templates/challenge-how-to.hamlet index cf75b8b..b061afe 100644 --- a/templates/challenge-how-to.hamlet +++ b/templates/challenge-how-to.hamlet @@ -40,13 +40,13 @@ $if not isIDSet || not isSSHUploaded \ (see your account) if you want to have a repo hosted on Gonito.net, then:
-  git clone ssh://gitolite@gonito.net/#{idToBeShown}/#{challengeName challenge}
+  git clone #{repoHost}#{idToBeShown}/#{challengeName challenge}
 
 

(Warning about empty repository is expected, don't worry about it.)

   cd #{challengeName challenge}
-  git pull ssh://gitolite@gonito.net/#{challengeName challenge}
+  git pull #{repoHost}#{challengeName challenge}
 
 

(Alternatively, you can use any other Git repo, e.g. GitHub, make sure Gonito.net has access to your repo.)