From 263e3e0255d14e0c8ab1e09d7721866cdef4a6a4 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 23 Nov 2019 12:19:45 -0500 Subject: stop hardcoding the list and watch urls --- teleterm-web/src/config.rs | 1 + teleterm-web/src/model.rs | 17 ++--- teleterm/src/cmd/web.rs | 1 + teleterm/src/config.rs | 25 +++++++ teleterm/src/web.rs | 3 + teleterm/static/teleterm_web.js | 135 ++++++++++++++++++----------------- teleterm/static/teleterm_web_bg.wasm | Bin 703802 -> 705767 bytes 7 files changed, 104 insertions(+), 78 deletions(-) diff --git a/teleterm-web/src/config.rs b/teleterm-web/src/config.rs index c6dbc50..d9308de 100644 --- a/teleterm-web/src/config.rs +++ b/teleterm-web/src/config.rs @@ -9,6 +9,7 @@ extern "C" { #[derive(Clone, Debug, serde::Deserialize)] pub(crate) struct Config { pub(crate) title: String, + pub(crate) public_address: String, } impl Config { diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs index 1ba1f40..e4919e4 100644 --- a/teleterm-web/src/model.rs +++ b/teleterm-web/src/model.rs @@ -1,8 +1,5 @@ use crate::prelude::*; -const LIST_URL: &str = "http://127.0.0.1:4145/list"; -const WATCH_URL: &str = "ws://127.0.0.1:4145/watch"; - struct WatchConn { ws: WebSocket, term: vt100::Parser, @@ -47,9 +44,10 @@ impl Model { }, crate::Msg::Refresh => { log::debug!("refreshing"); + let url = + format!("http://{}/list", self.config.public_address); orders.perform_cmd( - seed::Request::new(LIST_URL) - .fetch_json_data(crate::Msg::List), + seed::Request::new(url).fetch_json_data(crate::Msg::List), ); } crate::Msg::StartWatching(id) => { @@ -116,12 +114,9 @@ impl Model { } fn watch(&mut self, id: &str, orders: &mut impl Orders) { - let ws = crate::ws::connect( - &format!("{}?id={}", WATCH_URL, id), - id, - crate::Msg::Watch, - orders, - ); + let url = + format!("ws://{}/watch?id={}", self.config.public_address, id); + let ws = crate::ws::connect(&url, id, crate::Msg::Watch, orders); let term = vt100::Parser::default(); self.watch_conn = Some(WatchConn { ws, diff --git a/teleterm/src/cmd/web.rs b/teleterm/src/cmd/web.rs index 37f2f70..0ec1daa 100644 --- a/teleterm/src/cmd/web.rs +++ b/teleterm/src/cmd/web.rs @@ -19,6 +19,7 @@ impl crate::config::Config for Config { ) -> Box + Send> { Box::new(crate::web::Server::new( self.web.listen_address, + self.web.public_address.clone(), self.web.server_address.clone(), )) } diff --git a/teleterm/src/config.rs b/teleterm/src/config.rs index 390ee4c..6dd18b9 100644 --- a/teleterm/src/config.rs +++ b/teleterm/src/config.rs @@ -18,6 +18,7 @@ const LOGIN_RECURSE_CENTER_OPTION: &str = "login-recurse-center"; const MAX_FRAME_LENGTH_OPTION: &str = "max-frame-length"; const PLAY_AT_START_OPTION: &str = "play-at-start"; const PLAYBACK_RATIO_OPTION: &str = "playback-ratio"; +const PUBLIC_ADDRESS_OPTION: &str = "public-address"; const READ_TIMEOUT_OPTION: &str = "read-timeout-secs"; const SERVER_ADDRESS_OPTION: &str = "server-address"; const TLS_IDENTITY_FILE_OPTION: &str = "tls-identity-file"; @@ -561,6 +562,9 @@ pub struct Web { )] pub listen_address: std::net::SocketAddr, + #[serde(default = "default_web_public_address")] + pub public_address: String, + #[serde( deserialize_with = "connect_address", default = "default_connect_address" @@ -572,6 +576,8 @@ impl Web { pub fn cmd<'a, 'b>(app: clap::App<'a, 'b>) -> clap::App<'a, 'b> { let listen_address_help = "Host and port to listen on (defaults to localhost:4145)"; + let public_address_help = + "Host and port that the web server will be publicly available on (defaults to the listen address)"; let server_address_help = "Host and port of the teleterm server (defaults to localhost:4144)"; app.arg( @@ -581,6 +587,13 @@ impl Web { .value_name("HOST:PORT") .help(listen_address_help), ) + .arg( + clap::Arg::with_name(PUBLIC_ADDRESS_OPTION) + .long(PUBLIC_ADDRESS_OPTION) + .takes_value(true) + .value_name("HOST:PORT") + .help(public_address_help), + ) .arg( clap::Arg::with_name(SERVER_ADDRESS_OPTION) .long(SERVER_ADDRESS_OPTION) @@ -601,6 +614,13 @@ impl Web { .parse() .context(crate::error::ParseAddr)?; } + if matches.is_present(PUBLIC_ADDRESS_OPTION) { + self.public_address = + matches.value_of(PUBLIC_ADDRESS_OPTION).unwrap().to_string(); + } else if matches.is_present(LISTEN_ADDRESS_OPTION) { + self.public_address = + matches.value_of(LISTEN_ADDRESS_OPTION).unwrap().to_string(); + } if matches.is_present(SERVER_ADDRESS_OPTION) { let address = matches.value_of(SERVER_ADDRESS_OPTION).unwrap(); self.server_address = to_connect_address(address)?; @@ -613,6 +633,7 @@ impl Default for Web { fn default() -> Self { Self { listen_address: default_web_listen_address(), + public_address: default_web_public_address(), server_address: default_connect_address(), } } @@ -622,6 +643,10 @@ fn default_web_listen_address() -> std::net::SocketAddr { to_listen_address(DEFAULT_WEB_LISTEN_ADDRESS).unwrap() } +fn default_web_public_address() -> String { + DEFAULT_WEB_LISTEN_ADDRESS.to_string() +} + #[derive(serde::Deserialize, Debug)] pub struct Command { #[serde(default = "default_command")] diff --git a/teleterm/src/web.rs b/teleterm/src/web.rs index 991f543..992b79d 100644 --- a/teleterm/src/web.rs +++ b/teleterm/src/web.rs @@ -12,6 +12,7 @@ use gotham::state::FromState as _; struct Config { title: String, server_address: (String, std::net::SocketAddr), + public_address: String, } pub struct Server { @@ -21,11 +22,13 @@ pub struct Server { impl Server { pub fn new( listen_address: std::net::SocketAddr, + public_address: String, server_address: (String, std::net::SocketAddr), ) -> Self { let data = Config { title: "teleterm".to_string(), server_address, + public_address, }; Self { server: Box::new(gotham::init_server( diff --git a/teleterm/static/teleterm_web.js b/teleterm/static/teleterm_web.js index d5bddf8..3fc5227 100644 --- a/teleterm/static/teleterm_web.js +++ b/teleterm/static/teleterm_web.js @@ -1,6 +1,10 @@ let wasm; +function __wbg_elem_binding0(arg0, arg1, arg2) { + wasm.__wbg_function_table.get(51)(arg0, arg1, arg2); +} + const heap = new Array(32); heap.fill(undefined); @@ -17,27 +21,24 @@ function addHeapObject(obj) { heap[idx] = obj; return idx; } -function __wbg_elem_binding0(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(62)(arg0, arg1, addHeapObject(arg2)); -} function __wbg_elem_binding1(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(62)(arg0, arg1, addHeapObject(arg2)); + wasm.__wbg_function_table.get(52)(arg0, arg1, addHeapObject(arg2)); } function __wbg_elem_binding2(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(61)(arg0, arg1, arg2); + wasm.__wbg_function_table.get(52)(arg0, arg1, addHeapObject(arg2)); } function __wbg_elem_binding3(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(62)(arg0, arg1, addHeapObject(arg2)); + wasm.__wbg_function_table.get(52)(arg0, arg1, addHeapObject(arg2)); } function __wbg_elem_binding4(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(62)(arg0, arg1, addHeapObject(arg2)); -} -function __wbg_elem_binding5(arg0, arg1, arg2) { - wasm.__wbg_function_table.get(62)(arg0, arg1, addHeapObject(arg2)); + wasm.__wbg_function_table.get(52)(arg0, arg1, addHeapObject(arg2)); } -function __wbg_elem_binding6(arg0, arg1) { +function __wbg_elem_binding5(arg0, arg1) { wasm.__wbg_function_table.get(31)(arg0, arg1); } +function __wbg_elem_binding6(arg0, arg1, arg2) { + wasm.__wbg_function_table.get(52)(arg0, arg1, addHeapObject(arg2)); +} function __wbg_elem_binding7(arg0, arg1, arg2, arg3, arg4) { wasm.__wbg_function_table.get(17)(arg0, arg1, addHeapObject(arg2), arg3, addHeapObject(arg4)); } @@ -506,41 +507,23 @@ function init(module) { imports.wbg.__widl_f_abort_AbortController = function(arg0) { getObject(arg0).abort(); }; - imports.wbg.__widl_f_new_AbortController = function() { + imports.wbg.__widl_f_error_1_ = function(arg0) { + console.error(getObject(arg0)); + }; + imports.wbg.__widl_f_add_event_listener_with_callback_EventTarget = function(arg0, arg1, arg2, arg3) { try { - const ret = new AbortController(); - return addHeapObject(ret); + getObject(arg0).addEventListener(getStringFromWasm(arg1, arg2), getObject(arg3)); } catch (e) { handleError(e) } }; - imports.wbg.__widl_f_new_WebSocket = function(arg0, arg1) { + imports.wbg.__widl_f_remove_event_listener_with_callback_EventTarget = function(arg0, arg1, arg2, arg3) { try { - const ret = new WebSocket(getStringFromWasm(arg0, arg1)); - return addHeapObject(ret); + getObject(arg0).removeEventListener(getStringFromWasm(arg1, arg2), getObject(arg3)); } catch (e) { handleError(e) } }; - imports.wbg.__widl_f_set_onopen_WebSocket = function(arg0, arg1) { - getObject(arg0).onopen = getObject(arg1); - }; - imports.wbg.__wbindgen_cb_forget = function(arg0) { - takeObject(arg0); - }; - imports.wbg.__widl_f_set_onclose_WebSocket = function(arg0, arg1) { - getObject(arg0).onclose = getObject(arg1); - }; - imports.wbg.__widl_f_set_onmessage_WebSocket = function(arg0, arg1) { - getObject(arg0).onmessage = getObject(arg1); - }; - imports.wbg.__widl_f_set_onerror_WebSocket = function(arg0, arg1) { - getObject(arg0).onerror = getObject(arg1); - }; - imports.wbg.__widl_f_data_MessageEvent = function(arg0) { - const ret = getObject(arg0).data; - return addHeapObject(ret); - }; imports.wbg.__widl_f_close_WebSocket = function(arg0) { try { getObject(arg0).close(); @@ -575,13 +558,6 @@ function init(module) { handleError(e) } }; - imports.wbg.__widl_f_add_event_listener_with_callback_EventTarget = function(arg0, arg1, arg2, arg3) { - try { - getObject(arg0).addEventListener(getStringFromWasm(arg1, arg2), getObject(arg3)); - } catch (e) { - handleError(e) - } - }; imports.wbg.__wbg_resolve_04ca3cb0d333a4f0 = function(arg0) { const ret = Promise.resolve(getObject(arg0)); return addHeapObject(ret); @@ -773,16 +749,6 @@ function init(module) { handleError(e) } }; - imports.wbg.__widl_f_error_1_ = function(arg0) { - console.error(getObject(arg0)); - }; - imports.wbg.__widl_f_remove_event_listener_with_callback_EventTarget = function(arg0, arg1, arg2, arg3) { - try { - getObject(arg0).removeEventListener(getStringFromWasm(arg1, arg2), getObject(arg3)); - } catch (e) { - handleError(e) - } - }; imports.wbg.__widl_f_query_selector_Document = function(arg0, arg1, arg2) { try { const ret = getObject(arg0).querySelector(getStringFromWasm(arg1, arg2)); @@ -795,6 +761,41 @@ function init(module) { const ret = getObject(arg0).getElementById(getStringFromWasm(arg1, arg2)); return isLikeNone(ret) ? 0 : addHeapObject(ret); }; + imports.wbg.__wbindgen_cb_forget = function(arg0) { + takeObject(arg0); + }; + imports.wbg.__widl_f_new_AbortController = function() { + try { + const ret = new AbortController(); + return addHeapObject(ret); + } catch (e) { + handleError(e) + } + }; + imports.wbg.__widl_f_new_WebSocket = function(arg0, arg1) { + try { + const ret = new WebSocket(getStringFromWasm(arg0, arg1)); + return addHeapObject(ret); + } catch (e) { + handleError(e) + } + }; + imports.wbg.__widl_f_set_onopen_WebSocket = function(arg0, arg1) { + getObject(arg0).onopen = getObject(arg1); + }; + imports.wbg.__widl_f_set_onclose_WebSocket = function(arg0, arg1) { + getObject(arg0).onclose = getObject(arg1); + }; + imports.wbg.__widl_f_set_onmessage_WebSocket = function(arg0, arg1) { + getObject(arg0).onmessage = getObject(arg1); + }; + imports.wbg.__widl_f_set_onerror_WebSocket = function(arg0, arg1) { + getObject(arg0).onerror = getObject(arg1); + }; + imports.wbg.__widl_f_data_MessageEvent = function(arg0) { + const ret = getObject(arg0).data; + return addHeapObject(ret); + }; imports.wbg.__wbindgen_throw = function(arg0, arg1) { throw new Error(getStringFromWasm(arg0, arg1)); }; @@ -896,14 +897,14 @@ function init(module) { imports.wbg.__widl_f_warn_1_ = function(arg0) { console.warn(getObject(arg0)); }; - imports.wbg.__wbindgen_closure_wrapper673 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper791 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding2(a, state.b, arg0); + return __wbg_elem_binding3(a, state.b, arg0); } finally { if (--state.cnt === 0) wasm.__wbg_function_table.get(32)(a, state.b); else state.a = a; @@ -914,14 +915,14 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper603 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper694 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding5(a, state.b, arg0); + return __wbg_elem_binding2(a, state.b, arg0); } finally { if (--state.cnt === 0) wasm.__wbg_function_table.get(32)(a, state.b); else state.a = a; @@ -932,14 +933,14 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper794 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper683 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding1(a, state.b, arg0); + return __wbg_elem_binding6(a, state.b, arg0); } finally { if (--state.cnt === 0) wasm.__wbg_function_table.get(32)(a, state.b); else state.a = a; @@ -950,14 +951,14 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper665 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper612 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding0(a, state.b, arg0); + return __wbg_elem_binding4(a, state.b, arg0); } finally { if (--state.cnt === 0) wasm.__wbg_function_table.get(32)(a, state.b); else state.a = a; @@ -968,14 +969,14 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper506 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper508 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = () => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding6(a, state.b, ); + return __wbg_elem_binding5(a, state.b, ); } finally { if (--state.cnt === 0) wasm.__wbg_function_table.get(32)(a, state.b); else state.a = a; @@ -986,14 +987,14 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper604 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper670 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding4(a, state.b, arg0); + return __wbg_elem_binding0(a, state.b, arg0); } finally { if (--state.cnt === 0) wasm.__wbg_function_table.get(32)(a, state.b); else state.a = a; @@ -1004,14 +1005,14 @@ function init(module) { const ret = real; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper605 = function(arg0, arg1, arg2) { + imports.wbg.__wbindgen_closure_wrapper691 = function(arg0, arg1, arg2) { const state = { a: arg0, b: arg1, cnt: 1 }; const real = (arg0) => { state.cnt++; const a = state.a; state.a = 0; try { - return __wbg_elem_binding3(a, state.b, arg0); + return __wbg_elem_binding1(a, state.b, arg0); } finally { if (--state.cnt === 0) wasm.__wbg_function_table.get(32)(a, state.b); else state.a = a; diff --git a/teleterm/static/teleterm_web_bg.wasm b/teleterm/static/teleterm_web_bg.wasm index dc787ef..668c78b 100644 Binary files a/teleterm/static/teleterm_web_bg.wasm and b/teleterm/static/teleterm_web_bg.wasm differ -- cgit v1.2.3-54-g00ecf