Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2018-03-07 17:42:09 +0300
committerNick Thomas <nick@gitlab.com>2018-03-07 17:42:09 +0300
commit89501363417d9c0a9744a9342e292d7a2b5a589d (patch)
tree1e66a8c61e9cd97933977142ec6ec8005fc29645 /domains.go
parent1ae4901c7ea49c4eec8cc26d68ad85c5c8719454 (diff)
parent00b6c5f315ac00e9da8a6de99c50b064e9f87872 (diff)
Merge branch 'https_only' into 'master'
HTTPS-only pages See merge request gitlab-org/gitlab-pages!50
Diffstat (limited to 'domains.go')
-rw-r--r--domains.go61
1 files changed, 39 insertions, 22 deletions
diff --git a/domains.go b/domains.go
index 7428ea99..e2d0d5db 100644
--- a/domains.go
+++ b/domains.go
@@ -17,57 +17,77 @@ type domains map[string]*domain
type domainsUpdater func(domains domains)
-func (d domains) addDomain(rootDomain, group, project string, config *domainConfig) error {
+func (d domains) addDomain(rootDomain, group, projectName string, config *domainConfig) error {
newDomain := &domain{
- Group: group,
- Project: project,
- Config: config,
+ Group: group,
+ ProjectName: projectName,
+ Config: config,
}
var domainName string
- if config != nil {
- domainName = config.Domain
- } else {
- domainName = group + "." + rootDomain
- }
- domainName = strings.ToLower(domainName)
+ domainName = strings.ToLower(config.Domain)
d[domainName] = newDomain
return nil
}
-func (d domains) readProjectConfig(rootDomain, group, project string) (err error) {
+func (d domains) updateGroupDomain(rootDomain, group, projectName string, httpsOnly bool) error {
+ domainName := strings.ToLower(group + "." + rootDomain)
+ groupDomain := d[domainName]
+
+ if groupDomain == nil {
+ groupDomain = &domain{
+ Group: group,
+ Projects: make(projects),
+ }
+ }
+
+ groupDomain.Projects[projectName] = &project{
+ HTTPSOnly: httpsOnly,
+ }
+ d[domainName] = groupDomain
+
+ return nil
+}
+
+func (d domains) readProjectConfig(rootDomain, group, projectName string) (err error) {
var config domainsConfig
- err = config.Read(group, project)
+ err = config.Read(group, projectName)
if err != nil {
+ // This is necessary to preserve the previous behaviour where a
+ // group domain is created even if no config.json files are
+ // loaded successfully. Is it safe to remove this?
+ d.updateGroupDomain(rootDomain, group, projectName, false)
return
}
+ d.updateGroupDomain(rootDomain, group, projectName, config.HTTPSOnly)
+
for _, domainConfig := range config.Domains {
config := domainConfig // domainConfig is reused for each loop iteration
if domainConfig.Valid(rootDomain) {
- d.addDomain(rootDomain, group, project, &config)
+ d.addDomain(rootDomain, group, projectName, &config)
}
}
return
}
-func (d domains) readProject(rootDomain, group, project string) error {
- if strings.HasPrefix(project, ".") {
+func (d domains) readProject(rootDomain, group, projectName string) error {
+ if strings.HasPrefix(projectName, ".") {
return errors.New("hidden project")
}
// Ignore projects that have .deleted in name
- if strings.HasSuffix(project, ".deleted") {
+ if strings.HasSuffix(projectName, ".deleted") {
return errors.New("deleted project")
}
- _, err := os.Lstat(filepath.Join(group, project, "public"))
+ _, err := os.Lstat(filepath.Join(group, projectName, "public"))
if err != nil {
return errors.New("missing public/ in project")
}
- d.readProjectConfig(rootDomain, group, project)
+ d.readProjectConfig(rootDomain, group, projectName)
return nil
}
@@ -119,10 +139,7 @@ func (d domains) ReadGroups(rootDomain string) error {
continue
}
- count := d.readProjects(rootDomain, group.Name())
- if count > 0 {
- d.addDomain(rootDomain, group.Name(), "", nil)
- }
+ d.readProjects(rootDomain, group.Name())
}
return nil
}