Movde dependents on macaron from modules/setting (#10050)

Co-authored-by: Lauris BH <lauris@nix.lv>
release/v1.15
Lunny Xiao 2020-01-29 15:47:46 +08:00 committed by GitHub
parent c09e020558
commit 79ce91fdde
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 74 additions and 35 deletions

View File

@ -11,6 +11,9 @@ import (
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
mc "gitea.com/macaron/cache" mc "gitea.com/macaron/cache"
_ "gitea.com/macaron/cache/memcache" // memcache plugin for cache
_ "gitea.com/macaron/cache/redis"
) )
var conn mc.Cache var conn mc.Cache

View File

@ -9,9 +9,6 @@ import (
"time" "time"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
_ "gitea.com/macaron/cache/memcache" // memcache plugin for cache
_ "gitea.com/macaron/cache/redis"
) )
// Cache represents cache settings // Cache represents cache settings

View File

@ -8,34 +8,31 @@ import (
"time" "time"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"gitea.com/macaron/cors"
) )
var ( var (
// CORSConfig defines CORS settings // CORSConfig defines CORS settings
CORSConfig cors.Options CORSConfig = struct {
// EnableCORS defines whether CORS settings is enabled or not Enabled bool
EnableCORS bool Scheme string
AllowDomain []string
AllowSubdomain bool
Methods []string
MaxAge time.Duration
AllowCredentials bool
}{
Enabled: false,
MaxAge: 10 * time.Minute,
}
) )
func newCORSService() { func newCORSService() {
sec := Cfg.Section("cors") sec := Cfg.Section("cors")
// Check cors setting. if err := sec.MapTo(&CORSConfig); err != nil {
EnableCORS = sec.Key("ENABLED").MustBool(false) log.Fatal("Failed to map cors settings: %v", err)
maxAge := sec.Key("MAX_AGE").MustDuration(10 * time.Minute)
CORSConfig = cors.Options{
Scheme: sec.Key("SCHEME").String(),
AllowDomain: sec.Key("ALLOW_DOMAIN").Strings(","),
AllowSubdomain: sec.Key("ALLOW_SUBDOMAIN").MustBool(),
Methods: sec.Key("METHODS").Strings(","),
MaxAgeSeconds: int(maxAge.Seconds()),
AllowCredentials: sec.Key("ALLOW_CREDENTIALS").MustBool(),
} }
if EnableCORS { if CORSConfig.Enabled {
log.Info("CORS Service Enabled") log.Info("CORS Service Enabled")
} }
} }

View File

@ -11,28 +11,47 @@ import (
"strings" "strings"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"gitea.com/macaron/session"
) )
var ( var (
// SessionConfig difines Session settings // SessionConfig difines Session settings
SessionConfig session.Options SessionConfig = struct {
Provider string
// Provider configuration, it's corresponding to provider.
ProviderConfig string
// Cookie name to save session ID. Default is "MacaronSession".
CookieName string
// Cookie path to store. Default is "/".
CookiePath string
// GC interval time in seconds. Default is 3600.
Gclifetime int64
// Max life time in seconds. Default is whatever GC interval time is.
Maxlifetime int64
// Use HTTPS only. Default is false.
Secure bool
// Cookie domain name. Default is empty.
Domain string
}{
CookieName: "i_like_gitea",
Gclifetime: 86400,
Maxlifetime: 86400,
}
) )
func newSessionService() { func newSessionService() {
SessionConfig.Provider = Cfg.Section("session").Key("PROVIDER").In("memory", sec := Cfg.Section("session")
SessionConfig.Provider = sec.Key("PROVIDER").In("memory",
[]string{"memory", "file", "redis", "mysql", "postgres", "couchbase", "memcache", "nodb"}) []string{"memory", "file", "redis", "mysql", "postgres", "couchbase", "memcache", "nodb"})
SessionConfig.ProviderConfig = strings.Trim(Cfg.Section("session").Key("PROVIDER_CONFIG").MustString(path.Join(AppDataPath, "sessions")), "\" ") SessionConfig.ProviderConfig = strings.Trim(sec.Key("PROVIDER_CONFIG").MustString(path.Join(AppDataPath, "sessions")), "\" ")
if SessionConfig.Provider == "file" && !filepath.IsAbs(SessionConfig.ProviderConfig) { if SessionConfig.Provider == "file" && !filepath.IsAbs(SessionConfig.ProviderConfig) {
SessionConfig.ProviderConfig = path.Join(AppWorkPath, SessionConfig.ProviderConfig) SessionConfig.ProviderConfig = path.Join(AppWorkPath, SessionConfig.ProviderConfig)
} }
SessionConfig.CookieName = Cfg.Section("session").Key("COOKIE_NAME").MustString("i_like_gitea") SessionConfig.CookieName = sec.Key("COOKIE_NAME").MustString("i_like_gitea")
SessionConfig.CookiePath = AppSubURL SessionConfig.CookiePath = AppSubURL
SessionConfig.Secure = Cfg.Section("session").Key("COOKIE_SECURE").MustBool(false) SessionConfig.Secure = sec.Key("COOKIE_SECURE").MustBool(false)
SessionConfig.Gclifetime = Cfg.Section("session").Key("GC_INTERVAL_TIME").MustInt64(86400) SessionConfig.Gclifetime = sec.Key("GC_INTERVAL_TIME").MustInt64(86400)
SessionConfig.Maxlifetime = Cfg.Section("session").Key("SESSION_LIFE_TIME").MustInt64(86400) SessionConfig.Maxlifetime = sec.Key("SESSION_LIFE_TIME").MustInt64(86400)
SessionConfig.Domain = Cfg.Section("session").Key("DOMAIN").String() SessionConfig.Domain = sec.Key("DOMAIN").String()
shadowConfig, err := json.Marshal(SessionConfig) shadowConfig, err := json.Marshal(SessionConfig)
if err != nil { if err != nil {

View File

@ -319,7 +319,14 @@ func Config(ctx *context.Context) {
if err := json.Unmarshal([]byte(sessionCfg.ProviderConfig), &realSession); err != nil { if err := json.Unmarshal([]byte(sessionCfg.ProviderConfig), &realSession); err != nil {
log.Error("Unable to unmarshall session config for virtualed provider config: %s\nError: %v", sessionCfg.ProviderConfig, err) log.Error("Unable to unmarshall session config for virtualed provider config: %s\nError: %v", sessionCfg.ProviderConfig, err)
} }
sessionCfg = realSession sessionCfg.Provider = realSession.Provider
sessionCfg.ProviderConfig = realSession.ProviderConfig
sessionCfg.CookieName = realSession.CookieName
sessionCfg.CookiePath = realSession.CookiePath
sessionCfg.Gclifetime = realSession.Gclifetime
sessionCfg.Maxlifetime = realSession.Maxlifetime
sessionCfg.Secure = realSession.Secure
sessionCfg.Domain = realSession.Domain
} }
sessionCfg.ProviderConfig = shadowPassword(sessionCfg.Provider, sessionCfg.ProviderConfig) sessionCfg.ProviderConfig = shadowPassword(sessionCfg.Provider, sessionCfg.ProviderConfig)
ctx.Data["SessionConfig"] = sessionCfg ctx.Data["SessionConfig"] = sessionCfg

View File

@ -201,7 +201,16 @@ func NewMacaron() *macaron.Macaron {
m.Use(captcha.Captchaer(captcha.Options{ m.Use(captcha.Captchaer(captcha.Options{
SubURL: setting.AppSubURL, SubURL: setting.AppSubURL,
})) }))
m.Use(session.Sessioner(setting.SessionConfig)) m.Use(session.Sessioner(session.Options{
Provider: setting.SessionConfig.Provider,
ProviderConfig: setting.SessionConfig.ProviderConfig,
CookieName: setting.SessionConfig.CookieName,
CookiePath: setting.SessionConfig.CookiePath,
Gclifetime: setting.SessionConfig.Gclifetime,
Maxlifetime: setting.SessionConfig.Maxlifetime,
Secure: setting.SessionConfig.Secure,
Domain: setting.SessionConfig.Domain,
}))
m.Use(csrf.Csrfer(csrf.Options{ m.Use(csrf.Csrfer(csrf.Options{
Secret: setting.SecretKey, Secret: setting.SecretKey,
Cookie: setting.CSRFCookieName, Cookie: setting.CSRFCookieName,
@ -963,8 +972,15 @@ func RegisterRoutes(m *macaron.Macaron) {
} }
var handlers []macaron.Handler var handlers []macaron.Handler
if setting.EnableCORS { if setting.CORSConfig.Enabled {
handlers = append(handlers, cors.CORS(setting.CORSConfig)) handlers = append(handlers, cors.CORS(cors.Options{
Scheme: setting.CORSConfig.Scheme,
AllowDomain: setting.CORSConfig.AllowDomain,
AllowSubdomain: setting.CORSConfig.AllowSubdomain,
Methods: setting.CORSConfig.Methods,
MaxAgeSeconds: int(setting.CORSConfig.MaxAge.Seconds()),
AllowCredentials: setting.CORSConfig.AllowCredentials,
}))
} }
handlers = append(handlers, ignSignIn) handlers = append(handlers, ignSignIn)
m.Group("/api", func() { m.Group("/api", func() {