// Copyright 2020 The Gitea Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. package migrations import ( "fmt" "math" "path/filepath" "strings" "time" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" "xorm.io/xorm" ) func addCommitDivergenceToPulls(x *xorm.Engine) error { type Repository struct { ID int64 `xorm:"pk autoincr"` OwnerID int64 `xorm:"UNIQUE(s) index"` OwnerName string LowerName string `xorm:"UNIQUE(s) INDEX NOT NULL"` Name string `xorm:"INDEX NOT NULL"` } type PullRequest struct { ID int64 `xorm:"pk autoincr"` IssueID int64 `xorm:"INDEX"` Index int64 CommitsAhead int CommitsBehind int BaseRepoID int64 `xorm:"INDEX"` BaseBranch string HasMerged bool `xorm:"INDEX"` MergedCommitID string `xorm:"VARCHAR(40)"` } if err := x.Sync2(new(PullRequest)); err != nil { return fmt.Errorf("Sync2: %v", err) } last := 0 migrated := 0 batchSize := setting.Database.IterateBufferSize sess := x.NewSession() defer sess.Close() ticker := time.NewTicker(5 * time.Second) defer ticker.Stop() count, err := sess.Where("has_merged = ?", false).Count(new(PullRequest)) if err != nil { return err } log.Info("%d Unmerged Pull Request(s) to migrate ...", count) for { if err := sess.Begin(); err != nil { return err } var results = make([]*PullRequest, 0, batchSize) err := sess.Where("has_merged = ?", false).OrderBy("id").Limit(batchSize, last).Find(&results) if err != nil { return err } if len(results) == 0 { break } last += batchSize for _, pr := range results { baseRepo := &Repository{ID: pr.BaseRepoID} has, err := x.Table("repository").Get(baseRepo) if err != nil { return fmt.Errorf("Unable to get base repo %d %v", pr.BaseRepoID, err) } if !has { log.Error("Missing base repo with id %d for PR ID %d", pr.BaseRepoID, pr.ID) continue } userPath := filepath.Join(setting.RepoRootPath, strings.ToLower(baseRepo.OwnerName)) repoPath := filepath.Join(userPath, strings.ToLower(baseRepo.Name)+".git") gitRefName := fmt.Sprintf("refs/pull/%d/head", pr.Index) divergence, err := git.GetDivergingCommits(repoPath, pr.BaseBranch, gitRefName) if err != nil { log.Warn("Could not recalculate Divergence for pull: %d", pr.ID) pr.CommitsAhead = 0 pr.CommitsBehind = 0 } pr.CommitsAhead = divergence.Ahead pr.CommitsBehind = divergence.Behind if _, err = sess.ID(pr.ID).Cols("commits_ahead", "commits_behind").Update(pr); err != nil { return fmt.Errorf("Update Cols: %v", err) } migrated++ } if err := sess.Commit(); err != nil { return err } select { case <-ticker.C: log.Info( "%d/%d (%2.0f%%) Pull Request(s) migrated in %d batches. %d PRs Remaining ...", migrated, count, float64(migrated)/float64(count)*100, int(math.Ceil(float64(migrated)/float64(batchSize))), count-int64(migrated)) default: } } log.Info("Completed migrating %d Pull Request(s) in: %d batches", count, int(math.Ceil(float64(migrated)/float64(batchSize)))) return nil } option value='vstakhov-lua-shingles'>vstakhov-lua-shingles Rapid spam filtering system: https://github.com/rspamd/rspamdwww-data
summaryrefslogtreecommitdiffstats
path: root/test/functional/configs/dkim.conf
blob: b5158564d09317cda237cac534d6ca1dea6e7553 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
options = {
	filters = ["dkim"]
	pidfile = "${TMPDIR}/rspamd.pid"
}
logging = {
	type = "file",
	level = "debug"
	filename = "${TMPDIR}/rspamd.log"
}
metric = {
	name = "default",
	actions = {
		reject = 100500,
	}
	unknown_weight = 1
}

worker {
	type = normal
	bind_socket = ${LOCAL_ADDR}:${PORT_NORMAL}
	count = 1
	keypair {
		pubkey = "${KEY_PUB1}";
		privkey = "${KEY_PVT1}";
	}
}

dkim {

sign_condition =<<EOD
return function(task)
  local dodkim = task:get_request_header('dodkim')
  if not dodkim then return end
  return {
    key = "${TESTDIR}/configs/dkim.key",
    domain = "rspamd.tk",
    selector = "testdkim"
  }
end
EOD;

  dkim_cache_size = 2k;
  dkim_cache_expire = 1d;
  time_jitter = 6h;
  trusted_only = false;
  skip_multi = false;
}