refactor: separate core components and improve session & server handling
This commit is contained in:
22
server/handler.go
Normal file
22
server/handler.go
Normal file
@ -0,0 +1,22 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"golang.org/x/crypto/ssh"
|
||||
"log"
|
||||
"net"
|
||||
"tunnel_pls/session"
|
||||
)
|
||||
|
||||
func (s *Server) handleConnection(conn net.Conn) {
|
||||
sshConn, chans, reqs, err := ssh.NewServerConn(conn, s.Config)
|
||||
if err != nil {
|
||||
log.Printf("failed to establish SSH connection: %v", err)
|
||||
conn.Close()
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println("SSH connection established:", sshConn.User())
|
||||
|
||||
session.New(sshConn, chans, reqs)
|
||||
}
|
||||
42
server/server.go
Normal file
42
server/server.go
Normal file
@ -0,0 +1,42 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"golang.org/x/crypto/ssh"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
httpServer "tunnel_pls/http"
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
Conn *net.Listener
|
||||
Config *ssh.ServerConfig
|
||||
HttpServer *http.Server
|
||||
}
|
||||
|
||||
func NewServer(config ssh.ServerConfig) *Server {
|
||||
listener, err := net.Listen("tcp", ":2200")
|
||||
if err != nil {
|
||||
log.Fatalf("failed to listen on port 2200: %v", err)
|
||||
return nil
|
||||
}
|
||||
go httpServer.Listen()
|
||||
return &Server{
|
||||
Conn: &listener,
|
||||
Config: &config,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) Start() {
|
||||
fmt.Println("SSH server is starting on port 2200...")
|
||||
for {
|
||||
conn, err := (*s.Conn).Accept()
|
||||
if err != nil {
|
||||
log.Printf("failed to accept connection: %v", err)
|
||||
continue
|
||||
}
|
||||
|
||||
go s.handleConnection(conn)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user