mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-22 21:10:44 -05:00
This adapts the storage service to the recent changes of the LDAP settings in reva. Also we define a new set of LDAP env variables that can be shared between all LDAP related ocis services (graph, idp, storage-auth-basic, storage-userprovider, storage-groupprovider, idm). This should simplify the most LDAP based configurations considerably.
61 lines
2.2 KiB
Go
61 lines
2.2 KiB
Go
package command
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/owncloud/ocis/ocis-pkg/log"
|
|
"github.com/owncloud/ocis/storage/pkg/config"
|
|
)
|
|
|
|
const caTimeout = 5
|
|
|
|
func ldapConfigFromString(cfg *config.Config) map[string]interface{} {
|
|
return map[string]interface{}{
|
|
"uri": cfg.Reva.LDAP.URI,
|
|
"cacert": cfg.Reva.LDAP.CACert,
|
|
"insecure": cfg.Reva.LDAP.Insecure,
|
|
"bind_username": cfg.Reva.LDAP.BindDN,
|
|
"bind_password": cfg.Reva.LDAP.BindPassword,
|
|
"user_base_dn": cfg.Reva.LDAP.UserBaseDN,
|
|
"group_base_dn": cfg.Reva.LDAP.GroupBaseDN,
|
|
"user_filter": cfg.Reva.LDAP.UserFilter,
|
|
"group_filter": cfg.Reva.LDAP.GroupFilter,
|
|
"user_objectclass": cfg.Reva.LDAP.UserObjectClass,
|
|
"group_objectclass": cfg.Reva.LDAP.GroupObjectClass,
|
|
"login_attributes": cfg.Reva.LDAP.LoginAttributes,
|
|
"idp": cfg.Reva.LDAP.IDP,
|
|
"gatewaysvc": cfg.Reva.Gateway.Endpoint,
|
|
"user_schema": map[string]interface{}{
|
|
"id": cfg.Reva.LDAP.UserSchema.ID,
|
|
"idIsOctetString": cfg.Reva.LDAP.UserSchema.IDIsOctetString,
|
|
"mail": cfg.Reva.LDAP.UserSchema.Mail,
|
|
"displayName": cfg.Reva.LDAP.UserSchema.DisplayName,
|
|
"userName": cfg.Reva.LDAP.UserSchema.Username,
|
|
},
|
|
"group_schema": map[string]interface{}{
|
|
"id": cfg.Reva.LDAP.GroupSchema.ID,
|
|
"idIsOctetString": cfg.Reva.LDAP.GroupSchema.IDIsOctetString,
|
|
"mail": cfg.Reva.LDAP.GroupSchema.Mail,
|
|
"displayName": cfg.Reva.LDAP.GroupSchema.DisplayName,
|
|
"groupName": cfg.Reva.LDAP.GroupSchema.Groupname,
|
|
"member": cfg.Reva.LDAP.GroupSchema.Member,
|
|
},
|
|
}
|
|
}
|
|
|
|
func waitForLDAPCA(log log.Logger, cfg *config.LDAP) error {
|
|
if !cfg.Insecure && cfg.CACert != "" {
|
|
if _, err := os.Stat(cfg.CACert); errors.Is(err, os.ErrNotExist) {
|
|
log.Warn().Str("LDAP CACert", cfg.CACert).Msgf("File does not exist. Waiting %d seconds for it to appear.", caTimeout)
|
|
time.Sleep(caTimeout * time.Second)
|
|
if _, err := os.Stat(cfg.CACert); errors.Is(err, os.ErrNotExist) {
|
|
log.Warn().Str("LDAP CACert", cfg.CACert).Msgf("File does still not exist after Timeout")
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|