mirror of
https://github.com/fumiama/terasu.git
synced 2026-06-05 01:00:23 +08:00
61 lines
1.2 KiB
Go
61 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"flag"
|
|
"fmt"
|
|
"io"
|
|
"net"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/fumiama/terasu"
|
|
)
|
|
|
|
func main() {
|
|
u := flag.String("url", "https://huggingface.co/", "the url to get")
|
|
ipport := flag.String("dest", "18.65.159.2:443", "host:port")
|
|
flag.Parse()
|
|
if !strings.HasPrefix(*u, "https://") {
|
|
fmt.Println("ERROR: invalid url")
|
|
return
|
|
}
|
|
host := (*u)[8:]
|
|
host, _, _ = strings.Cut(host, "/")
|
|
cli := http.Client{
|
|
Transport: &http.Transport{
|
|
DialTLS: func(network, addr string) (net.Conn, error) {
|
|
conn, err := net.Dial("tcp", *ipport)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
tlsConn := tls.Client(conn, &tls.Config{
|
|
ServerName: host,
|
|
})
|
|
err = terasu.Use(tlsConn).Handshake()
|
|
if err != nil {
|
|
_ = tlsConn.Close()
|
|
return nil, err
|
|
}
|
|
return tlsConn, nil
|
|
},
|
|
},
|
|
}
|
|
resp, err := cli.Get(*u)
|
|
if err != nil {
|
|
fmt.Println("ERROR:", err)
|
|
return
|
|
}
|
|
defer resp.Body.Close()
|
|
if resp.StatusCode != http.StatusOK {
|
|
fmt.Println("ERROR:", "status code:", resp.StatusCode)
|
|
return
|
|
}
|
|
data, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
fmt.Println("ERROR:", err)
|
|
return
|
|
}
|
|
fmt.Print(string(data))
|
|
}
|