66 lines
2.7 KiB
Rust
66 lines
2.7 KiB
Rust
use maud::{html, Markup, PreEscaped};
|
|
use peach_network::network;
|
|
use rouille::Request;
|
|
|
|
use crate::{
|
|
templates,
|
|
utils::{flash::FlashRequest, theme},
|
|
AP_IFACE,
|
|
};
|
|
|
|
// ROUTE: /settings/network
|
|
|
|
/// Read the wireless interface mode (WiFi AP or client) and selectively render
|
|
/// the activation button for the deactivated mode.
|
|
fn render_mode_toggle_button() -> Markup {
|
|
match network::state(AP_IFACE) {
|
|
Ok(Some(state)) if state == "up" => {
|
|
html! {
|
|
a id="connectWifi" class="button button-primary center" href="/settings/network/wifi/activate" title="Enable WiFi" { "Enable WiFi" }
|
|
}
|
|
}
|
|
_ => html! {
|
|
a id="deployAccessPoint" class="button button-primary center" href="/settings/network/ap/activate" title="Deploy Access Point" { "Deploy Access Point" }
|
|
},
|
|
}
|
|
}
|
|
|
|
fn render_buttons() -> Markup {
|
|
html! {
|
|
(PreEscaped("<!-- BUTTONS -->"))
|
|
div id="buttons" {
|
|
a class="button button-primary center" href="/settings/network/wifi/add" title="Add WiFi Network" { "Add WiFi Network" }
|
|
a id="configureDNS" class="button button-primary center" href="/settings/network/dns" title="Configure DNS" { "Configure DNS" }
|
|
(PreEscaped("<!-- if ap is up, show 'Enable WiFi' button, else show 'Deplay Access Point' -->"))
|
|
(render_mode_toggle_button())
|
|
a id="listWifi" class="button button-primary center" href="/settings/network/wifi" title="List WiFi Networks" { "List WiFi Networks" }
|
|
// TODO: uncomment this once data usage feature is in place
|
|
// a id="viewUsage" class="button button-primary center" href="/settings/network/wifi/usage" title="View Data Usage" { "View Data Usage" }
|
|
a id="viewStatus" class="button button-primary center" href="/status/network" title="View Network Status" { "View Network Status" }
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Network settings menu template builder.
|
|
pub fn build_template(request: &Request) -> PreEscaped<String> {
|
|
let (flash_name, flash_msg) = request.retrieve_flash();
|
|
|
|
let menu_template = html! {
|
|
(PreEscaped("<!-- NETWORK SETTINGS MENU -->"))
|
|
div class="card center" {
|
|
(render_buttons())
|
|
// render flash message if cookies were found in the request
|
|
@if let (Some(name), Some(msg)) = (flash_name, flash_msg) {
|
|
(PreEscaped("<!-- FLASH MESSAGE -->"))
|
|
(templates::flash::build_template(name, msg))
|
|
}
|
|
}
|
|
};
|
|
|
|
let body = templates::nav::build_template(menu_template, "Network Settings", Some("/settings"));
|
|
|
|
let theme = theme::get_theme();
|
|
|
|
templates::base::build_template(body, theme)
|
|
}
|