Browse Source

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

Co-authored-by: Lauris BH <lauris@nix.lv>
mj
Lunny Xiao 3 years ago
committed by GitHub
parent
commit
79ce91fdde
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      modules/cache/cache.go
  2. 3
      modules/setting/cache.go
  3. 33
      modules/setting/cors.go
  4. 39
      modules/setting/session.go
  5. 9
      routers/admin/admin.go
  6. 22
      routers/routes/routes.go

3
modules/cache/cache.go

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

3
modules/setting/cache.go

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

33
modules/setting/cors.go

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

39
modules/setting/session.go

@ -11,28 +11,47 @@ import (
"strings"
"code.gitea.io/gitea/modules/log"
"gitea.com/macaron/session"
)
var (
// 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() {
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"})
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) {
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.Secure = Cfg.Section("session").Key("COOKIE_SECURE").MustBool(false)
SessionConfig.Gclifetime = Cfg.Section("session").Key("GC_INTERVAL_TIME").MustInt64(86400)
SessionConfig.Maxlifetime = Cfg.Section("session").Key("SESSION_LIFE_TIME").MustInt64(86400)
SessionConfig.Domain = Cfg.Section("session").Key("DOMAIN").String()
SessionConfig.Secure = sec.Key("COOKIE_SECURE").MustBool(false)
SessionConfig.Gclifetime = sec.Key("GC_INTERVAL_TIME").MustInt64(86400)
SessionConfig.Maxlifetime = sec.Key("SESSION_LIFE_TIME").MustInt64(86400)
SessionConfig.Domain = sec.Key("DOMAIN").String()
shadowConfig, err := json.Marshal(SessionConfig)
if err != nil {

9
routers/admin/admin.go

@ -319,7 +319,14 @@ func Config(ctx *context.Context) {
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)
}
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)
ctx.Data["SessionConfig"] = sessionCfg

22
routers/routes/routes.go

@ -201,7 +201,16 @@ func NewMacaron() *macaron.Macaron {
m.Use(captcha.Captchaer(captcha.Options{
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{
Secret: setting.SecretKey,
Cookie: setting.CSRFCookieName,
@ -963,8 +972,15 @@ func RegisterRoutes(m *macaron.Macaron) {
}
var handlers []macaron.Handler
if setting.EnableCORS {
handlers = append(handlers, cors.CORS(setting.CORSConfig))
if setting.CORSConfig.Enabled {
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)
m.Group("/api", func() {

Loading…
Cancel
Save