45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package utils
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"log"
|
|
"net"
|
|
"strings"
|
|
|
|
"saprusserver/structs"
|
|
)
|
|
|
|
func (c *SocketCall) GatherSaprusHeader(buf []byte) structs.SaprusHeaderFrame {
|
|
data := structs.SaprusHeaderFrame {
|
|
PacketType: [2]byte{buf[0], buf[1]},
|
|
Length: [2]byte{buf[2], buf[3]},
|
|
}
|
|
return data
|
|
}
|
|
|
|
func ProcessRequests(buf []byte, addr net.Addr) {
|
|
c := SocketCall{}
|
|
|
|
msg := "hello world"
|
|
b64Msg := base64.StdEncoding.EncodeToString([]byte(msg))
|
|
|
|
saprusHeader := c.GatherSaprusHeader(buf)
|
|
|
|
remoteAddr := strings.Split(addr.String(), ":")
|
|
|
|
switch {
|
|
case strings.Contains(string(buf), "here"):
|
|
log.Printf("Sending Data to %s\n", remoteAddr)
|
|
c.SendData(b64Msg)
|
|
case saprusHeader.PacketType == [2]byte{0x88, 0x88}:
|
|
log.Printf("New find:: %s\n", remoteAddr)
|
|
c.SendData(base64.StdEncoding.EncodeToString([]byte("hello\n")))
|
|
case saprusHeader.PacketType == [2]byte{0x00, 0x3C}:
|
|
log.Printf("Broadcast message::%s\n", remoteAddr)
|
|
default:
|
|
log.Printf("Packet type not found::%x\n", string(saprusHeader.PacketType[:]))
|
|
}
|
|
|
|
return
|
|
}
|