Exemple #1
0
// Handle02 handles incoming requests of packet 0x02: Handshake
func Handle02(server *Server, sender *player.Player) {
	pkt := new(packet.Handshake)
	pkt.ReadFrom(sender.Conn)

	log.Printf("Handshake from: %q [%s]", pkt.Username, sender.RemoteAddr())

	if pkt.Version != constants.ProtoNum {
		log.Printf("Wrong Protocol version. Player: %d, Server: %d\n",
			pkt.Version, constants.ProtoNum)
		return
	}

	// Save player to list
	sender.Name = pkt.Username
	server.AddPlayer(sender)

	log.Println("online_mode =", server.config.Get("server.online_mode"))

	if server.config.Get("server.online_mode") == "true" {
		// Succesful handshake, prepare Encryption Request
		r := packet.EncryptionKeyRequest{
			ServerId:  server.Id(),
			PublicKey: server.PublicKey(),
			Token:     auth.EncryptionBytes(),
		}
		r.WriteTo(sender.Conn)
		sender.Token = r.Token
	} else {
		// BUG(toqueteos): server: Add online_mode=false support.
	}
}