summaryrefslogtreecommitdiff
path: root/exes/rest/src
diff options
context:
space:
mode:
authorMatthieuCoder <matthieu@matthieu-dev.xyz>2023-01-03 00:14:27 +0400
committerMatthieuCoder <matthieu@matthieu-dev.xyz>2023-01-03 00:14:27 +0400
commit91a27342dbee8ca0478f862df93bf502337f4c6e (patch)
treeaf5f4818d300934d8c9ea14896fe756fea13d578 /exes/rest/src
parentc3e47ff0b1b06ff26830e78b7e37e212d1e47200 (diff)
add all in one binary
Diffstat (limited to 'exes/rest/src')
-rw-r--r--exes/rest/src/config.rs2
-rw-r--r--exes/rest/src/lib.rs67
-rw-r--r--exes/rest/src/main.rs69
-rw-r--r--exes/rest/src/ratelimit_client/mod.rs6
-rw-r--r--exes/rest/src/ratelimit_client/remote_hashring.rs2
5 files changed, 74 insertions, 72 deletions
diff --git a/exes/rest/src/config.rs b/exes/rest/src/config.rs
index 5c2698b..4e27a30 100644
--- a/exes/rest/src/config.rs
+++ b/exes/rest/src/config.rs
@@ -2,7 +2,7 @@ use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4};
use serde::Deserialize;
fn default_listening_address() -> SocketAddr {
- SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, 8080))
+ SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, 8090))
}
#[derive(Debug, Deserialize, Clone)]
diff --git a/exes/rest/src/lib.rs b/exes/rest/src/lib.rs
new file mode 100644
index 0000000..02721cc
--- /dev/null
+++ b/exes/rest/src/lib.rs
@@ -0,0 +1,67 @@
+use config::ReverseProxyConfig;
+
+use handler::handle_request;
+use hyper::{
+ server::conn::AddrStream,
+ service::{make_service_fn, service_fn},
+ Body, Client, Request, Server,
+};
+use hyper_tls::HttpsConnector;
+use leash::{AnyhowResultFuture, Component};
+use shared::config::Settings;
+use std::{convert::Infallible, sync::Arc};
+use tokio::sync::oneshot;
+
+mod config;
+mod handler;
+mod ratelimit_client;
+
+pub struct ReverseProxyServer {}
+impl Component for ReverseProxyServer {
+ type Config = ReverseProxyConfig;
+ const SERVICE_NAME: &'static str = "rest";
+
+ fn start(
+ &self,
+ settings: Settings<Self::Config>,
+ stop: oneshot::Receiver<()>,
+ ) -> AnyhowResultFuture<()> {
+ Box::pin(async move {
+ // Client to the remote ratelimiters
+ let ratelimiter = ratelimit_client::RemoteRatelimiter::new();
+ let client = Client::builder().build(HttpsConnector::new());
+
+ let token = Arc::new(settings.discord.token.clone());
+ let service_fn = make_service_fn(move |_: &AddrStream| {
+ let client = client.clone();
+ let ratelimiter = ratelimiter.clone();
+ let token = token.clone();
+ async move {
+ Ok::<_, Infallible>(service_fn(move |request: Request<Body>| {
+ let client = client.clone();
+ let ratelimiter = ratelimiter.clone();
+ let token = token.clone();
+ async move {
+ let token = token.as_str();
+ handle_request(client, ratelimiter, token, request).await
+ }
+ }))
+ }
+ });
+
+ let server = Server::bind(&settings.config.server.listening_adress).serve(service_fn);
+
+ server
+ .with_graceful_shutdown(async {
+ stop.await.expect("should not fail");
+ })
+ .await?;
+
+ Ok(())
+ })
+ }
+
+ fn new() -> Self {
+ Self {}
+ }
+} \ No newline at end of file
diff --git a/exes/rest/src/main.rs b/exes/rest/src/main.rs
index 07d835c..fe8ada7 100644
--- a/exes/rest/src/main.rs
+++ b/exes/rest/src/main.rs
@@ -1,69 +1,4 @@
-use config::ReverseProxyConfig;
-
-use handler::handle_request;
-use hyper::{
- server::conn::AddrStream,
- service::{make_service_fn, service_fn},
- Body, Client, Request, Server,
-};
-use hyper_tls::HttpsConnector;
-use leash::{ignite, AnyhowResultFuture, Component};
-use shared::config::Settings;
-use std::{convert::Infallible, sync::Arc};
-use tokio::sync::oneshot;
-
-mod config;
-mod handler;
-mod ratelimit_client;
-
-struct ReverseProxyServer {}
-impl Component for ReverseProxyServer {
- type Config = ReverseProxyConfig;
- const SERVICE_NAME: &'static str = "rest";
-
- fn start(
- &self,
- settings: Settings<Self::Config>,
- stop: oneshot::Receiver<()>,
- ) -> AnyhowResultFuture<()> {
- Box::pin(async move {
- // Client to the remote ratelimiters
- let ratelimiter = ratelimit_client::RemoteRatelimiter::new();
- let client = Client::builder().build(HttpsConnector::new());
-
- let token = Arc::new(settings.discord.token.clone());
- let service_fn = make_service_fn(move |_: &AddrStream| {
- let client = client.clone();
- let ratelimiter = ratelimiter.clone();
- let token = token.clone();
- async move {
- Ok::<_, Infallible>(service_fn(move |request: Request<Body>| {
- let client = client.clone();
- let ratelimiter = ratelimiter.clone();
- let token = token.clone();
- async move {
- let token = token.as_str();
- handle_request(client, ratelimiter, token, request).await
- }
- }))
- }
- });
-
- let server = Server::bind(&settings.config.server.listening_adress).serve(service_fn);
-
- server
- .with_graceful_shutdown(async {
- stop.await.expect("should not fail");
- })
- .await?;
-
- Ok(())
- })
- }
-
- fn new() -> Self {
- Self {}
- }
-}
+use leash::ignite;
+use rest::ReverseProxyServer;
ignite!(ReverseProxyServer);
diff --git a/exes/rest/src/ratelimit_client/mod.rs b/exes/rest/src/ratelimit_client/mod.rs
index 87737dd..afaf2b7 100644
--- a/exes/rest/src/ratelimit_client/mod.rs
+++ b/exes/rest/src/ratelimit_client/mod.rs
@@ -30,14 +30,14 @@ impl Drop for RemoteRatelimiter {
impl RemoteRatelimiter {
async fn get_ratelimiters(&self) -> Result<(), anyhow::Error> {
// get list of dns responses
- let responses = dns_lookup::lookup_host("ratelimit")
+ /*let responses = dns_lookup::lookup_host("localhost")
.unwrap()
.into_iter()
- .map(|f| f.to_string());
+ .map(|f| f.to_string());*/
let mut write = self.remotes.write().await;
- for ip in responses {
+ for ip in ["localhost"] {
let a = VNode::new(ip.into()).await?;
write.add(a.clone());
}
diff --git a/exes/rest/src/ratelimit_client/remote_hashring.rs b/exes/rest/src/ratelimit_client/remote_hashring.rs
index b9f7800..4e3fa06 100644
--- a/exes/rest/src/ratelimit_client/remote_hashring.rs
+++ b/exes/rest/src/ratelimit_client/remote_hashring.rs
@@ -34,7 +34,7 @@ impl Hash for VNode {
impl VNode {
pub async fn new(address: String) -> Result<Self, tonic::transport::Error> {
- let client = RatelimiterClient::connect(format!("http://{}:8080", address.clone())).await?;
+ let client = RatelimiterClient::connect(format!("http://{}:8093", address.clone())).await?;
Ok(VNode { client, address })
}