summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/api/api.go18
-rw-r--r--internal/server/server.go10
2 files changed, 23 insertions, 5 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go
index 35ca44c..5f11070 100644
--- a/internal/server/api/api.go
+++ b/internal/server/api/api.go
@@ -842,6 +842,24 @@ func SetUserData(ctx context.Context, sess *session.Session, request *packet.Set
var userPtr *data.User = nil
if request.User != nil {
+ if request.User.IsDeleted {
+ // Delete user
+
+ pubKey, _, err := ed25519.GenerateKey(nil)
+ assert.NoError(err, "random should never fail")
+ err = queries.DeleteUser(ctx, data.DeleteUserParams{
+ PublicKey: pubKey,
+ ID: sess.ID(),
+ })
+ if err != nil {
+ slog.ErrorContext(ctx, "database error", "error", err)
+ return &ErrInternalError
+ }
+
+ sess.Close() // Close connection and respond with nothing
+ return nil
+ }
+
name := request.User.Name
if len(name) > packet.MaxUsernameBytes {
return &packet.Error{Error: fmt.Sprintf(
diff --git a/internal/server/server.go b/internal/server/server.go
index 48d7d38..15c3a7a 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -60,7 +60,7 @@ const (
RateLimitCountThresholdMalicious = 10
)
-func getTlsConfig() *tls.Config {
+func getTLSConfig() *tls.Config {
path, ok := os.LookupEnv(CertFile)
if !ok {
// DEV MODE ONLY, DUMMY CERT
@@ -219,7 +219,7 @@ func (s *server) Node() *snowflake.Node {
func (s *server) Run() {
slog.Info("starting eko-server...")
- listener, err := tls.Listen("tcp4", ":"+strconv.Itoa(int(s.Port)), getTlsConfig())
+ listener, err := tls.Listen("tcp4", ":"+strconv.Itoa(int(s.Port)), getTLSConfig())
if err != nil {
slog.Error("error starting server", "error", err)
assert.Abort("see logs")
@@ -286,7 +286,7 @@ func (server *server) handleConnection(conn net.Conn) {
defer conn.Close()
var writerWg sync.WaitGroup
- done := make(chan struct{})
+ writeDone := make(chan struct{})
framer := packet.NewFramer()
sess := session.NewSession(server, addr, cancel, &writerWg)
@@ -306,7 +306,7 @@ func (server *server) handleConnection(conn net.Conn) {
// Writer
go func() {
- defer close(done)
+ defer close(writeDone)
defer conn.Close() // To unblock reader
writeQueue := sess.Read()
@@ -406,7 +406,7 @@ func (server *server) handleConnection(conn net.Conn) {
close(framer.Out) // stop processing
slog.InfoContext(ctx, "reader done, closed framer")
- <-done
+ <-writeDone
}
func processPacket(ctx context.Context, sess *session.Session, pkt packet.Packet) bool {