fix: reject non tunnel request & reject duplicated port

This commit is contained in:
2025-04-08 23:14:42 +07:00
parent 5350bc13a9
commit 0117931817
6 changed files with 51 additions and 16 deletions

View File

@ -1,7 +1,6 @@
package server
import (
"fmt"
"golang.org/x/crypto/ssh"
"log"
"net"
@ -16,7 +15,7 @@ func (s *Server) handleConnection(conn net.Conn) {
return
}
fmt.Println("SSH connection established:", sshConn.User())
log.Println("SSH connection established:", sshConn.User())
session.New(sshConn, chans, reqs)
}

View File

@ -46,14 +46,14 @@ func Handler(conn net.Conn) {
reader := bufio.NewReader(conn)
headers, err := peekUntilHeaders(reader, 8192)
if err != nil {
fmt.Println("Failed to peek headers:", err)
log.Println("Failed to peek headers:", err)
return
}
host := strings.Split(parseHostFromHeader(headers), ".")
if len(host) < 1 {
conn.Write([]byte("HTTP/1.1 400 Bad Request\r\n\r\n"))
fmt.Println("Bad Request")
log.Println("Bad Request")
conn.Close()
return
}

View File

@ -4,7 +4,6 @@ import (
"bufio"
"crypto/tls"
"errors"
"fmt"
"golang.org/x/net/context"
"log"
"net"
@ -46,7 +45,7 @@ func HandlerTLS(conn net.Conn) {
reader := bufio.NewReader(conn)
headers, err := peekUntilHeaders(reader, 8192)
if err != nil {
fmt.Println("Failed to peek headers:", err)
log.Println("Failed to peek headers:", err)
return
}

View File

@ -16,7 +16,7 @@ type Server struct {
}
func NewServer(config ssh.ServerConfig) *Server {
listener, err := net.Listen("tcp", ":2200")
listener, err := net.Listen("tcp", fmt.Sprintf(":%s", utils.Getenv("port")))
if err != nil {
log.Fatalf("failed to listen on port 2200: %v", err)
return nil
@ -45,7 +45,7 @@ func NewServer(config ssh.ServerConfig) *Server {
}
func (s *Server) Start() {
fmt.Println("SSH server is starting on port 2200...")
log.Println("SSH server is starting on port 2200...")
for {
conn, err := (*s.Conn).Accept()
if err != nil {