~starkingdoms/starkingdoms

49ce5c955d6a5ab742a7065584b4012240e51c6a — core 2 years ago 5c97ea3
SLP
M Cargo.lock => Cargo.lock +91 -37
@@ 64,31 64,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"

[[package]]
name = "cfg-if"
version = "1.0.0"
name = "camino"
version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
checksum = "c530edf18f37068ac2d977409ed5cd50d53d73bc653c7647b48eb78976ac9ae2"
dependencies = [
 "serde",
]

[[package]]
name = "client"
version = "0.1.0"
name = "cargo-platform"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27"
dependencies = [
 "console_log",
 "futures",
 "js-sys",
 "lazy_static",
 "log",
 "protocol",
 "rmp-serde",
 "serde",
 "url",
 "wasm-bindgen",
 "wasm-bindgen-futures",
 "web-sys",
 "ws_stream_wasm",
]

[[package]]
name = "cargo_metadata"
version = "0.15.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a"
dependencies = [
 "camino",
 "cargo-platform",
 "semver",
 "serde",
 "serde_json",
 "thiserror",
]

[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"

[[package]]
name = "colored"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"


@@ 523,14 536,6 @@ dependencies = [
]

[[package]]
name = "protocol"
version = "0.1.0"
dependencies = [
 "rmp-serde",
 "serde",
]

[[package]]
name = "quote"
version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"


@@ 601,10 606,19 @@ dependencies = [
]

[[package]]
name = "ryu"
version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"

[[package]]
name = "semver"
version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
dependencies = [
 "serde",
]

[[package]]
name = "send_wrapper"


@@ 633,20 647,14 @@ dependencies = [
]

[[package]]
name = "server"
version = "0.1.0"
name = "serde_json"
version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744"
dependencies = [
 "futures",
 "hyper",
 "lazy_static",
 "log",
 "protocol",
 "rmp-serde",
 "itoa",
 "ryu",
 "serde",
 "simple_logger",
 "tokio",
 "tokio-tungstenite",
 "tungstenite",
]

[[package]]


@@ 693,6 701,52 @@ dependencies = [
]

[[package]]
name = "starkingdoms-client"
version = "0.1.0"
dependencies = [
 "console_log",
 "futures",
 "js-sys",
 "lazy_static",
 "log",
 "rmp-serde",
 "serde",
 "starkingdoms-protocol",
 "url",
 "wasm-bindgen",
 "wasm-bindgen-futures",
 "web-sys",
 "ws_stream_wasm",
]

[[package]]
name = "starkingdoms-protocol"
version = "0.1.0"
dependencies = [
 "rmp-serde",
 "serde",
]

[[package]]
name = "starkingdoms-server"
version = "0.0.1"
dependencies = [
 "cargo_metadata",
 "futures",
 "hyper",
 "lazy_static",
 "log",
 "rmp-serde",
 "serde",
 "serde_json",
 "simple_logger",
 "starkingdoms-protocol",
 "tokio",
 "tokio-tungstenite",
 "tungstenite",
]

[[package]]
name = "syn"
version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"

M client/Cargo.toml => client/Cargo.toml +2 -2
@@ 1,5 1,5 @@
[package]
name = "client"
name = "starkingdoms-client"
version = "0.1.0"
edition = "2021"



@@ 17,7 17,7 @@ log = "0.4"
futures = { version = "0.3", default-features = false }
wasm-bindgen-futures = "0.4"
url = "2.3"
protocol = { version = "0.1.0", path = "../protocol" }
starkingdoms-protocol = { version = "0.1.0", path = "../protocol" }
rmp-serde = "1.1"
ws_stream_wasm = "0.7"
serde = { version = "1", features = ["derive"] }

M client/src/chat.rs => client/src/chat.rs +1 -1
@@ 1,5 1,5 @@
use wasm_bindgen::prelude::*;
use protocol::MessageC2S;
use starkingdoms_protocol::MessageC2S;
use crate::CLIENT;
use futures::SinkExt;


M client/src/lib.rs => client/src/lib.rs +4 -4
@@ 4,10 4,10 @@ use futures::StreamExt;
use log::{debug, error, info, Level, trace, warn};
use wasm_bindgen::prelude::*;
use ws_stream_wasm::{WsMessage, WsMeta, WsStream};
use protocol::State;
use protocol::PROTOCOL_VERSION;
use protocol::MessageS2C;
use protocol::MessageC2S;
use starkingdoms_protocol::State;
use starkingdoms_protocol::PROTOCOL_VERSION;
use starkingdoms_protocol::MessageS2C;
use starkingdoms_protocol::MessageC2S;
use futures::SinkExt;
use lazy_static::lazy_static;
use std::sync::Arc;

M protocol/Cargo.toml => protocol/Cargo.toml +1 -1
@@ 1,5 1,5 @@
[package]
name = "protocol"
name = "starkingdoms-protocol"
version = "0.1.0"
edition = "2021"


M server/Cargo.toml => server/Cargo.toml +12 -4
@@ 1,19 1,27 @@
[package]
name = "server"
version = "0.1.0"
name = "starkingdoms-server"
version = "0.0.1"
edition = "2021"

[metadata]
version-name = "Super Duper Ultra Alpha"
slp-description = "A StarKingdoms.TK server"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
tokio = { version = "1.27", features = ["macros", "sync", "rt-multi-thread"] }
serde = { version = "1", features = ["derive"] }
rmp-serde = { version = "1" }
serde_json = "1"
futures = { version = "0.3", default-features = false }
hyper = { version = "0.14", features = ["server", "http1", "http2", "tcp"] }
tungstenite = { version = "0.18", default-features = false }
tokio-tungstenite = { version = "0.18" }
log = "0.4"
simple_logger = "4.1"
protocol = { version = "0.1.0", path = "../protocol" }
lazy_static = "1.4.0"
\ No newline at end of file
starkingdoms-protocol = { version = "0.1.0", path = "../protocol" }
lazy_static = "1.4.0"

[build-dependencies]
cargo_metadata = "0.15"
\ No newline at end of file

A server/build.rs => server/build.rs +22 -0
@@ 0,0 1,22 @@
use cargo_metadata::MetadataCommand;

fn main() {
    let path = std::env::var("CARGO_MANIFEST_DIR").unwrap();

    let meta = MetadataCommand::new()
        .manifest_path("./Cargo.toml")
        .current_dir(&path)
        .exec()
        .unwrap();

    let root = meta.root_package().unwrap();

    let version = root.version.to_string();
    let version_name = root.metadata["version-name"].to_string();
    let description = root.metadata["slp-description"].to_string();

    println!("cargo:rustc-env=STK_VERSION={}", version);
    println!("cargo:rustc-env=STK_VERSION_NAME={}", version_name);
    println!("cargo:rustc-env=STK_SLP_DESCRIPTION={}", description);
    println!("cargo:rerun-if-changed:Cargo.toml");
}
\ No newline at end of file

M server/src/client_handler.rs => server/src/client_handler.rs +1 -1
@@ 7,7 7,7 @@ use log::{error, info};
use tokio::sync::mpsc::Receiver;
use tokio_tungstenite::WebSocketStream;
use tungstenite::Message;
use protocol::{GoodbyeReason, MessageC2S, MessageS2C, PROTOCOL_VERSION, ps2c, State};
use starkingdoms_protocol::{GoodbyeReason, MessageC2S, MessageS2C, PROTOCOL_VERSION, ps2c, State};
use crate::handler::{ClientHandlerMessage, ClientManager};
use crate::{send, recv};


M server/src/handler.rs => server/src/handler.rs +1 -1
@@ 6,7 6,7 @@ use serde::Serialize;
use tokio::sync::mpsc::Sender;
use tokio::sync::RwLock;
use tungstenite::Message;
use protocol::State;
use starkingdoms_protocol::State;

#[derive(Clone)]
pub struct ClientManager {

M server/src/main.rs => server/src/main.rs +30 -1
@@ 8,8 8,10 @@ use tungstenite::{Error, handshake};
use futures::stream::StreamExt;
use lazy_static::lazy_static;
use log::{error, info, Level};
use serde::{Deserialize, Serialize};
use tokio::sync::RwLock;
use protocol::State;
use protocol::{PROTOCOL_VERSION, State};
use starkingdoms_protocol::PROTOCOL_VERSION;
use crate::handler::{ClientHandler, ClientManager};
use crate::client_handler::handle_client;
use crate::timer::timer_main;


@@ 96,6 98,19 @@ async fn handle_request(mut request: Request<Body>, remote_addr: SocketAddr, mgr
        ("/ws", false) => {
            Ok(Response::builder().status(400).body(Body::from("Connection-Upgrade header missing")).unwrap())
        },
        ("/ping", false) => {
            Ok(Response::builder().status(200).body(Body::from(
                serde_json::to_string(&ServerPingResponse {
                    version: ServerPingResponseVersion {
                        name: env!("STK_VERSION_NAME").to_string(), // Set by build.rs
                        number: env!("STK_VERSION").to_string(), // Set by build.rs
                        protocol: PROTOCOL_VERSION,
                    },
                    players: cmgr.usernames.read().await.len() as u32,
                    description: env!("STK_SLP_DESCRIPTION").to_string(),
                }).unwrap()
            )).unwrap())
        },
        (url@_, false) => {
            // typical HTTP file request
            // TODO


@@ 146,3 161,17 @@ async fn main() {
        error!("error in server thread: {}", e);
    }
}

#[derive(Serialize, Deserialize)]
pub struct ServerPingResponse {
    pub version: ServerPingResponseVersion,
    pub players: u32,
    pub description: String
}

#[derive(Serialize, Deserialize)]
pub struct ServerPingResponseVersion {
    pub name: String,
    pub number: String,
    pub protocol: u32
}
\ No newline at end of file