]> source.dussan.org Git - gitea.git/commitdiff
Fix ipv6 parsing for builtin ssh server (#17561)
authorWim <wim@42.be>
Sat, 6 Nov 2021 06:23:32 +0000 (07:23 +0100)
committerGitHub <noreply@github.com>
Sat, 6 Nov 2021 06:23:32 +0000 (14:23 +0800)
integrations/git_helper_for_declarative_test.go
modules/ssh/ssh.go
routers/init.go

index 9da5c05f94ecbb2c48c2292bea29258fbdb08546..71473ce464bc3f1849bbdbb60b63218a5c127b9f 100644 (file)
@@ -13,6 +13,7 @@ import (
        "os"
        "path"
        "path/filepath"
+       "strconv"
        "strings"
        "testing"
        "time"
@@ -55,7 +56,7 @@ func createSSHUrl(gitPath string, u *url.URL) *url.URL {
        u2 := *u
        u2.Scheme = "ssh"
        u2.User = url.User("git")
-       u2.Host = fmt.Sprintf("%s:%d", setting.SSH.ListenHost, setting.SSH.ListenPort)
+       u2.Host = net.JoinHostPort(setting.SSH.ListenHost, strconv.Itoa(setting.SSH.ListenPort))
        u2.Path = gitPath
        return &u2
 }
index 909ed32c5ecfe0bda1789702690010f2879dc764..5f19dd4a5c7efc0598a3aac96bfbe961c14b63cd 100644 (file)
@@ -17,6 +17,7 @@ import (
        "os"
        "os/exec"
        "path/filepath"
+       "strconv"
        "strings"
        "sync"
        "syscall"
@@ -264,7 +265,7 @@ func sshConnectionFailed(conn net.Conn, err error) {
 // Listen starts a SSH server listens on given port.
 func Listen(host string, port int, ciphers []string, keyExchanges []string, macs []string) {
        srv := ssh.Server{
-               Addr:             fmt.Sprintf("%s:%d", host, port),
+               Addr:             net.JoinHostPort(host, strconv.Itoa(port)),
                PublicKeyHandler: publicKeyHandler,
                Handler:          sessionHandler,
                ServerConfigCallback: func(ctx ssh.Context) *gossh.ServerConfig {
index a4f5f606bac5354f7cf7f8e17e668c7fcad0b411..1e2b7a02f65cfc5b67532618f82d0d66b68dc6f6 100644 (file)
@@ -6,8 +6,10 @@ package routers
 
 import (
        "context"
+       "net"
        "reflect"
        "runtime"
+       "strconv"
        "strings"
 
        "code.gitea.io/gitea/models"
@@ -155,7 +157,9 @@ func GlobalInit(ctx context.Context) {
 
        if setting.SSH.StartBuiltinServer {
                ssh.Listen(setting.SSH.ListenHost, setting.SSH.ListenPort, setting.SSH.ServerCiphers, setting.SSH.ServerKeyExchanges, setting.SSH.ServerMACs)
-               log.Info("SSH server started on %s:%d. Cipher list (%v), key exchange algorithms (%v), MACs (%v)", setting.SSH.ListenHost, setting.SSH.ListenPort, setting.SSH.ServerCiphers, setting.SSH.ServerKeyExchanges, setting.SSH.ServerMACs)
+               log.Info("SSH server started on %s. Cipher list (%v), key exchange algorithms (%v), MACs (%v)",
+                       net.JoinHostPort(setting.SSH.ListenHost, strconv.Itoa(setting.SSH.ListenPort)),
+                       setting.SSH.ServerCiphers, setting.SSH.ServerKeyExchanges, setting.SSH.ServerMACs)
        } else {
                ssh.Unused()
        }