From c46031c7370a40b80cbc5686dd0727970bb5e051 Mon Sep 17 00:00:00 2001 From: Kyler <59854022+KylerOlsen@users.noreply.github.com> Date: Tue, 19 Dec 2023 15:25:17 -0700 Subject: [PATCH] Added Server Icon --- .gitignore | 1 + Cargo.toml | 1 + src/status.rs | 23 +++++++++++++++++++++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index bfe0019..94cffe1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /target Cargo.lock test_server/* +main_icon.png diff --git a/Cargo.toml b/Cargo.toml index d1ec4da..5be19bd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,3 +9,4 @@ edition = "2021" tokio = { version = "1", features = ["full"] } serde = { version = "1", features = ["derive"] } serde_json = "1" +base64 = "0.21.5" diff --git a/src/status.rs b/src/status.rs index a372e40..1f572b4 100644 --- a/src/status.rs +++ b/src/status.rs @@ -1,8 +1,12 @@ // Yeahbut December 2023 +use std::fs::File; +use std::io::Read; + use tokio::net::tcp::{OwnedReadHalf, OwnedWriteHalf}; -use tokio::io::{AsyncReadExt, AsyncWriteExt}; +use tokio::io::AsyncWriteExt; use serde::{Serialize, Deserialize}; +use base64::{Engine as _, engine::general_purpose}; use crate::mc_types; use crate::handshake; @@ -52,7 +56,22 @@ fn motd() -> String { } fn favicon() -> Option { - None + let file_path = "./main_icon.png"; + + let mut file = match File::open(file_path) { + Ok(file) => file, + Err(_) => return None, + }; + + let mut buffer = Vec::new(); + if let Err(_) = file.read_to_end(&mut buffer) { + return None + } + + let base64_string = general_purpose::STANDARD_NO_PAD.encode(buffer); + let full_string = "data:image/png;base64,".to_string() + &base64_string; + + Some(full_string) } pub async fn respond_status(