Allow override of automatically assigned delegated domain

This commit is contained in:
nemunaire 2022-03-28 23:55:31 +02:00
parent 54a3fe9192
commit c4da666a1e
3 changed files with 29 additions and 4 deletions

View File

@ -11,15 +11,23 @@ var (
)
func (student *Student) MyDelegatedDomainSuffix() string {
if student.DelegatedDomain != nil {
for _, ddomain := range DelegatedDomainSuffixes {
if strings.HasSuffix(*student.DelegatedDomain, ddomain) {
return ddomain
}
}
}
return DelegatedDomainSuffixes[int(student.Id)%len(DelegatedDomainSuffixes)]
}
func (student *Student) MyDelegatedDomain() string {
if student.DelegatedDomain != nil {
return *student.DelegatedDomain
} else {
return fmt.Sprintf("%s.%s", strings.Trim(strings.Replace(student.Login, "_", "-", -1), "-_"), student.MyDelegatedDomainSuffix())
}
return fmt.Sprintf("%s.%s", strings.Trim(strings.Replace(student.Login, "_", "-", -1), "-_"), student.MyDelegatedDomainSuffix())
}
func (student *Student) MyAssociatedDomainSuffix() string {
@ -33,9 +41,9 @@ func (student *Student) DefaultAssociatedDomain() string {
func (student *Student) MyAssociatedDomain() string {
if student.AssociatedDomain != nil {
return *student.AssociatedDomain
} else {
return student.DefaultAssociatedDomain()
}
return student.DefaultAssociatedDomain()
}
func (student *Student) GetAssociatedDomains() (ds []string) {

View File

@ -30,6 +30,15 @@ func init() {
}
func validateAuthToken(s *adlin.Student, _ httprouter.Params, _ []byte) (interface{}, error) {
if s.DelegatedDomain != nil {
for _, ddomain := range adlin.DelegatedDomainSuffixes {
if strings.HasSuffix(*s.DelegatedDomain, ddomain) {
s.DelegatedDomain = nil
break
}
}
}
return s, nil
}

View File

@ -89,6 +89,14 @@ func init() {
return true, nil
} else {
ns := dns.Fqdn(ue.NS)
// Ensure ns doesn't belong to one of our domain
for _, ddomain := range adlin.DelegatedDomainSuffixes {
if strings.HasSuffix(ns, ddomain) {
return nil, fmt.Errorf("Vous ne pouvez pas vous créer une délégation vers ce sous-domaine: interdit par l'administrateur.")
}
}
student.DelegatedDomain = &ns
if _, err := student.Update(); err != nil {