diff options
| author | Kyren223 <ulmliad223@gmail.com> | 2024-10-10 01:14:37 +0300 |
|---|---|---|
| committer | Kyren223 <ulmliad223@gmail.com> | 2024-10-10 01:14:37 +0300 |
| commit | 755df330a4785456387ecafea2e305c1a9f4ba0a (patch) | |
| tree | 626f63c6e85087bef4cf2905233428f0d990492b /internal/client | |
| parent | 6a157c52540035fa7285ed77bb191c47310671f3 (diff) | |
refactor: move to tls tcp connection for security purposes
Diffstat (limited to 'internal/client')
| -rw-r--r-- | internal/client/client.go | 26 | ||||
| -rw-r--r-- | internal/client/server.crt | 21 |
2 files changed, 41 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()) diff --git a/internal/client/server.crt b/internal/client/server.crt new file mode 100644 index 0000000..caf2384 --- /dev/null +++ b/internal/client/server.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIUZyvzq7LOxKqTttTRjChoJWOO4pYwDQYJKoZIhvcNAQEL +BQAwOjEhMB8GCSqGSIb3DQEJARYSa3lyZW4yMjNAcHJvdG9uLm1lMRUwEwYDVQQD +DAxreXJlbjIyMy5kZXYwHhcNMjQxMDA5MjE1NzQzWhcNMjUxMDA5MjE1NzQzWjA6 +MSEwHwYJKoZIhvcNAQkBFhJreXJlbjIyM0Bwcm90b24ubWUxFTATBgNVBAMMDGt5 +cmVuMjIzLmRldjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK7hd+zT +kqrn/8EhLEO0uMKKHgfoyczYWTlA9uPFADOsjdzXRLuR/Y3rK0PBE4u55xcjYZSf +mzJmVHuv1rEFOt634YOoE2UwJd9V2M0p+cD716XIEDNPfVCUe77FoZoYaH1h8QF5 +Mrx2eDH5JZt690F05O39zYzbb7+RlChWlt1kBcmLEZ1GKJeXznbL6lLMh20deYX9 +7oemqYMqP9DFbFeHkubeZ20yQvKW9cOWae9M+IhE9dAa8fm5WdfiDoTdAHfbIawx +r1OB4YqfXlXler9wAHfHWeCS0KgZCTdghF1h6wtYlwyQZcUuv+dHN7SP7zVo8pOD +b7NUqjFAMGlNgf0CAwEAAaNrMGkwCQYDVR0TBAIwADALBgNVHQ8EBAMCBaAwMAYD +VR0RBCkwJ4IJbG9jYWxob3N0ggsqLmxvY2FsaG9zdIINZWtvLmxvY2FsaG9zdDAd +BgNVHQ4EFgQUf32SXO976zgO0K/wlgWdyT3EPzcwDQYJKoZIhvcNAQELBQADggEB +AHVMGCkaZv5eIOQwevfrsEJQo3dNG34om8wBVGS5iQyho0VJZpKZSiQ16yv4x2kc +UICfVEFcfO/7/hRlA5yLWE/wpeqCgTSgtQ74gvc8D6H26wCznSPj9MIRWxYhSmPM +YO+7UKqyvFoaKiW4OkqJvCRzrpwr/lbXcGpD47UqT5gRvjJ91ULCHIUt8qDUS6+8 +mEGJAe/xFkiJ6zT0bThlqMaCA4v5g9tHGXzooIZ+YSgTvlWhAM6mVwt34l2rDSOw +4YNGUJXKCoGpy8U0NteIOOs6HhaslJpKe1mSSxmMQcgBcaf6yBT08mYfQPSsaeOk +OSoncuVBnT64liAtShpsgTc= +-----END CERTIFICATE----- |
