diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-07-08 17:53:36 +0300 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-07-08 17:53:36 +0300 |
| commit | a34919da2f3c3102434635276250cc4d398c8492 (patch) | |
| tree | 827268e8f90be84cd8b38d6aa07682477f65cc91 /internal/client/gateway | |
| parent | 8362d835eed8f7f552a3aa433ea4f02dd1dbde88 (diff) | |
Refactored client side to comply with protocol changes, implemnted tos
screen model, still missing accept/decline and authentication
Diffstat (limited to 'internal/client/gateway')
| -rw-r--r-- | internal/client/gateway/gateway.go | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/internal/client/gateway/gateway.go b/internal/client/gateway/gateway.go index e5fd45e..f98a3fb 100644 --- a/internal/client/gateway/gateway.go +++ b/internal/client/gateway/gateway.go @@ -14,7 +14,7 @@ import ( tea "github.com/charmbracelet/bubbletea" - "github.com/kyren223/eko/certs" + "github.com/kyren223/eko/embeds" "github.com/kyren223/eko/internal/client/config" "github.com/kyren223/eko/internal/client/ui" "github.com/kyren223/eko/internal/packet" @@ -30,36 +30,36 @@ var ( ) type ( - ConnectionEstablished snowflake.ID - ConnectionFailed error - ConnectionLost error - ConnectionClosed struct{} + AuthenticationEstablished snowflake.ID + ConnectionEstablished struct{} + ConnectionFailed error + ConnectionLost error + ConnectionClosed struct{} ) -func Connect(privKey ed25519.PrivateKey, timeout time.Duration) tea.Cmd { +func Connect(timeout time.Duration) tea.Cmd { return func() tea.Msg { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - id, err := connect(ctx, privKey) + err := connect(ctx) if err != nil { return ConnectionFailed(err) } - return ConnectionEstablished(id) + return ConnectionEstablished{} } } -func connect(ctx context.Context, privKey ed25519.PrivateKey) (snowflake.ID, error) { +func connect(ctx context.Context) error { assert.Assert(conn == nil, "cannot connect, connection is active") closed = false - var id snowflake.ID connChan := make(chan net.Conn, 1) errChan := make(chan error, 1) go func() { framer = packet.NewFramer() certPool := x509.NewCertPool() - if !certPool.AppendCertsFromPEM(certs.CertPEM) { + if !certPool.AppendCertsFromPEM(embeds.ServerCertificate) { log.Fatalln("failed to append server certificate") } @@ -85,11 +85,6 @@ func connect(ctx context.Context, privKey ed25519.PrivateKey) (snowflake.ID, err } log.Println("established connection with the server") - if id, err = handleAuth(ctx, connection, privKey); err != nil { - errChan <- err - return - } - log.Println("successfully authenticated with the server") connChan <- connection }() @@ -97,15 +92,15 @@ func connect(ctx context.Context, privKey ed25519.PrivateKey) (snowflake.ID, err case connection := <-connChan: conn = connection case err := <-errChan: - return 0, err + return err case <-ctx.Done(): - return 0, ctx.Err() + return ctx.Err() } go readForever(conn) go handlePacketStream() - return id, nil + return nil } func handleAuth(ctx context.Context, conn net.Conn, privKey ed25519.PrivateKey) (snowflake.ID, error) { |
