diff --git a/cmd/cgat/main.go b/cmd/cgat/main.go index 0e9abc819e381d6f14f85a377cc59ca69c40da82..884aab988d2c1efada4a179bb05c679e6d275156 100644 --- a/cmd/cgat/main.go +++ b/cmd/cgat/main.go @@ -1,14 +1,19 @@ package main -import "pggat2/lib/frontend/frontends/v0" +import ( + "net" + + "pggat2/lib/backend/backends/v0" +) func main() { - fe, err := frontends.NewFrontend() + conn, err := net.Dial("tcp", "localhost:5432") if err != nil { panic(err) } - err = fe.Run() + srv, err := backends.NewServer(conn) if err != nil { panic(err) } + _ = srv } diff --git a/lib/backend/server.go b/lib/backend/backend.go similarity index 60% rename from lib/backend/server.go rename to lib/backend/backend.go index fa3fc900f7903a15fbf514d8246e14a9efab36f1..7d3570acd2b9589b63812f227fb14377bfe60a1c 100644 --- a/lib/backend/server.go +++ b/lib/backend/backend.go @@ -2,3 +2,6 @@ package backend type Server interface { } + +type Backend interface { +} diff --git a/lib/backend/backends/v0/backend.go b/lib/backend/backends/v0/backend.go new file mode 100644 index 0000000000000000000000000000000000000000..26005af79f36db0c904bf0144065ae1d7fc6341b --- /dev/null +++ b/lib/backend/backends/v0/backend.go @@ -0,0 +1,8 @@ +package backends + +import "pggat2/lib/backend" + +type Backend struct { +} + +var _ backend.Backend = (*Backend)(nil) diff --git a/lib/backend/backends/v0/server.go b/lib/backend/backends/v0/server.go new file mode 100644 index 0000000000000000000000000000000000000000..a9a57af2beffb73b1cd099990ed3f975d9f89f1c --- /dev/null +++ b/lib/backend/backends/v0/server.go @@ -0,0 +1,55 @@ +package backends + +import ( + "log" + "net" + + "pggat2/lib/backend" + "pggat2/lib/pnet" + "pggat2/lib/pnet/packet" +) + +type Server struct { + conn net.Conn + + pnet.Reader + pnet.Writer +} + +func NewServer(conn net.Conn) (*Server, error) { + server := &Server{ + conn: conn, + Reader: pnet.MakeReader(conn), + Writer: pnet.MakeWriter(conn), + } + err := server.accept() + if err != nil { + return nil, err + } + return server, nil +} + +func (T *Server) accept() error { + var builder packet.Builder + builder.Int16(3) + builder.Int16(0) + builder.String("user") + builder.String("postgres") + builder.String("") + + err := T.WriteUntyped(builder.Raw()) + if err != nil { + return err + } + + auth, err := T.Read() + if err != nil { + return err + } + + log.Printf("%#v", auth) + + return nil +} + +var _ backend.Server = (*Server)(nil)