Skip to content

Commit

Permalink
feat(localhost): add custom host binding to allow external access (#1982
Browse files Browse the repository at this point in the history
)

Co-authored-by: Fabian-Lars <[email protected]>
  • Loading branch information
arihav and FabianLars authored Nov 6, 2024
1 parent 57f69c6 commit 3449dd5
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .changes/localhost-custom-host-binding.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'localhost': 'minor'
---

Add custom host binding to allow external access
11 changes: 10 additions & 1 deletion plugins/localhost/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,17 +46,25 @@ type OnRequest = Option<Box<dyn Fn(&Request, &mut Response) + Send + Sync>>;

pub struct Builder {
port: u16,
host: Option<String>,
on_request: OnRequest,
}

impl Builder {
pub fn new(port: u16) -> Self {
Self {
port,
host: None,
on_request: None,
}
}

// Change the host the plugin binds to. Defaults to `localhost`.
pub fn host<H: Into<String>>(mut self, host: H) -> Self {
self.host = Some(host.into());
self
}

pub fn on_request<F: Fn(&Request, &mut Response) + Send + Sync + 'static>(
mut self,
f: F,
Expand All @@ -67,14 +75,15 @@ impl Builder {

pub fn build<R: Runtime>(mut self) -> TauriPlugin<R> {
let port = self.port;
let host = self.host.unwrap_or("localhost".to_string());
let on_request = self.on_request.take();

PluginBuilder::new("localhost")
.setup(move |app, _api| {
let asset_resolver = app.asset_resolver();
std::thread::spawn(move || {
let server =
Server::http(format!("localhost:{port}")).expect("Unable to spawn server");
Server::http(format!("{host}:{port}")).expect("Unable to spawn server");
for req in server.incoming_requests() {
let path = req
.url()
Expand Down

0 comments on commit 3449dd5

Please sign in to comment.