-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Allow-/Block-List for Migrate & Mirrors (#13610)
* add black list and white list support for migrating repositories * fix fmt * fix lint * fix vendor * fix modules.txt * clean diff * specify log message * use blocklist/allowlist * allways use lowercase to match url * Apply allow/block * Settings: use existing "migrations" section * convert domains lower case * dont store unused value * Block private addresses for migration by default * fix lint * use proposed-upstream func to detect private IP addr * a nit * add own error for blocked migration, add tests, imprufe api * fix test * fix-if-localhost-is-ipv4 * rename error & error message * rename setting options * Apply suggestions from code review Co-authored-by: Lunny Xiao <[email protected]> Co-authored-by: zeripath <[email protected]> Co-authored-by: techknowlogick <[email protected]>
- Loading branch information
1 parent
0f14f69
commit b2435af
Showing
11 changed files
with
228 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
// Copyright 2019 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 matchlist | ||
|
||
import ( | ||
"strings" | ||
|
||
"github.com/gobwas/glob" | ||
) | ||
|
||
// Matchlist represents a block or allow list | ||
type Matchlist struct { | ||
ruleGlobs []glob.Glob | ||
} | ||
|
||
// NewMatchlist creates a new block or allow list | ||
func NewMatchlist(rules ...string) (*Matchlist, error) { | ||
for i := range rules { | ||
rules[i] = strings.ToLower(rules[i]) | ||
} | ||
list := Matchlist{ | ||
ruleGlobs: make([]glob.Glob, 0, len(rules)), | ||
} | ||
|
||
for _, rule := range rules { | ||
rg, err := glob.Compile(rule) | ||
if err != nil { | ||
return nil, err | ||
} | ||
list.ruleGlobs = append(list.ruleGlobs, rg) | ||
} | ||
|
||
return &list, nil | ||
} | ||
|
||
// Match will matches | ||
func (b *Matchlist) Match(u string) bool { | ||
for _, r := range b.ruleGlobs { | ||
if r.Match(u) { | ||
return true | ||
} | ||
} | ||
return false | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
// Copyright 2019 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 ( | ||
"testing" | ||
|
||
"code.gitea.io/gitea/modules/setting" | ||
|
||
"github.com/stretchr/testify/assert" | ||
) | ||
|
||
func TestMigrateWhiteBlocklist(t *testing.T) { | ||
setting.Migrations.AllowedDomains = []string{"github.com"} | ||
assert.NoError(t, Init()) | ||
|
||
err := isMigrateURLAllowed("https://gitlab.com/gitlab/gitlab.git") | ||
assert.Error(t, err) | ||
|
||
err = isMigrateURLAllowed("https://github.com/go-gitea/gitea.git") | ||
assert.NoError(t, err) | ||
|
||
setting.Migrations.AllowedDomains = []string{} | ||
setting.Migrations.BlockedDomains = []string{"github.com"} | ||
assert.NoError(t, Init()) | ||
|
||
err = isMigrateURLAllowed("https://gitlab.com/gitlab/gitlab.git") | ||
assert.NoError(t, err) | ||
|
||
err = isMigrateURLAllowed("https://github.com/go-gitea/gitea.git") | ||
assert.Error(t, err) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters