From 306478413921993a768a362f4d6f0ca7536b479c Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Thu, 2 Mar 2023 21:33:01 +0900 Subject: [PATCH] Backport: Impl passing password via file --- src/main.rs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 51f0201..7403195 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,6 +10,8 @@ use ggez::event::{self, ControlFlow, EventHandler}; use ggez::filesystem::mount; use ggez::graphics::{self, Rect}; use ggez::{ContextBuilder, GameError}; +use std::fs::File; +use std::io::Read; use std::net::Ipv4Addr; use std::path::PathBuf; use std::thread; @@ -36,6 +38,8 @@ pub struct Opt { disable_show_filename: bool, #[structopt(long = "pprompt", help = "input password via prompt")] enable_prompt_password: bool, + #[structopt(long = "pfile", help = "read password from file")] + password_file: Option, #[structopt( long = "no-scale-fill", help = "don't scale-fill the album art to the window" @@ -59,9 +63,26 @@ pub struct Opt { } fn main() -> Result<(), String> { - let opt = Opt::from_args(); + let mut opt = Opt::from_args(); println!("Got host addr == {}, port == {}", opt.host, opt.port); + // Read password from file if exists, error otherwise. + if let Some(psswd_file_path) = opt.password_file.as_ref() { + let mut file = File::open(psswd_file_path).expect("pfile/password_file should exist"); + let mut content: String = String::new(); + + file.read_to_string(&mut content) + .expect("Should be able to read from pfile/password_file"); + + if content.ends_with("\r\n") { + content.truncate(content.len() - 2); + } else if content.ends_with('\n') { + content.truncate(content.len() - 1); + } + + opt.password = Some(content); + } + let (mut ctx, event_loop) = ContextBuilder::new("mpd_info_screen", "Stephen Seo") .window_setup(WindowSetup { title: "mpd info screen".into(), -- 2.49.0