-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.go
More file actions
50 lines (47 loc) · 1.28 KB
/
utils.go
File metadata and controls
50 lines (47 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package main
import (
"log"
"strings"
srvConfig "github.com/CHESSComputing/golib/config"
"github.com/CHESSComputing/golib/ldap"
"github.com/CHESSComputing/golib/utils"
)
// helper function to find beam scientists associated with did
func didEmails(did string) []string {
var emails []string
btr := utils.GetBtr(did)
members, err := ldap.BtrMembers(
srvConfig.Config.LDAP.Login,
srvConfig.Config.LDAP.Password,
btr,
)
log.Println("BTR members", members, err)
if err != nil {
log.Printf("ERROR: unable to get btr members for did %s, error %v", did, err)
return emails
}
// for every btr member find scientists uid
attributes := []string{"memberOf", "mail"}
for _, name := range members {
entry, err := ldap.SearchBy(
srvConfig.Config.LDAP.URL,
srvConfig.Config.LDAP.Login,
srvConfig.Config.LDAP.Password,
srvConfig.Config.LDAP.BaseDN,
name, "cn", attributes)
if err != nil {
log.Printf("ERROR: ldap.SearchBy cn=%s error: %v", name, err)
continue
}
for _, rec := range entry.Entries {
vals := rec.GetAttributeValues("memberOf")
for _, v := range vals {
if strings.Contains(v, "BTR") && strings.Contains(v, btr) { // BTR scientists
email := rec.GetAttributeValue("mail")
emails = append(emails, email)
}
}
}
}
return emails
}