From b216a81e263793c75ec1d3d9164bdd1529612cb8 Mon Sep 17 00:00:00 2001 From: Daniel Sockwell Date: Tue, 7 Jan 2020 17:27:46 -0500 Subject: [PATCH 1/2] Add api/v1/streaming/health API endpoint (#74) --- src/main.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index dff1237..6a7a074 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,7 @@ use flodgatt::{ }; use log::warn; use std::{collections::HashMap, env, net}; -use warp::{ws::Ws2, Filter as WarpFilter}; +use warp::{path, ws::Ws2, Filter}; fn main() { dotenv::from_filename( @@ -87,9 +87,11 @@ fn main() { let server_addr = net::SocketAddr::new(*cfg.address, cfg.port.0); + let health = warp::path!("api" / "v1" / "streaming" / "health").map(|| "OK"); + if let Some(_socket) = cfg.unix_socket.0.as_ref() { dbg_and_die!("Unix socket support not yet implemented"); } else { - warp::serve(websocket_routes.or(sse_routes).with(cors)).run(server_addr); + warp::serve(health.or(websocket_routes.or(sse_routes).with(cors))).run(server_addr); } } From 67c59401fd40ff783c53ab84ba1d672b24db84ee Mon Sep 17 00:00:00 2001 From: Daniel Sockwell Date: Wed, 8 Jan 2020 09:51:25 -0500 Subject: [PATCH 2/2] Unix sockets WIP (#77) * Initial WIP Unix socket implementation * Bump version to v0.4.5 * Update type data --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/config/deployment_cfg_types.rs | 10 +++------- src/main.rs | 10 +++++++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 75c52fb..11fd0bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -404,7 +404,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "flodgatt" -version = "0.4.4" +version = "0.4.5" dependencies = [ "criterion 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "dotenv 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index 229da5d..e10ef51 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "flodgatt" description = "A blazingly fast drop-in replacement for the Mastodon streaming api server" -version = "0.4.4" +version = "0.4.5" authors = ["Daniel Long Sockwell "] edition = "2018" diff --git a/src/config/deployment_cfg_types.rs b/src/config/deployment_cfg_types.rs index 8edc51e..86622f9 100644 --- a/src/config/deployment_cfg_types.rs +++ b/src/config/deployment_cfg_types.rs @@ -2,7 +2,6 @@ use crate::from_env_var; use std::{ fmt, net::{IpAddr, Ipv4Addr}, - os::unix::net::UnixListener, str::FromStr, time::Duration, }; @@ -35,12 +34,9 @@ from_env_var!( from_env_var!( /// A Unix Socket to use in place of a local address let name = Socket; - let default: Option = None; - let (env_var, allowed_values) = ("SOCKET", "a valid Unix Socket".to_string()); - let from_str = |s| match UnixListener::bind(s).ok() { - Some(socket) => Some(Some(socket)), - None => None, - }; + let default: Option = None; + let (env_var, allowed_values) = ("SOCKET", "any string".to_string()); + let from_str = |s| Some(Some(s.to_string())); ); from_env_var!( /// The time between replies sent via WebSocket diff --git a/src/main.rs b/src/main.rs index 6a7a074..2ea8cff 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ use flodgatt::{ - config, dbg_and_die, err, + config, err, parse_client_request::{sse, user, ws}, redis_to_client_stream::{self, ClientAgent}, }; @@ -89,8 +89,12 @@ fn main() { let health = warp::path!("api" / "v1" / "streaming" / "health").map(|| "OK"); - if let Some(_socket) = cfg.unix_socket.0.as_ref() { - dbg_and_die!("Unix socket support not yet implemented"); + if let Some(socket) = &*cfg.unix_socket { + warn!("Using Unix sockets is a WIP that is currently unsupported and untested."); + std::fs::remove_file(socket).unwrap(); + use tokio::net::UnixListener; + let incoming = UnixListener::bind(socket).unwrap().incoming(); + warp::serve(health.or(websocket_routes.or(sse_routes).with(cors))).run_incoming(incoming); } else { warp::serve(health.or(websocket_routes.or(sse_routes).with(cors))).run(server_addr); }