Initiliazation
This commit is contained in:
18
vv1/server/conn/agent.go
Normal file
18
vv1/server/conn/agent.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package conn
|
||||
|
||||
import (
|
||||
"angel_server/consts"
|
||||
"angel_server/cryptmeow"
|
||||
"log/slog"
|
||||
"net"
|
||||
)
|
||||
|
||||
func agent_impl(conn net.Conn, layer_id int) {
|
||||
var publicKey, _ [32]byte = cryptmeow.Gen_keypair()
|
||||
|
||||
_, err := conn.Write(publicKey[:])
|
||||
if err != nil {
|
||||
consts.Logger.Error("failed to send public key", slog.String("error", err.Error()))
|
||||
return
|
||||
}
|
||||
}
|
||||
43
vv1/server/conn/conn.go
Normal file
43
vv1/server/conn/conn.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package conn
|
||||
|
||||
import (
|
||||
"angel_server/consts"
|
||||
"angel_server/extra"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"net"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
func Start_serv() {
|
||||
consts.Logger.Info("Starting tcp listener...")
|
||||
|
||||
ln, err := net.Listen("tcp", fmt.Sprintf(":%d", extra.Port))
|
||||
if err != nil {
|
||||
consts.Logger.Error("Error occurred during server start:", slog.Any("error", err))
|
||||
return
|
||||
}
|
||||
defer ln.Close()
|
||||
|
||||
stop := make(chan os.Signal, 1)
|
||||
signal.Notify(stop, os.Interrupt, syscall.SIGTERM)
|
||||
|
||||
go func() {
|
||||
<-stop
|
||||
consts.Logger.Info("Shutting down server...")
|
||||
ln.Close()
|
||||
os.Exit(0)
|
||||
}()
|
||||
|
||||
for {
|
||||
conn, err := ln.Accept()
|
||||
if err != nil {
|
||||
consts.Logger.Error("Error accepting connection:", slog.Any("error", err))
|
||||
continue
|
||||
}
|
||||
|
||||
go handleConnection(conn)
|
||||
}
|
||||
}
|
||||
7
vv1/server/conn/controller.go
Normal file
7
vv1/server/conn/controller.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package conn
|
||||
|
||||
import "net"
|
||||
|
||||
func controller_impl(conn net.Conn) {
|
||||
|
||||
}
|
||||
36
vv1/server/conn/handler.go
Normal file
36
vv1/server/conn/handler.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package conn
|
||||
|
||||
import (
|
||||
"angel_server/consts"
|
||||
"angel_server/db"
|
||||
"bytes"
|
||||
"log/slog"
|
||||
"net"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func handleConnection(conn net.Conn) {
|
||||
defer conn.Close()
|
||||
consts.Logger.Info("Received conn", slog.String("remote", conn.RemoteAddr().String()))
|
||||
|
||||
role := make([]byte, 8)
|
||||
n, err := conn.Read(role)
|
||||
if err != nil {
|
||||
consts.Logger.Error("Failed to read role", slog.String("error", err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
layer_id := string(bytes.TrimSpace(role[:n]))
|
||||
consts.Logger.Debug(layer_id)
|
||||
|
||||
int_meow, _ := strconv.Atoi(layer_id)
|
||||
if (int_meow == 0) {
|
||||
controller_impl(conn)
|
||||
} else if (db.CheckLayer(consts.Db, int_meow)) {
|
||||
agent_impl(conn, int_meow)
|
||||
} else {
|
||||
conn.Close()
|
||||
}
|
||||
|
||||
consts.Logger.Info("Lost conn", slog.String("remote", conn.RemoteAddr().String()))
|
||||
}
|
||||
Reference in New Issue
Block a user