diff options
| author | rebecca <ubq323@ubq323.website> | 2026-02-10 21:59:42 +0000 |
|---|---|---|
| committer | rebecca <ubq323@ubq323.website> | 2026-02-10 22:02:06 +0000 |
| commit | 9766e0f10f3f19ce8343a3573b6de7ebeb7cfe95 (patch) | |
| tree | 0a06d713247f762f139ef4c7f5100c1a9d01876b /client | |
| parent | d3835e6bbb5633b4fc2b2439978defa1d91dece6 (diff) | |
use tls for connections
introduced are the --key and --cert options for the server
and the --no-verify-cert option on the client
Diffstat (limited to 'client')
| -rw-r--r-- | client/application.go | 4 | ||||
| -rw-r--r-- | client/client/client.go | 10 | ||||
| -rw-r--r-- | client/main.go | 3 |
3 files changed, 12 insertions, 5 deletions
diff --git a/client/application.go b/client/application.go index ad5f2c6..0debedd 100644 --- a/client/application.go +++ b/client/application.go @@ -27,9 +27,9 @@ type application struct { activePaste <-chan string } -func newApplication(serverAddress string) *application { +func newApplication(serverAddress string, insecure bool) *application { var app application - app.Client = client.New(serverAddress) + app.Client = client.New(serverAddress, insecure) app.cache = object.NewCache(&app) app.windowCache = window.NewCache() app.goTo(app.cmdWindow.Location()) diff --git a/client/client/client.go b/client/client/client.go index 0f0fb03..f22abc6 100644 --- a/client/client/client.go +++ b/client/client/client.go @@ -3,6 +3,7 @@ package client import ( "citrons.xyz/talk/proto" "net" + "crypto/tls" "time" "bufio" "math/rand" @@ -26,6 +27,7 @@ type Message struct { type Client struct { Address string + insecure bool stop chan struct{} message chan Message send chan proto.Line @@ -35,9 +37,10 @@ type Client struct { reconnectWait time.Duration } -func New(address string) Client { +func New(address string, insecure bool) Client { return Client { Address: address, + insecure: insecure, stop: make(chan struct{}), message: make(chan Message, 1), activeRequests: make(map[string]func(proto.Command)), @@ -48,7 +51,10 @@ func New(address string) Client { func (c *Client) RunClient() { c.reconnectWait = time.Second / 4 for { - conn, err := net.DialTimeout("tcp", c.Address, 30 * time.Second) + dialer := &net.Dialer { Timeout: 30 * time.Second } + config := &tls.Config { InsecureSkipVerify: c.insecure } + conn, err := tls.DialWithDialer(dialer, "tcp", c.Address, config) + if err != nil { c.message <- Message {func(mh MessageHandler) { mh.OnDisconnect(err) diff --git a/client/main.go b/client/main.go index e4a9f6b..dc3070c 100644 --- a/client/main.go +++ b/client/main.go @@ -12,6 +12,7 @@ import ( var globalApp *application func main() { + insecure := flag.Bool("no-verify-cert", false, "don't verify tls certificate (INSECURE, for testing only!)") flag.Parse() address := flag.Arg(0) if address == "" { @@ -30,7 +31,7 @@ func main() { fmt.Println("bye!") }() - globalApp = newApplication(address) + globalApp = newApplication(address, *insecure) go globalApp.RunClient() defer globalApp.Stop() |
