mirror of
https://github.com/002Hub/IPass.git
synced 2025-04-19 13:51:21 +02:00
fix bug when renaming entry
This commit is contained in:
parent
d40f297e19
commit
c4d3d09e08
16
src/main.rs
16
src/main.rs
@ -5,7 +5,7 @@ use std::io::Write;
|
||||
mod utils;
|
||||
|
||||
fn main() {
|
||||
let version = "0.2.0";
|
||||
let version = "0.2.1";
|
||||
println!("IPass v{}\n", version);
|
||||
|
||||
let args = utils::get_args();
|
||||
@ -110,7 +110,7 @@ fn list() {
|
||||
}
|
||||
}
|
||||
|
||||
fn add(args: &Vec<String>) {
|
||||
fn add(args: &Vec<String>) { //TODO: format: [specifier] [email or username] {password}
|
||||
|
||||
if args.len() < 3 || args.len() > 4 {
|
||||
println!("Incorrect usage of \"add\"");
|
||||
@ -123,17 +123,21 @@ fn add(args: &Vec<String>) {
|
||||
pw = args[3].trim().to_owned();
|
||||
} else {
|
||||
let alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!\"§$%&/()=?´`²³{[]}\\,.-;:_><|+*#'";
|
||||
let char_set:Vec<char> = alphabet.clone().chars().collect();
|
||||
let alph_len = alphabet.chars().count();
|
||||
let char_set:Vec<char> = alphabet.chars().collect();
|
||||
let mut chars_index: Vec<u8> = vec![0;20];
|
||||
OsRng.fill_bytes(&mut chars_index);
|
||||
let mut chars = String::new();
|
||||
|
||||
for index in chars_index {
|
||||
chars += &char_set[(index%((alphabet.len()-1) as u8)) as usize].to_string();
|
||||
// println!("{} - {} - {}",index,(index as usize)%(alph_len-1),alph_len);
|
||||
chars += &char_set[(index as usize)%(alph_len-1)].to_string();
|
||||
}
|
||||
|
||||
pw = chars;
|
||||
|
||||
println!("Using auto generated password");
|
||||
// println!("pw: {pw}");
|
||||
|
||||
}
|
||||
|
||||
println!("Adding password for {}",args[2]);
|
||||
@ -191,7 +195,7 @@ fn rename(args: &Vec<String>) { // prog ren old new
|
||||
}
|
||||
let filepath = &(utils::get_ipass_folder()+&args[2]+".ipass");
|
||||
if std::path::Path::new(filepath).exists() {
|
||||
std::fs::rename(format!("{}/{}.ipass",utils::get_ipass_folder(),args[2]), format!("{}/{}.ipass",utils::get_ipass_folder(),args[3])).unwrap();
|
||||
utils::rename(&args[2],&args[3]);
|
||||
println!("Renamed {} to {}", args[2], args[3]);
|
||||
} else {
|
||||
println!("No such file");
|
||||
|
16
src/utils.rs
16
src/utils.rs
@ -112,3 +112,19 @@ pub fn prompt_answer(toprint: String) -> String {
|
||||
|
||||
return choice.trim().to_lowercase();
|
||||
}
|
||||
|
||||
pub fn rename(name: &String, new_name: &String) {
|
||||
if !std::path::Path::new(&(get_ipass_folder()+name+".ipass")).exists() {
|
||||
return;
|
||||
}
|
||||
if std::path::Path::new(&(get_ipass_folder()+new_name+".ipass")).exists() {
|
||||
return;
|
||||
}
|
||||
let content = &mut std::fs::read_to_string(get_ipass_folder()+name+".ipass").expect("Should have been able to read the file");
|
||||
let mpw = ask_for_pw();
|
||||
let mut pw = decrypt_pass(name.to_owned(),hex::decode(content).unwrap(),mpw.clone()).to_owned();
|
||||
|
||||
pw = encrypt_pass(new_name.to_owned(), pw,mpw);
|
||||
let mut file = std::fs::File::create(get_ipass_folder()+new_name+".ipass").unwrap();
|
||||
file.write_all(pw.as_bytes()).unwrap();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user