summaryrefslogtreecommitdiff
path: root/internal/client/client.go
diff options
context:
space:
mode:
authorKyren223 <ulmliad223@gmail.com>2024-10-10 01:14:37 +0300
committerKyren223 <ulmliad223@gmail.com>2024-10-10 01:14:37 +0300
commit755df330a4785456387ecafea2e305c1a9f4ba0a (patch)
tree626f63c6e85087bef4cf2905233428f0d990492b /internal/client/client.go
parent6a157c52540035fa7285ed77bb191c47310671f3 (diff)
refactor: move to tls tcp connection for security purposes
Diffstat (limited to 'internal/client/client.go')
-rw-r--r--internal/client/client.go26
1 files changed, 20 insertions, 6 deletions
diff --git a/internal/client/client.go b/internal/client/client.go
index b60b320..c2ef6e1 100644
--- a/internal/client/client.go
+++ b/internal/client/client.go
@@ -2,8 +2,10 @@ package client
import (
"bufio"
+ "crypto/tls"
+ "crypto/x509"
+ _ "embed"
"fmt"
- "net"
"os"
"strings"
"time"
@@ -11,8 +13,20 @@ import (
"github.com/kyren223/eko/internal/utils/log"
)
+//go:embed server.crt
+var certPEM []byte
+
func Run() {
- log.SetLevel(log.LevelDebug)
+ certPool := x509.NewCertPool()
+ if !certPool.AppendCertsFromPEM(certPEM) {
+ log.Fatal("failed to append server certificate")
+ }
+
+ tlsConfig := &tls.Config{
+ RootCAs: certPool,
+ ServerName: "localhost",
+ }
+
log.Info("Client started, waiting for user input...")
for {
fmt.Print("> ")
@@ -21,20 +35,20 @@ func Run() {
if input == ":q" || input == "exit" || input == "quit" {
break
}
- log.Debug("Input: %v", input)
- err := processRequest(input)
+ err := processRequest(input, tlsConfig)
if err != nil {
log.Error("%v", err)
}
}
}
-func processRequest(request string) error {
- conn, err := net.Dial("tcp", ":7223")
+func processRequest(request string, tlsConfig *tls.Config) error {
+ conn, err := tls.Dial("tcp", ":7223", tlsConfig)
if err != nil {
return fmt.Errorf("Unable to establish connection with server: %v", err)
}
defer conn.Close()
+
conn.SetDeadline(time.Now().Add(time.Second))
log.Info("Established connection to server: %v", conn.RemoteAddr().String())