Browse Source

Finsih mail resend limit

tags/v1.2.0-rc1
Unknown 12 years ago
parent
commit
d40499e7fa
9 changed files with 60 additions and 16 deletions
  1. +1
    -1
      README.md
  2. +7
    -1
      conf/app.ini
  3. +1
    -1
      gogs.go
  4. +0
    -1
      models/models.go
  5. +25
    -10
      modules/base/conf.go
  6. +3
    -0
      routers/admin/admin.go
  7. +10
    -2
      routers/user/user.go
  8. +11
    -0
      templates/admin/config.tmpl
  9. +2
    -0
      templates/user/active.tmpl

+ 1
- 1
README.md View File

@@ -5,7 +5,7 @@ Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language.

Since we choose to use pure Go implementation of Git manipulation, Gogs certainly supports **ALL platforms** that Go supports, including Linux, Max OS X, and Windows with **ZERO** dependency.

##### Current version: 0.1.4 Alpha
##### Current version: 0.1.5 Alpha

## Purpose



+ 7
- 1
conf/app.ini View File

@@ -61,8 +61,14 @@ USER =
PASSWD =

[cache]
; Either "memory", "redis", or "memcache", default is "memory"
ADAPTER = memory
CONFIG =
; For "memory" only, GC interval in seconds, default is 60
INTERVAL = 60
; For "redis" and "memcache", connection host address
; redis: ":6039"
; memcache: "127.0.0.1:11211"
HOST =

[log]
; Either "console", "file", "conn" or "smtp", default is "console"


+ 1
- 1
gogs.go View File

@@ -20,7 +20,7 @@ import (
// Test that go1.2 tag above is included in builds. main.go refers to this definition.
const go12tag = true

const APP_VER = "0.1.4.0321"
const APP_VER = "0.1.5.0321"

func init() {
base.AppVer = APP_VER


+ 0
- 1
models/models.go View File

@@ -35,7 +35,6 @@ func LoadModelsConfig() {
}

func setEngine() {

var err error
switch DbCfg.Type {
case "mysql":


+ 25
- 10
modules/base/conf.go View File

@@ -133,6 +133,30 @@ func newLogService() {
log.Info("Log Mode: %s(%s)", strings.Title(mode), levelName)
}

func newCacheService() {
CacheAdapter = Cfg.MustValue("cache", "ADAPTER", "memory")

switch CacheAdapter {
case "memory":
CacheConfig = fmt.Sprintf(`{"interval":%d}`, Cfg.MustInt("cache", "INTERVAL", 60))
case "redis", "memcache":
CacheConfig = fmt.Sprintf(`{"conn":"%s"}`, Cfg.MustValue("cache", "HOST"))
default:
fmt.Printf("Unknown cache adapter: %s\n", CacheAdapter)
os.Exit(2)
}

var err error
Cache, err = cache.NewCache(CacheAdapter, CacheConfig)
if err != nil {
fmt.Printf("Init cache system failed, adapter: %s, config: %s, %v\n",
CacheAdapter, CacheConfig, err)
os.Exit(2)
}

log.Info("Cache Service Enabled")
}

func newMailService() {
// Check mailer setting.
if Cfg.MustBool("mailer", "ENABLED") {
@@ -188,16 +212,6 @@ func NewConfigContext() {
SecretKey = Cfg.MustValue("security", "SECRET_KEY")
RunUser = Cfg.MustValue("", "RUN_USER")

CacheAdapter = Cfg.MustValue("cache", "ADAPTER")
CacheConfig = Cfg.MustValue("cache", "CONFIG")

Cache, err = cache.NewCache(CacheAdapter, CacheConfig)
if err != nil {
fmt.Printf("Init cache system failed, adapter: %s, config: %s, %v\n",
CacheAdapter, CacheConfig, err)
os.Exit(2)
}

// Determine and create root git reposiroty path.
RepoRootPath = Cfg.MustValue("repository", "ROOT")
if err = os.MkdirAll(RepoRootPath, os.ModePerm); err != nil {
@@ -209,6 +223,7 @@ func NewConfigContext() {
func NewServices() {
newService()
newLogService()
newCacheService()
newMailService()
newRegisterMailService()
}

+ 3
- 0
routers/admin/admin.go View File

@@ -67,5 +67,8 @@ func Config(ctx *middleware.Context) {
ctx.Data["Mailer"] = base.MailService
}

ctx.Data["CacheAdapter"] = base.CacheAdapter
ctx.Data["CacheConfig"] = base.CacheConfig

ctx.HTML(200, "admin/config")
}

+ 10
- 2
routers/user/user.go View File

@@ -167,6 +167,10 @@ func SignUp(ctx *middleware.Context, form auth.RegisterForm) {
ctx.Data["Email"] = u.Email
ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60
ctx.HTML(200, "user/active")

if err = ctx.Cache.Put("MailResendLimit_"+u.LowerName, u.LowerName, 180); err != nil {
log.Error("Set cache(MailResendLimit) fail: %v", err)
}
return
}
ctx.Redirect("/user/login")
@@ -247,8 +251,12 @@ func Activate(ctx *middleware.Context) {
}
// Resend confirmation e-mail.
if base.Service.RegisterEmailConfirm {
ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60
mailer.SendActiveMail(ctx.Render, ctx.User)
if ctx.Cache.IsExist("MailResendLimit_" + ctx.User.LowerName) {
ctx.Data["ResendLimited"] = true
} else {
ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60
mailer.SendActiveMail(ctx.Render, ctx.User)
}
} else {
ctx.Data["ServiceNotEnabled"] = true
}


+ 11
- 0
templates/admin/config.tmpl View File

@@ -63,6 +63,17 @@
<div><b>User:</b> {{.Mailer.User}}</div>
</div>
</div>

<div class="panel panel-default">
<div class="panel-heading">
Cache Configuration
</div>

<div class="panel-body">
<div><b>Cache Adapter:</b> {{.CacheAdapter}}</div>
<div><b>Cache Config:</b> <code>{{.CacheConfig}}</code></div>
</div>
</div>
</div>
</div>
{{template "base/footer" .}}

+ 2
- 0
templates/user/active.tmpl View File

@@ -6,6 +6,8 @@
{{if .IsActivatePage}}
{{if .ServiceNotEnabled}}
<p>Sorry, Register Mail Confirmation has been disabled.</p>
{{else if .ResendLimited}}
<p>Sorry, you are sending activation e-mail too frequently, please wait 3 minutes.</p>
{{else}}
<p>New confirmation e-mail has been sent to <b>{{.SignedUser.Email}}</b>, please check your inbox within {{.Hours}} hours to complete your registeration.</p>
<hr/>


Loading…
Cancel
Save