Moar Changes
This commit is contained in:
parent
d7a988e46b
commit
4cbae531d9
1 changed files with 43 additions and 15 deletions
58
src/main.rs
58
src/main.rs
|
@ -1,8 +1,11 @@
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use std::{
|
use std::{
|
||||||
|
fmt::Error,
|
||||||
|
fs,
|
||||||
io::{Read, Result, Write},
|
io::{Read, Result, Write},
|
||||||
net::{TcpListener, TcpStream},
|
os::unix::net::{SocketAddr, UnixListener, UnixStream},
|
||||||
os::unix::net::SocketAddr,
|
path::{self, PathBuf},
|
||||||
|
process, thread,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Parser, Debug)]
|
#[derive(Parser, Debug)]
|
||||||
|
@ -20,7 +23,7 @@ struct Args {
|
||||||
// val: String,
|
// val: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_client(mut stream: TcpStream) {
|
fn handle_client(mut stream: UnixStream) {
|
||||||
let mut message: Vec<u8> = vec![0; 100];
|
let mut message: Vec<u8> = vec![0; 100];
|
||||||
if let Ok(m) = stream.read(&mut message[..]) {
|
if let Ok(m) = stream.read(&mut message[..]) {
|
||||||
if let Ok(s) = String::from_utf8(message) {
|
if let Ok(s) = String::from_utf8(message) {
|
||||||
|
@ -32,35 +35,60 @@ fn handle_client(mut stream: TcpStream) {
|
||||||
fn main() -> std::io::Result<()> {
|
fn main() -> std::io::Result<()> {
|
||||||
let args = Args::parse();
|
let args = Args::parse();
|
||||||
|
|
||||||
if args.daemon {}
|
let socket_path = PathBuf::from("/tmp/rund/socket");
|
||||||
|
|
||||||
let is_daemon = args.daemon;
|
let is_daemon = args.daemon;
|
||||||
println!("Daemon enabled: {}", is_daemon);
|
println!("Daemon enabled: {}", is_daemon);
|
||||||
|
|
||||||
if is_daemon {
|
if is_daemon {
|
||||||
println!("Listening on port: {}", args.port);
|
let _ = run_daemon();
|
||||||
run_daemon(args.port);
|
|
||||||
} else {
|
} else {
|
||||||
lower_volume(args.port);
|
lower_volume(socket_path);
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_daemon(port: u32) -> Result<()> {
|
fn run_daemon() -> Result<()> {
|
||||||
let address = format!("127.0.0.1:{}", port);
|
let socket_path = PathBuf::from("/tmp/rund/socket");
|
||||||
let listener = TcpListener::bind(address)?;
|
|
||||||
|
if let Ok(true) = fs::exists(&socket_path) {
|
||||||
|
println!("Socket exists, deleting socket");
|
||||||
|
fs::remove_file(&socket_path).expect("Couldn't remove socket file!")
|
||||||
|
}
|
||||||
|
|
||||||
|
let listener = match UnixListener::bind("/tmp/rund/socket") {
|
||||||
|
Ok(sock) => {
|
||||||
|
println!(
|
||||||
|
"Created Socket at {}",
|
||||||
|
socket_path.into_os_string().into_string().unwrap()
|
||||||
|
);
|
||||||
|
sock
|
||||||
|
}
|
||||||
|
Err(_) => {
|
||||||
|
println!("Couldn't create the socket!");
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
for stream in listener.incoming() {
|
for stream in listener.incoming() {
|
||||||
handle_client(stream?);
|
match stream {
|
||||||
|
Ok(stream) => {
|
||||||
|
// If it werks
|
||||||
|
thread::spawn(|| handle_client(stream));
|
||||||
}
|
}
|
||||||
|
// Error
|
||||||
|
Err(_) => break,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lower_volume(port: u32) {
|
fn lower_volume(path: PathBuf) {
|
||||||
let address = format!("127.0.0.1:{}", port);
|
if let Ok(mut stream) = UnixStream::connect(path) {
|
||||||
if let Ok(mut stream) = TcpStream::connect(address) {
|
|
||||||
println!("Connected!");
|
println!("Connected!");
|
||||||
let _ = stream.write_all(b"Remote Message!");
|
let mess = format!("Remote Message from process with PID {}", process::id()).into_bytes();
|
||||||
|
let _ = stream.write_all(&mess);
|
||||||
} else {
|
} else {
|
||||||
println!("Could not connect!");
|
println!("Could not connect!");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue