Move `relay_url` into the server config TOML too
parent
1de6c0aca7
commit
26eb395f18
|
@ -7,9 +7,6 @@ use structopt::StructOpt;
|
||||||
|
|
||||||
#[derive (Debug, StructOpt)]
|
#[derive (Debug, StructOpt)]
|
||||||
struct Opt {
|
struct Opt {
|
||||||
#[structopt (name = "RELAY_URL")]
|
|
||||||
relay_url: String,
|
|
||||||
|
|
||||||
#[structopt (long)]
|
#[structopt (long)]
|
||||||
file_server_root: Option <PathBuf>,
|
file_server_root: Option <PathBuf>,
|
||||||
}
|
}
|
||||||
|
@ -33,8 +30,7 @@ async fn main () -> Result <(), Box <dyn Error>> {
|
||||||
let opt = Opt::from_args ();
|
let opt = Opt::from_args ();
|
||||||
|
|
||||||
let opt = ptth::server::Opt {
|
let opt = ptth::server::Opt {
|
||||||
relay_url: opt.relay_url,
|
|
||||||
file_server_root: opt.file_server_root.unwrap_or_else (|| "/home/user".into ()),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ptth::server::main (config_file, opt).await
|
ptth::server::main (config_file, opt).await
|
||||||
|
|
|
@ -23,6 +23,8 @@ pub fn prefix_match <'a> (hay: &'a str, needle: &str) -> Option <&'a str>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Thanks to https://github.com/robsheldon/bad-passwords-index
|
||||||
|
|
||||||
const BAD_PASSWORDS: &[u8] = include_bytes! ("bad_passwords.txt");
|
const BAD_PASSWORDS: &[u8] = include_bytes! ("bad_passwords.txt");
|
||||||
|
|
||||||
pub fn password_is_bad (mut password: String) -> bool {
|
pub fn password_is_bad (mut password: String) -> bool {
|
||||||
|
@ -103,16 +105,16 @@ mod tests {
|
||||||
assert! (relay_state.list_servers ().await.is_empty ());
|
assert! (relay_state.list_servers ().await.is_empty ());
|
||||||
|
|
||||||
let relay_url = "http://127.0.0.1:4000";
|
let relay_url = "http://127.0.0.1:4000";
|
||||||
let relay_url_2 = relay_url.into ();
|
|
||||||
|
|
||||||
let config_file = server::ConfigFile {
|
let config_file = server::ConfigFile {
|
||||||
name: server_name.into (),
|
name: server_name.into (),
|
||||||
api_key: api_key.into (),
|
api_key: api_key.into (),
|
||||||
|
relay_url: relay_url.into (),
|
||||||
|
file_server_root: None,
|
||||||
};
|
};
|
||||||
spawn (async move {
|
spawn (async move {
|
||||||
let opt = server::Opt {
|
let opt = server::Opt {
|
||||||
relay_url: relay_url_2,
|
|
||||||
file_server_root: "./".into (),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
server::main (config_file, opt).await.unwrap ();
|
server::main (config_file, opt).await.unwrap ();
|
||||||
|
|
|
@ -23,6 +23,7 @@ use crate::{
|
||||||
pub mod file_server;
|
pub mod file_server;
|
||||||
|
|
||||||
struct ServerState {
|
struct ServerState {
|
||||||
|
config: Config,
|
||||||
opt: Opt,
|
opt: Opt,
|
||||||
handlebars: Handlebars <'static>,
|
handlebars: Handlebars <'static>,
|
||||||
client: Client,
|
client: Client,
|
||||||
|
@ -61,9 +62,14 @@ async fn handle_req_resp <'a> (
|
||||||
let (req_id, parts) = (wrapped_req.id, wrapped_req.req);
|
let (req_id, parts) = (wrapped_req.id, wrapped_req.req);
|
||||||
|
|
||||||
let response = if let Some (uri) = prefix_match (&parts.uri, "/files") {
|
let response = if let Some (uri) = prefix_match (&parts.uri, "/files") {
|
||||||
|
let default_root = PathBuf::from ("./");
|
||||||
|
let file_server_root: &std::path::Path = state.config.file_server_root
|
||||||
|
.as_ref ()
|
||||||
|
.unwrap_or (&default_root);
|
||||||
|
|
||||||
file_server::serve_all (
|
file_server::serve_all (
|
||||||
&state.handlebars,
|
&state.handlebars,
|
||||||
&state.opt.file_server_root,
|
file_server_root,
|
||||||
parts.method,
|
parts.method,
|
||||||
uri,
|
uri,
|
||||||
&parts.headers
|
&parts.headers
|
||||||
|
@ -74,7 +80,7 @@ async fn handle_req_resp <'a> (
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut resp_req = state.client
|
let mut resp_req = state.client
|
||||||
.post (&format! ("{}/7ZSFUKGV_http_response/{}", state.opt.relay_url, req_id))
|
.post (&format! ("{}/7ZSFUKGV_http_response/{}", state.config.relay_url, req_id))
|
||||||
.header (crate::PTTH_MAGIC_HEADER, base64::encode (rmp_serde::to_vec (&response.parts).unwrap ()));
|
.header (crate::PTTH_MAGIC_HEADER, base64::encode (rmp_serde::to_vec (&response.parts).unwrap ()));
|
||||||
|
|
||||||
if let Some (body) = response.body {
|
if let Some (body) = response.body {
|
||||||
|
@ -93,12 +99,19 @@ async fn handle_req_resp <'a> (
|
||||||
pub struct ConfigFile {
|
pub struct ConfigFile {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub api_key: String,
|
pub api_key: String,
|
||||||
|
pub relay_url: String,
|
||||||
|
pub file_server_root: Option <PathBuf>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive (Default)]
|
||||||
|
pub struct Config {
|
||||||
|
pub relay_url: String,
|
||||||
|
pub file_server_root: Option <PathBuf>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive (Clone)]
|
#[derive (Clone)]
|
||||||
pub struct Opt {
|
pub struct Opt {
|
||||||
pub relay_url: String,
|
|
||||||
pub file_server_root: PathBuf,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn main (config_file: ConfigFile, opt: Opt)
|
pub async fn main (config_file: ConfigFile, opt: Opt)
|
||||||
|
@ -123,6 +136,10 @@ pub async fn main (config_file: ConfigFile, opt: Opt)
|
||||||
let handlebars = file_server::load_templates ()?;
|
let handlebars = file_server::load_templates ()?;
|
||||||
|
|
||||||
let state = Arc::new (ServerState {
|
let state = Arc::new (ServerState {
|
||||||
|
config: Config {
|
||||||
|
relay_url: config_file.relay_url,
|
||||||
|
file_server_root: config_file.file_server_root,
|
||||||
|
},
|
||||||
opt,
|
opt,
|
||||||
handlebars,
|
handlebars,
|
||||||
client,
|
client,
|
||||||
|
@ -135,7 +152,7 @@ pub async fn main (config_file: ConfigFile, opt: Opt)
|
||||||
delay_for (Duration::from_millis (backoff_delay)).await;
|
delay_for (Duration::from_millis (backoff_delay)).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
let req_req = state.client.get (&format! ("{}/7ZSFUKGV_http_listen/{}", state.opt.relay_url, config_file.name));
|
let req_req = state.client.get (&format! ("{}/7ZSFUKGV_http_listen/{}", state.config.relay_url, config_file.name));
|
||||||
|
|
||||||
let err_backoff_delay = std::cmp::min (30_000, backoff_delay * 2 + 500);
|
let err_backoff_delay = std::cmp::min (30_000, backoff_delay * 2 + 500);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue