introduce limiter for planned refactoring

This commit is contained in:
Brad Rydzewski 2017-09-11 10:22:45 -07:00
parent 902523911e
commit 25c9b8050a
6 changed files with 21 additions and 0 deletions

View file

@ -619,6 +619,7 @@ func setupEvilGlobals(c *cli.Context, v store.Store, r remote.Remote) {
droneserver.Config.Services.Secrets = setupSecretService(c, v)
droneserver.Config.Services.Senders = sender.New(v, v)
droneserver.Config.Services.Environ = setupEnvironService(c, v)
droneserver.Config.Services.Limiter = setupLimiter(c, v)
if endpoint := c.String("gating-service"); endpoint != "" {
droneserver.Config.Services.Senders = sender.NewRemote(endpoint)

View file

@ -46,6 +46,10 @@ func setupEnvironService(c *cli.Context, s store.Store) model.EnvironService {
return nil
}
func setupLimiter(c *cli.Context, s store.Store) model.Limiter {
return new(model.NoLimit)
}
func setupPubsub(c *cli.Context) {}
func setupStream(c *cli.Context) {}
func setupGatingService(c *cli.Context) {}

View file

@ -197,6 +197,11 @@ func PostHook(c *gin.Context) {
}
}
if err = Config.Services.Limiter.LimitBuild(user, repo, build); err != nil {
c.String(403, "Build blocked by limiter")
return
}
build.Trim()
err = store.CreateBuild(c, build, build.Procs...)
if err != nil {

View file

@ -81,6 +81,11 @@ func HandleAuth(c *gin.Context) {
),
}
if err = Config.Services.Limiter.LimitUser(u); err != nil {
c.String(403, "User activation blocked by limiter")
return
}
// insert the user into the database
if err := store.CreateUser(c, u); err != nil {
logrus.Errorf("cannot insert %s. %s", u.Login, err)

View file

@ -27,6 +27,11 @@ func PostRepo(c *gin.Context) {
return
}
if err := Config.Services.Limiter.LimitRepo(user, repo); err != nil {
c.String(403, "Repository activation blocked by limiter")
return
}
repo.IsActive = true
repo.UserID = user.ID
if !repo.AllowPush && !repo.AllowPull && !repo.AllowDeploy && !repo.AllowTag {

View file

@ -41,6 +41,7 @@ var Config = struct {
Secrets model.SecretService
Registries model.RegistryService
Environ model.EnvironService
Limiter model.Limiter
}
Storage struct {
// Users model.UserStore