mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-29 11:48:56 +03:00
Fix ipv6 parsing (#12321)
* Fix ipv6 parsing * Update modules/setting/setting.go Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
parent
415fc8288f
commit
4609eba2e7
3 changed files with 21 additions and 9 deletions
|
@ -7,6 +7,7 @@ package cmd
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
_ "net/http/pprof" // Used for debugging if enabled and a web server is running
|
_ "net/http/pprof" // Used for debugging if enabled and a web server is running
|
||||||
"os"
|
"os"
|
||||||
|
@ -156,7 +157,7 @@ func runWeb(ctx *cli.Context) error {
|
||||||
|
|
||||||
listenAddr := setting.HTTPAddr
|
listenAddr := setting.HTTPAddr
|
||||||
if setting.Protocol != setting.UnixSocket && setting.Protocol != setting.FCGIUnix {
|
if setting.Protocol != setting.UnixSocket && setting.Protocol != setting.FCGIUnix {
|
||||||
listenAddr += ":" + setting.HTTPPort
|
listenAddr = net.JoinHostPort(listenAddr, setting.HTTPPort)
|
||||||
}
|
}
|
||||||
log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubURL)
|
log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubURL)
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ import (
|
||||||
_ "image/jpeg"
|
_ "image/jpeg"
|
||||||
"image/png"
|
"image/png"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"net"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
@ -969,12 +970,21 @@ func (repo *Repository) cloneLink(isWiki bool) *CloneLink {
|
||||||
}
|
}
|
||||||
|
|
||||||
cl := new(CloneLink)
|
cl := new(CloneLink)
|
||||||
|
|
||||||
|
// if we have a ipv6 literal we need to put brackets around it
|
||||||
|
// for the git cloning to work.
|
||||||
|
sshDomain := setting.SSH.Domain
|
||||||
|
ip := net.ParseIP(setting.SSH.Domain)
|
||||||
|
if ip != nil && ip.To4() == nil {
|
||||||
|
sshDomain = "[" + setting.SSH.Domain + "]"
|
||||||
|
}
|
||||||
|
|
||||||
if setting.SSH.Port != 22 {
|
if setting.SSH.Port != 22 {
|
||||||
cl.SSH = fmt.Sprintf("ssh://%s@%s:%d/%s/%s.git", sshUser, setting.SSH.Domain, setting.SSH.Port, repo.OwnerName, repoName)
|
cl.SSH = fmt.Sprintf("ssh://%s@%s/%s/%s.git", sshUser, net.JoinHostPort(setting.SSH.Domain, strconv.Itoa(setting.SSH.Port)), repo.OwnerName, repoName)
|
||||||
} else if setting.Repository.UseCompatSSHURI {
|
} else if setting.Repository.UseCompatSSHURI {
|
||||||
cl.SSH = fmt.Sprintf("ssh://%s@%s/%s/%s.git", sshUser, setting.SSH.Domain, repo.OwnerName, repoName)
|
cl.SSH = fmt.Sprintf("ssh://%s@%s/%s/%s.git", sshUser, sshDomain, repo.OwnerName, repoName)
|
||||||
} else {
|
} else {
|
||||||
cl.SSH = fmt.Sprintf("%s@%s:%s/%s.git", sshUser, setting.SSH.Domain, repo.OwnerName, repoName)
|
cl.SSH = fmt.Sprintf("%s@%s:%s/%s.git", sshUser, sshDomain, repo.OwnerName, repoName)
|
||||||
}
|
}
|
||||||
cl.HTTPS = ComposeHTTPSCloneURL(repo.OwnerName, repoName)
|
cl.HTTPS = ComposeHTTPSCloneURL(repo.OwnerName, repoName)
|
||||||
return cl
|
return cl
|
||||||
|
|
|
@ -626,8 +626,10 @@ func NewContext() {
|
||||||
StaticURLPrefix = strings.TrimSuffix(sec.Key("STATIC_URL_PREFIX").MustString(AppSubURL), "/")
|
StaticURLPrefix = strings.TrimSuffix(sec.Key("STATIC_URL_PREFIX").MustString(AppSubURL), "/")
|
||||||
AppSubURLDepth = strings.Count(AppSubURL, "/")
|
AppSubURLDepth = strings.Count(AppSubURL, "/")
|
||||||
// Check if Domain differs from AppURL domain than update it to AppURL's domain
|
// Check if Domain differs from AppURL domain than update it to AppURL's domain
|
||||||
// TODO: Can be replaced with url.Hostname() when minimal GoLang version is 1.8
|
urlHostname, _, err := net.SplitHostPort(appURL.Host)
|
||||||
urlHostname := strings.SplitN(appURL.Host, ":", 2)[0]
|
if err != nil {
|
||||||
|
log.Fatal("Invalid host in ROOT_URL '%s': %s", appURL.Host, err)
|
||||||
|
}
|
||||||
if urlHostname != Domain && net.ParseIP(urlHostname) == nil {
|
if urlHostname != Domain && net.ParseIP(urlHostname) == nil {
|
||||||
Domain = urlHostname
|
Domain = urlHostname
|
||||||
}
|
}
|
||||||
|
@ -643,11 +645,10 @@ func NewContext() {
|
||||||
default:
|
default:
|
||||||
defaultLocalURL = string(Protocol) + "://"
|
defaultLocalURL = string(Protocol) + "://"
|
||||||
if HTTPAddr == "0.0.0.0" {
|
if HTTPAddr == "0.0.0.0" {
|
||||||
defaultLocalURL += "localhost"
|
defaultLocalURL += net.JoinHostPort("localhost", HTTPPort) + "/"
|
||||||
} else {
|
} else {
|
||||||
defaultLocalURL += HTTPAddr
|
defaultLocalURL += net.JoinHostPort(HTTPAddr, HTTPPort) + "/"
|
||||||
}
|
}
|
||||||
defaultLocalURL += ":" + HTTPPort + "/"
|
|
||||||
}
|
}
|
||||||
LocalURL = sec.Key("LOCAL_ROOT_URL").MustString(defaultLocalURL)
|
LocalURL = sec.Key("LOCAL_ROOT_URL").MustString(defaultLocalURL)
|
||||||
RedirectOtherPort = sec.Key("REDIRECT_OTHER_PORT").MustBool(false)
|
RedirectOtherPort = sec.Key("REDIRECT_OTHER_PORT").MustBool(false)
|
||||||
|
|
Loading…
Reference in a new issue