@ -45,15 +45,15 @@ type Oauther struct { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					var  (  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						AppVer      string   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						AppName     string   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						AppLogo     string   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						AppUrl      string   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						IsProd Mode  bool   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Domain      string   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SecretKey    string   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						RunUser      string   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						LdapAuth    bool   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						AppVer        string   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						AppName       string   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						AppLogo       string   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						AppUrl        string   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Offline Mode  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 ( )