Derive Downloads dir for the user
This commit is contained in:
parent
30671b86f7
commit
233541c71d
1 changed files with 8 additions and 8 deletions
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
use crate::Config;
|
use crate::Config;
|
||||||
use dialog::{backends::Zenity, DialogBox};
|
use dialog::{backends::Zenity, DialogBox};
|
||||||
|
use dirs::home_dir;
|
||||||
use std::{
|
use std::{
|
||||||
io::{Error, ErrorKind, Result},
|
io::{Error, ErrorKind, Result},
|
||||||
path::{PathBuf, MAIN_SEPARATOR},
|
path::{PathBuf, MAIN_SEPARATOR},
|
||||||
|
@ -28,10 +29,15 @@ use tokio::{
|
||||||
use tokio_libtls::prelude::*;
|
use tokio_libtls::prelude::*;
|
||||||
|
|
||||||
const MAX_COPIES: usize = 1024;
|
const MAX_COPIES: usize = 1024;
|
||||||
|
const DOWNLOAD_DIR: &str = "Downloads";
|
||||||
|
|
||||||
pub(crate) async fn run(config: Config) -> Result<()> {
|
pub(crate) async fn run(config: Config) -> Result<()> {
|
||||||
let (cert, key, ca) = config.load_keys()?;
|
let (cert, key, ca) = config.load_keys()?;
|
||||||
let mut options = config.load_server_options();
|
let mut options = config.load_server_options();
|
||||||
|
let home = home_dir().unwrap();
|
||||||
|
let mut download_dir = PathBuf::from(home);
|
||||||
|
|
||||||
|
download_dir.push(DOWNLOAD_DIR);
|
||||||
|
|
||||||
let tls_config = TlsConfigBuilder::new()
|
let tls_config = TlsConfigBuilder::new()
|
||||||
.ca_file(ca)
|
.ca_file(ca)
|
||||||
|
@ -61,11 +67,9 @@ pub(crate) async fn run(config: Config) -> Result<()> {
|
||||||
|
|
||||||
let (reader, mut writer) = split(tls);
|
let (reader, mut writer) = split(tls);
|
||||||
let mut reader = BufReader::new(reader);
|
let mut reader = BufReader::new(reader);
|
||||||
// let mut writer = BufWriter::new(writer);
|
let mut filename = download_dir.clone();
|
||||||
|
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let mut filename = PathBuf::from("/home/reyk/Downloads");
|
|
||||||
|
|
||||||
// Read and validate the filename
|
// Read and validate the filename
|
||||||
let line = match read_line(&peer_addr, &mut reader).await {
|
let line = match read_line(&peer_addr, &mut reader).await {
|
||||||
Ok(s) if !(s.contains(MAIN_SEPARATOR) || s.contains('/') || s.contains('\\')) => s,
|
Ok(s) if !(s.contains(MAIN_SEPARATOR) || s.contains('/') || s.contains('\\')) => s,
|
||||||
|
@ -133,11 +137,7 @@ pub(crate) async fn run(config: Config) -> Result<()> {
|
||||||
.show_with(&zenity)
|
.show_with(&zenity)
|
||||||
.expect("Could not display dialog box");
|
.expect("Could not display dialog box");
|
||||||
if choice != dialog::Choice::Yes {
|
if choice != dialog::Choice::Yes {
|
||||||
info!(
|
info!("{} failed: rejected {}", peer_addr, filename.display(),);
|
||||||
"{} failed: rejected {}",
|
|
||||||
peer_addr,
|
|
||||||
filename.display(),
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue