Skip to content

Commit

Permalink
Support hostname:port to pass host matcher's check go-gitea#19543 (g…
Browse files Browse the repository at this point in the history
…o-gitea#19543)

hostmatcher: split the hostname from the `hostname:port` string, use the correct hostname to do the match.
  • Loading branch information
wxiaoguang authored Apr 28, 2022
1 parent 8eb1cd9 commit a51efb4
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
9 changes: 7 additions & 2 deletions modules/hostmatcher/hostmatcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,13 +125,18 @@ func (hl *HostMatchList) checkIP(ip net.IP) bool {

// MatchHostName checks if the host matches an allow/deny(block) list
func (hl *HostMatchList) MatchHostName(host string) bool {
hostname, _, err := net.SplitHostPort(host)
if err != nil {
hostname = host
}

if hl == nil {
return false
}
if hl.checkPattern(host) {
if hl.checkPattern(hostname) {
return true
}
if ip := net.ParseIP(host); ip != nil {
if ip := net.ParseIP(hostname); ip != nil {
return hl.checkIP(ip)
}
return false
Expand Down
2 changes: 2 additions & 0 deletions modules/hostmatcher/hostmatcher_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ func TestHostOrIPMatchesList(t *testing.T) {

{"", net.ParseIP("10.0.1.1"), true},
{"10.0.1.1", nil, true},
{"10.0.1.1:8080", nil, true},
{"", net.ParseIP("192.168.1.1"), true},
{"192.168.1.1", nil, true},
{"", net.ParseIP("fd00::1"), true},
Expand All @@ -48,6 +49,7 @@ func TestHostOrIPMatchesList(t *testing.T) {

{"mydomain.com", net.IPv4zero, false},
{"sub.mydomain.com", net.IPv4zero, true},
{"sub.mydomain.com:8080", net.IPv4zero, true},

{"", net.ParseIP("169.254.1.1"), true},
{"169.254.1.1", nil, true},
Expand Down

0 comments on commit a51efb4

Please sign in to comment.