summaryrefslogtreecommitdiff
path: root/server/src/main.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-24 00:45:28 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-24 00:45:28 +0200
commitb344a0d4d87eabafa61acc8946643af395d81b8c (patch)
tree9ef5d0553843fd8bf697dc6d7b7d56e5372c6abf /server/src/main.rs
parent1f5954da4c7e8af341c456093c5542e9ae201e3d (diff)
downloadhurrycurry-b344a0d4d87eabafa61acc8946643af395d81b8c.tar
hurrycurry-b344a0d4d87eabafa61acc8946643af395d81b8c.tar.bz2
hurrycurry-b344a0d4d87eabafa61acc8946643af395d81b8c.tar.zst
optional upnp, mdns and register support
Diffstat (limited to 'server/src/main.rs')
-rw-r--r--server/src/main.rs18
1 files changed, 14 insertions, 4 deletions
diff --git a/server/src/main.rs b/server/src/main.rs
index 087bd9d7..b72a961b 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -21,7 +21,6 @@ use futures_util::{SinkExt, StreamExt};
use hurrycurry_protocol::{PacketC, PacketS, BINCODE_CONFIG, VERSION};
use hurrycurry_server::{
data::DATA_DIR,
- network::{mdns::mdns_loop, register::Register, upnp::upnp_loop},
server::{GameServerExt, Server},
trm, ConnectionID,
};
@@ -60,21 +59,27 @@ pub(crate) struct Args {
#[arg(long)]
register: bool,
/// Enables the mDNS responder for local network discovery
+ #[cfg(feature = "mdns")]
#[arg(long)]
mdns: bool,
// Enables automatic gateway port forwarding using UPnP
+ #[cfg(feature = "upnp")]
#[arg(long)]
upnp: bool,
/// Server name
+ #[cfg(any(feature = "register", feature = "mdns"))]
#[arg(long, short = 'N', default_value = "A Hurry Curry! Server")]
server_name: String,
/// Uri for connecting remotely for registry submission
+ #[cfg(feature = "register")]
#[arg(long)]
register_uri: Option<String>,
/// Do not register using IPv4
+ #[cfg(feature = "register")]
#[arg(long)]
register_disable_ip4: bool,
/// Do not register using IPv6
+ #[cfg(feature = "register")]
#[arg(long)]
register_disable_ip6: bool,
}
@@ -130,8 +135,9 @@ async fn run(args: Args) -> anyhow::Result<()> {
state.load(state.index.generate("lobby").await?, None);
let state = Arc::new(RwLock::new(state));
+ #[cfg(feature = "register")]
if args.register {
- let r = Register::new(
+ let r = hurrycurry_server::network::register::Register::new(
args.server_name.clone(),
args.listen.port(),
args.register_uri,
@@ -141,11 +147,15 @@ async fn run(args: Args) -> anyhow::Result<()> {
);
tokio::task::spawn(r.register_loop());
}
+ #[cfg(feature = "upnp")]
if args.upnp {
- tokio::task::spawn(upnp_loop(args.listen.port()));
+ tokio::task::spawn(hurrycurry_server::network::upnp::upnp_loop(
+ args.listen.port(),
+ ));
}
+ #[cfg(feature = "mdns")]
if args.mdns {
- tokio::task::spawn(mdns_loop(
+ tokio::task::spawn(hurrycurry_server::network::mdns::mdns_loop(
args.server_name.clone(),
args.listen.port(),
state.clone(),