1diff --git a/proxy.go b/proxy.go
2new file mode 100644
3index 0000000..b4adec5
4--- /dev/null
5+++ b/proxy.go
6@@ -0,0 +1,40 @@
7+package ptun
8+
9+import (
10+ "io"
11+ "net"
12+
13+ "github.com/charmbracelet/ssh"
14+ gossh "golang.org/x/crypto/ssh"
15+)
16+
17+type ProxyTunnelHandler struct {
18+ *WebTunnelHandler
19+}
20+
21+func (tun *ProxyTunnelHandler) Serve(listener net.Listener, ctx ssh.Context) error {
22+ rawConn, err := net.Dial("tcp", "pico.sh:22")
23+ if err != nil {
24+ return err
25+ }
26+
27+ sshConn, chans, reqs, err := gossh.NewClientConn(rawConn, "pico.sh", &gossh.ClientConfig{})
28+ if err != nil {
29+ return err
30+ }
31+
32+ sshClient := gossh.NewClient(sshConn, chans, reqs)
33+
34+ dbConn, err := sshClient.Dial("unix", "/var/run/port-forward/2c537858")
35+ if err != nil {
36+ return err
37+ }
38+
39+ listenConn, err := listener.Accept()
40+ if err != nil {
41+ return err
42+ }
43+
44+ _, err = io.Copy(dbConn, listenConn)
45+ return err
46+}