|  | @@ -45,15 +45,15 @@ type Oauther struct {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  var (
 | 
	
		
			
				|  |  | -	AppVer     string
 | 
	
		
			
				|  |  | -	AppName    string
 | 
	
		
			
				|  |  | -	AppLogo    string
 | 
	
		
			
				|  |  | -	AppUrl     string
 | 
	
		
			
				|  |  | -	IsProdMode bool
 | 
	
		
			
				|  |  | -	Domain     string
 | 
	
		
			
				|  |  | -	SecretKey  string
 | 
	
		
			
				|  |  | -	RunUser    string
 | 
	
		
			
				|  |  | -	LdapAuth   bool
 | 
	
		
			
				|  |  | +	AppVer      string
 | 
	
		
			
				|  |  | +	AppName     string
 | 
	
		
			
				|  |  | +	AppLogo     string
 | 
	
		
			
				|  |  | +	AppUrl      string
 | 
	
		
			
				|  |  | +	OfflineMode bool
 | 
	
		
			
				|  |  | +	ProdMode    bool
 | 
	
		
			
				|  |  | +	Domain      string
 | 
	
		
			
				|  |  | +	SecretKey   string
 | 
	
		
			
				|  |  | +	RunUser     string
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	RepoRootPath string
 | 
	
		
			
				|  |  |  	ScriptType   string
 | 
	
	
		
			
				|  | @@ -93,6 +93,7 @@ var Service struct {
 | 
	
		
			
				|  |  |  	NotifyMail           bool
 | 
	
		
			
				|  |  |  	ActiveCodeLives      int
 | 
	
		
			
				|  |  |  	ResetPwdCodeLives    int
 | 
	
		
			
				|  |  | +	LdapAuth             bool
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  func ExecDir() (string, error) {
 | 
	
	
		
			
				|  | @@ -178,6 +179,36 @@ func newLogService() {
 | 
	
		
			
				|  |  |  	log.Info("Log Mode: %s(%s)", strings.Title(LogMode), levelName)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +func newLdapService() {
 | 
	
		
			
				|  |  | +	Service.LdapAuth = Cfg.MustBool("security", "LDAP_AUTH", false)
 | 
	
		
			
				|  |  | +	if !Service.LdapAuth {
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	nbsrc := 0
 | 
	
		
			
				|  |  | +	for _, v := range Cfg.GetSectionList() {
 | 
	
		
			
				|  |  | +		if matched, _ := regexp.MatchString("(?i)^LDAPSOURCE.*", v); matched {
 | 
	
		
			
				|  |  | +			ldapname := Cfg.MustValue(v, "name", v)
 | 
	
		
			
				|  |  | +			ldaphost := Cfg.MustValue(v, "host")
 | 
	
		
			
				|  |  | +			ldapport := Cfg.MustInt(v, "port", 389)
 | 
	
		
			
				|  |  | +			ldapbasedn := Cfg.MustValue(v, "basedn", "dc=*,dc=*")
 | 
	
		
			
				|  |  | +			ldapattribute := Cfg.MustValue(v, "attribute", "mail")
 | 
	
		
			
				|  |  | +			ldapfilter := Cfg.MustValue(v, "filter", "(*)")
 | 
	
		
			
				|  |  | +			ldapmsadsaformat := Cfg.MustValue(v, "MSADSAFORMAT", "%s")
 | 
	
		
			
				|  |  | +			ldap.AddSource(ldapname, ldaphost, ldapport, ldapbasedn, ldapattribute, ldapfilter, ldapmsadsaformat)
 | 
	
		
			
				|  |  | +			nbsrc++
 | 
	
		
			
				|  |  | +			log.Debug("%s added as LDAP source", ldapname)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if nbsrc == 0 {
 | 
	
		
			
				|  |  | +		log.Warn("No valide LDAP found, LDAP Authentication NOT enabled")
 | 
	
		
			
				|  |  | +		Service.LdapAuth = false
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	log.Info("LDAP Authentication Enabled")
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  func newCacheService() {
 | 
	
		
			
				|  |  |  	CacheAdapter = Cfg.MustValue("cache", "ADAPTER", "memory")
 | 
	
		
			
				|  |  |  	if EnableRedis {
 | 
	
	
		
			
				|  | @@ -295,6 +326,7 @@ func NewConfigContext() {
 | 
	
		
			
				|  |  |  	AppLogo = Cfg.MustValue("", "APP_LOGO", "img/favicon.png")
 | 
	
		
			
				|  |  |  	AppUrl = Cfg.MustValue("server", "ROOT_URL")
 | 
	
		
			
				|  |  |  	Domain = Cfg.MustValue("server", "DOMAIN")
 | 
	
		
			
				|  |  | +	OfflineMode = Cfg.MustBool("server", "OFFLINE_MODE", false)
 | 
	
		
			
				|  |  |  	SecretKey = Cfg.MustValue("security", "SECRET_KEY")
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	InstallLock = Cfg.MustBool("security", "INSTALL_LOCK", false)
 | 
	
	
		
			
				|  | @@ -312,34 +344,6 @@ func NewConfigContext() {
 | 
	
		
			
				|  |  |  	LogInRememberDays = Cfg.MustInt("security", "LOGIN_REMEMBER_DAYS")
 | 
	
		
			
				|  |  |  	CookieUserName = Cfg.MustValue("security", "COOKIE_USERNAME")
 | 
	
		
			
				|  |  |  	CookieRememberName = Cfg.MustValue("security", "COOKIE_REMEMBER_NAME")
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	// load LDAP authentication configuration if present
 | 
	
		
			
				|  |  | -	LdapAuth = Cfg.MustBool("security", "LDAP_AUTH", false)
 | 
	
		
			
				|  |  | -	if LdapAuth {
 | 
	
		
			
				|  |  | -		qlog.Debug("LDAP AUTHENTICATION activated")
 | 
	
		
			
				|  |  | -		nbsrc := 0
 | 
	
		
			
				|  |  | -		for _, v := range Cfg.GetSectionList() {
 | 
	
		
			
				|  |  | -			if matched, _ := regexp.MatchString("(?i)^LDAPSOURCE.*", v); matched {
 | 
	
		
			
				|  |  | -				ldapname := Cfg.MustValue(v, "name", v)
 | 
	
		
			
				|  |  | -				ldaphost := Cfg.MustValue(v, "host")
 | 
	
		
			
				|  |  | -				ldapport := Cfg.MustInt(v, "port", 389)
 | 
	
		
			
				|  |  | -				ldapbasedn := Cfg.MustValue(v, "basedn", "dc=*,dc=*")
 | 
	
		
			
				|  |  | -				ldapattribute := Cfg.MustValue(v, "attribute", "mail")
 | 
	
		
			
				|  |  | -				ldapfilter := Cfg.MustValue(v, "filter", "(*)")
 | 
	
		
			
				|  |  | -				ldapmsadsaformat := Cfg.MustValue(v, "MSADSAFORMAT", "%s")
 | 
	
		
			
				|  |  | -				ldap.AddSource(ldapname, ldaphost, ldapport, ldapbasedn, ldapattribute, ldapfilter, ldapmsadsaformat)
 | 
	
		
			
				|  |  | -				nbsrc += 1
 | 
	
		
			
				|  |  | -				qlog.Debug("%s added as LDAP source", ldapname)
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		if nbsrc == 0 {
 | 
	
		
			
				|  |  | -			qlog.Debug("No valide LDAP found, LDAP AUTHENTICATION NOT activated")
 | 
	
		
			
				|  |  | -			LdapAuth = false
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	} else {
 | 
	
		
			
				|  |  | -		qlog.Debug("LDAP AUTHENTICATION NOT activated")
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	PictureService = Cfg.MustValue("picture", "SERVICE")
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	// Determine and create root git reposiroty path.
 | 
	
	
		
			
				|  | @@ -357,6 +361,7 @@ func NewConfigContext() {
 | 
	
		
			
				|  |  |  func NewBaseServices() {
 | 
	
		
			
				|  |  |  	newService()
 | 
	
		
			
				|  |  |  	newLogService()
 | 
	
		
			
				|  |  | +	newLdapService()
 | 
	
		
			
				|  |  |  	newCacheService()
 | 
	
		
			
				|  |  |  	newSessionService()
 | 
	
		
			
				|  |  |  	newMailService()
 |