73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
package httpServer
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"log"
|
|
"net"
|
|
"strings"
|
|
"tunnel_pls/session"
|
|
)
|
|
|
|
//func ExtractDomain(conn net.Conn) (string, error) {
|
|
// defer conn.SetReadDeadline(time.Time{}) // Reset timeout after reading
|
|
// conn.SetReadDeadline(time.Now().Add(2 * time.Second)) // Prevent hanging
|
|
//
|
|
// reader := bufio.NewReader(conn)
|
|
// for {
|
|
// line, err := reader.ReadString('\n')
|
|
// if err != nil {
|
|
// return "", err
|
|
// }
|
|
//
|
|
// line = strings.TrimSpace(line)
|
|
// if strings.HasPrefix(strings.ToLower(line), "host:") {
|
|
// return strings.TrimSpace(strings.SplitN(line, ":", 2)[1]), nil
|
|
// }
|
|
//
|
|
// if line == "" {
|
|
// break
|
|
// }
|
|
// }
|
|
//
|
|
// return "", fmt.Errorf("host header not found")
|
|
//}
|
|
|
|
func handleConnection(conn net.Conn) {
|
|
defer conn.Close()
|
|
|
|
sshSession := session.Clients["test"]
|
|
sshSession.HandleForwardedConnection(conn, sshSession.Connection, 80)
|
|
}
|
|
|
|
func getHost(data []byte) string {
|
|
lines := bytes.Split(data, []byte("\n"))
|
|
for _, line := range lines {
|
|
fmt.Println("here")
|
|
if bytes.HasPrefix(line, []byte("Host: ")) {
|
|
return strings.TrimSpace(string(line[6:]))
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func Listen() {
|
|
listen, err := net.Listen("tcp", ":80")
|
|
if err != nil {
|
|
log.Fatal("Error starting server:", err)
|
|
}
|
|
defer listen.Close()
|
|
|
|
fmt.Println("Server listening on port 80")
|
|
|
|
for {
|
|
conn, err := listen.Accept()
|
|
if err != nil {
|
|
log.Println("Error accepting connection:", err)
|
|
continue
|
|
}
|
|
|
|
go handleConnection(conn)
|
|
}
|
|
}
|