parent
							
								
									b247c8640d
								
							
						
					
					
						commit
						f840865597
					
				
				 24 changed files with 198 additions and 87 deletions
			
			
		@ -0,0 +1,10 @@ | 
				
			|||||||
 | 
					[package] | 
				
			||||||
 | 
					name = "be" | 
				
			||||||
 | 
					version = "0.1.0" | 
				
			||||||
 | 
					edition = "2018" | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies] | 
				
			||||||
 | 
					actix-web = "3.3.2" | 
				
			||||||
 | 
					u_lib = { version = "*", path = "../../../lib/u_lib" } | 
				
			||||||
@ -0,0 +1,12 @@ | 
				
			|||||||
 | 
					[package] | 
				
			||||||
 | 
					name = "fe" | 
				
			||||||
 | 
					version = "0.1.0" | 
				
			||||||
 | 
					edition = "2018" | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies] | 
				
			||||||
 | 
					u_lib = { version = "*", path = "../../../lib/u_lib" }  | 
				
			||||||
 | 
					wasm-bindgen = "0.2.78" | 
				
			||||||
 | 
					yew = "0.18.0" | 
				
			||||||
 | 
					yew-router = "0.15.0" | 
				
			||||||
@ -0,0 +1,9 @@ | 
				
			|||||||
 | 
					<!DOCTYPE html> | 
				
			||||||
 | 
					<html> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<head> | 
				
			||||||
 | 
					    <meta charset="utf-8" /> | 
				
			||||||
 | 
					    <title>Yew App</title> | 
				
			||||||
 | 
					</head> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</html> | 
				
			||||||
@ -0,0 +1,51 @@ | 
				
			|||||||
 | 
					use wasm_bindgen::prelude::*; | 
				
			||||||
 | 
					use yew::prelude::*; | 
				
			||||||
 | 
					enum Msg { | 
				
			||||||
 | 
					    AddOne, | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					struct Model { | 
				
			||||||
 | 
					    // `ComponentLink` is like a reference to a component.
 | 
				
			||||||
 | 
					    // It can be used to send messages to the component
 | 
				
			||||||
 | 
					    link: ComponentLink<Self>, | 
				
			||||||
 | 
					    value: i64, | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl Component for Model { | 
				
			||||||
 | 
					    type Message = Msg; | 
				
			||||||
 | 
					    type Properties = (); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn create(_props: Self::Properties, link: ComponentLink<Self>) -> Self { | 
				
			||||||
 | 
					        Self { link, value: 0 } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn update(&mut self, msg: Self::Message) -> ShouldRender { | 
				
			||||||
 | 
					        match msg { | 
				
			||||||
 | 
					            Msg::AddOne => { | 
				
			||||||
 | 
					                self.value += 1; | 
				
			||||||
 | 
					                // the value has changed so we need to
 | 
				
			||||||
 | 
					                // re-render for it to appear on the page
 | 
				
			||||||
 | 
					                true | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn change(&mut self, _props: Self::Properties) -> ShouldRender { | 
				
			||||||
 | 
					        // Should only return "true" if new properties are different to
 | 
				
			||||||
 | 
					        // previously received properties.
 | 
				
			||||||
 | 
					        // This component has no properties so we will always return "false".
 | 
				
			||||||
 | 
					        false | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn view(&self) -> Html { | 
				
			||||||
 | 
					        html! { | 
				
			||||||
 | 
					            <div> | 
				
			||||||
 | 
					                <button onclick=self.link.callback(|_| Msg::AddOne)>{ "+1" }</button> | 
				
			||||||
 | 
					                    <p>{ self.value }</p> | 
				
			||||||
 | 
					            </div> | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub fn main() { | 
				
			||||||
 | 
					    yew::start_app::<Model>(); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -1,3 +0,0 @@ | 
				
			|||||||
mod app; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pub use app::serve; | 
					 | 
				
			||||||
@ -0,0 +1,37 @@ | 
				
			|||||||
 | 
					use nix::{ | 
				
			||||||
 | 
					    sys::signal::{signal, SigHandler, Signal}, | 
				
			||||||
 | 
					    unistd::{chdir, close as fdclose, fork, getppid, setsid, ForkResult}, | 
				
			||||||
 | 
					}; | 
				
			||||||
 | 
					use std::process::exit; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub fn daemonize() { | 
				
			||||||
 | 
					    if getppid().as_raw() != 1 { | 
				
			||||||
 | 
					        setsig(Signal::SIGTTOU, SigHandler::SigIgn); | 
				
			||||||
 | 
					        setsig(Signal::SIGTTIN, SigHandler::SigIgn); | 
				
			||||||
 | 
					        setsig(Signal::SIGTSTP, SigHandler::SigIgn); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    for fd in 0..=2 { | 
				
			||||||
 | 
					        match fdclose(fd) { | 
				
			||||||
 | 
					            _ => (), | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    match chdir("/") { | 
				
			||||||
 | 
					        _ => (), | 
				
			||||||
 | 
					    }; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    match fork() { | 
				
			||||||
 | 
					        Ok(ForkResult::Parent { .. }) => { | 
				
			||||||
 | 
					            exit(0); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        Ok(ForkResult::Child) => match setsid() { | 
				
			||||||
 | 
					            _ => (), | 
				
			||||||
 | 
					        }, | 
				
			||||||
 | 
					        Err(_) => exit(255), | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub fn setsig(sig: Signal, hnd: SigHandler) { | 
				
			||||||
 | 
					    unsafe { | 
				
			||||||
 | 
					        signal(sig, hnd).unwrap(); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue