mirror of
https://github.com/kanidm/kanidm.git
synced 2025-02-24 04:57:00 +01:00
Cleanup display output (#659)
This commit is contained in:
parent
5213ed4e01
commit
3f7c692a7c
|
@ -31,7 +31,7 @@ path = "src/badlist_preprocess.rs"
|
||||||
kanidm_client = { path = "../kanidm_client", version = "1.1.0-alpha.4" }
|
kanidm_client = { path = "../kanidm_client", version = "1.1.0-alpha.4" }
|
||||||
kanidm_proto = { path = "../kanidm_proto", version = "1.1.0-alpha.4" }
|
kanidm_proto = { path = "../kanidm_proto", version = "1.1.0-alpha.4" }
|
||||||
tracing = "0.1"
|
tracing = "0.1"
|
||||||
tracing-subscriber = "0.3"
|
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
|
||||||
rpassword = "5.0"
|
rpassword = "5.0"
|
||||||
structopt = { version = "0.3", default-features = false }
|
structopt = { version = "0.3", default-features = false }
|
||||||
libc = "0.2"
|
libc = "0.2"
|
||||||
|
|
|
@ -100,7 +100,7 @@ impl AccountOpt {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,7 @@ impl AccountOpt {
|
||||||
) {
|
) {
|
||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error Starting Registration -> {:?}", e);
|
error!("Error Starting Registration -> {:?}", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -126,7 +126,7 @@ impl AccountOpt {
|
||||||
let rego = match wa.do_registration(client.get_origin(), chal) {
|
let rego = match wa.do_registration(client.get_origin(), chal) {
|
||||||
Ok(rego) => rego,
|
Ok(rego) => rego,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error Signing -> {:?}", e);
|
error!("Error Signing -> {:?}", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -140,7 +140,7 @@ impl AccountOpt {
|
||||||
println!("Webauthn token registration success.");
|
println!("Webauthn token registration success.");
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error Completing -> {:?}", e);
|
error!("Error Completing -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,7 +154,7 @@ impl AccountOpt {
|
||||||
println!("Webauthn removal success.");
|
println!("Webauthn removal success.");
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error Removing Webauthn from account -> {:?}", e);
|
error!("Error Removing Webauthn from account -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -165,7 +165,7 @@ impl AccountOpt {
|
||||||
) {
|
) {
|
||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error Starting Registration -> {:?}", e);
|
error!("Error Starting Registration -> {:?}", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -176,7 +176,7 @@ impl AccountOpt {
|
||||||
let code = match QrCode::new(tok.to_uri().as_str()) {
|
let code = match QrCode::new(tok.to_uri().as_str()) {
|
||||||
Ok(c) => c,
|
Ok(c) => c,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Failed to generate QR code -> {:?}", e);
|
error!("Failed to generate QR code -> {:?}", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -206,7 +206,7 @@ impl AccountOpt {
|
||||||
// Finish the line?
|
// Finish the line?
|
||||||
eprintln!();
|
eprintln!();
|
||||||
if let Err(e) = input_result {
|
if let Err(e) = input_result {
|
||||||
eprintln!("Failed to read from stdin -> {:?}", e);
|
error!("Failed to read from stdin -> {:?}", e);
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ impl AccountOpt {
|
||||||
let totp = match totp_input.trim().parse::<u32>() {
|
let totp = match totp_input.trim().parse::<u32>() {
|
||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Invalid TOTP -> {:?}", e);
|
error!("Invalid TOTP -> {:?}", e);
|
||||||
// Try again.
|
// Try again.
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -238,7 +238,7 @@ impl AccountOpt {
|
||||||
|
|
||||||
let mut confirm_input = String::new();
|
let mut confirm_input = String::new();
|
||||||
if let Err(e) = io::stdin().read_line(&mut confirm_input) {
|
if let Err(e) = io::stdin().read_line(&mut confirm_input) {
|
||||||
eprintln!("Failed to read from stdin -> {:?}", e);
|
error!("Failed to read from stdin -> {:?}", e);
|
||||||
};
|
};
|
||||||
|
|
||||||
if confirm_input.to_lowercase().trim() == "i am sure" {
|
if confirm_input.to_lowercase().trim() == "i am sure" {
|
||||||
|
@ -250,7 +250,7 @@ impl AccountOpt {
|
||||||
println!("TOTP registration success.");
|
println!("TOTP registration success.");
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error Completing -> {:?}", e);
|
error!("Error Completing -> {:?}", e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
|
@ -264,7 +264,7 @@ impl AccountOpt {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error Completing -> {:?}", e);
|
error!("Error Completing -> {:?}", e);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -279,7 +279,7 @@ impl AccountOpt {
|
||||||
println!("TOTP removal success.");
|
println!("TOTP removal success.");
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error Removing TOTP from account -> {:?}", e);
|
error!("Error Removing TOTP from account -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -295,7 +295,7 @@ impl AccountOpt {
|
||||||
println!("---");
|
println!("---");
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error generating Backup Codes for account -> {:?}", e);
|
error!("Error generating Backup Codes for account -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -308,7 +308,7 @@ impl AccountOpt {
|
||||||
println!("BackupCodeRemove success.");
|
println!("BackupCodeRemove success.");
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error BackupCodeRemove for account -> {:?}", e);
|
error!("Error BackupCodeRemove for account -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -320,7 +320,7 @@ impl AccountOpt {
|
||||||
print!("{}", status);
|
print!("{}", status);
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error displaying credential status -> {:?}", e);
|
error!("Error displaying credential status -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -336,7 +336,7 @@ impl AccountOpt {
|
||||||
Ok(Some(s)) => println!("Radius secret: {}", s),
|
Ok(Some(s)) => println!("Radius secret: {}", s),
|
||||||
Ok(None) => println!("NO Radius secret"),
|
Ok(None) => println!("NO Radius secret"),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -345,7 +345,7 @@ impl AccountOpt {
|
||||||
if let Err(e) = client
|
if let Err(e) = client
|
||||||
.idm_account_radius_credential_regenerate(aopt.aopts.account_id.as_str())
|
.idm_account_radius_credential_regenerate(aopt.aopts.account_id.as_str())
|
||||||
{
|
{
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AccountRadius::Delete(aopt) => {
|
AccountRadius::Delete(aopt) => {
|
||||||
|
@ -353,7 +353,7 @@ impl AccountOpt {
|
||||||
if let Err(e) =
|
if let Err(e) =
|
||||||
client.idm_account_radius_credential_delete(aopt.aopts.account_id.as_str())
|
client.idm_account_radius_credential_delete(aopt.aopts.account_id.as_str())
|
||||||
{
|
{
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, // end AccountOpt::Radius
|
}, // end AccountOpt::Radius
|
||||||
|
@ -363,7 +363,7 @@ impl AccountOpt {
|
||||||
match client.idm_account_unix_token_get(aopt.aopts.account_id.as_str()) {
|
match client.idm_account_unix_token_get(aopt.aopts.account_id.as_str()) {
|
||||||
Ok(token) => println!("{}", token),
|
Ok(token) => println!("{}", token),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -374,7 +374,7 @@ impl AccountOpt {
|
||||||
aopt.gidnumber,
|
aopt.gidnumber,
|
||||||
aopt.shell.as_deref(),
|
aopt.shell.as_deref(),
|
||||||
) {
|
) {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AccountPosix::SetPassword(aopt) => {
|
AccountPosix::SetPassword(aopt) => {
|
||||||
|
@ -391,7 +391,7 @@ impl AccountOpt {
|
||||||
aopt.aopts.account_id.as_str(),
|
aopt.aopts.account_id.as_str(),
|
||||||
password.as_str(),
|
password.as_str(),
|
||||||
) {
|
) {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, // end AccountOpt::Posix
|
}, // end AccountOpt::Posix
|
||||||
|
@ -403,7 +403,7 @@ impl AccountOpt {
|
||||||
aopt.mail.as_deref(),
|
aopt.mail.as_deref(),
|
||||||
aopt.legalname.as_deref(),
|
aopt.legalname.as_deref(),
|
||||||
) {
|
) {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, // end AccountOpt::Person
|
}, // end AccountOpt::Person
|
||||||
|
@ -414,7 +414,7 @@ impl AccountOpt {
|
||||||
match client.idm_account_get_ssh_pubkeys(aopt.aopts.account_id.as_str()) {
|
match client.idm_account_get_ssh_pubkeys(aopt.aopts.account_id.as_str()) {
|
||||||
Ok(pkeys) => pkeys.iter().for_each(|pkey| println!("{}", pkey)),
|
Ok(pkeys) => pkeys.iter().for_each(|pkey| println!("{}", pkey)),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -425,7 +425,7 @@ impl AccountOpt {
|
||||||
aopt.tag.as_str(),
|
aopt.tag.as_str(),
|
||||||
aopt.pubkey.as_str(),
|
aopt.pubkey.as_str(),
|
||||||
) {
|
) {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AccountSsh::Delete(aopt) => {
|
AccountSsh::Delete(aopt) => {
|
||||||
|
@ -434,7 +434,7 @@ impl AccountOpt {
|
||||||
aopt.aopts.account_id.as_str(),
|
aopt.aopts.account_id.as_str(),
|
||||||
aopt.tag.as_str(),
|
aopt.tag.as_str(),
|
||||||
) {
|
) {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, // end AccountOpt::Ssh
|
}, // end AccountOpt::Ssh
|
||||||
|
@ -442,7 +442,7 @@ impl AccountOpt {
|
||||||
let client = copt.to_client();
|
let client = copt.to_client();
|
||||||
match client.idm_account_list() {
|
match client.idm_account_list() {
|
||||||
Ok(r) => r.iter().for_each(|ent| println!("{}", ent)),
|
Ok(r) => r.iter().for_each(|ent| println!("{}", ent)),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AccountOpt::Get(aopt) => {
|
AccountOpt::Get(aopt) => {
|
||||||
|
@ -450,13 +450,13 @@ impl AccountOpt {
|
||||||
match client.idm_account_get(aopt.aopts.account_id.as_str()) {
|
match client.idm_account_get(aopt.aopts.account_id.as_str()) {
|
||||||
Ok(Some(e)) => println!("{}", e),
|
Ok(Some(e)) => println!("{}", e),
|
||||||
Ok(None) => println!("No matching entries"),
|
Ok(None) => println!("No matching entries"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AccountOpt::Delete(aopt) => {
|
AccountOpt::Delete(aopt) => {
|
||||||
let client = aopt.copt.to_client();
|
let client = aopt.copt.to_client();
|
||||||
if let Err(e) = client.idm_account_delete(aopt.aopts.account_id.as_str()) {
|
if let Err(e) = client.idm_account_delete(aopt.aopts.account_id.as_str()) {
|
||||||
eprintln!("Error -> {:?}", e)
|
error!("Error -> {:?}", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AccountOpt::Create(acopt) => {
|
AccountOpt::Create(acopt) => {
|
||||||
|
@ -465,7 +465,7 @@ impl AccountOpt {
|
||||||
acopt.aopts.account_id.as_str(),
|
acopt.aopts.account_id.as_str(),
|
||||||
acopt.display_name.as_str(),
|
acopt.display_name.as_str(),
|
||||||
) {
|
) {
|
||||||
eprintln!("Error -> {:?}", e)
|
error!("Error -> {:?}", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AccountOpt::Validity(avopt) => match avopt {
|
AccountOpt::Validity(avopt) => match avopt {
|
||||||
|
@ -517,7 +517,7 @@ impl AccountOpt {
|
||||||
println!("expire: never");
|
println!("expire: never");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AccountValidity::ExpireAt(ano) => {
|
AccountValidity::ExpireAt(ano) => {
|
||||||
|
@ -527,14 +527,14 @@ impl AccountOpt {
|
||||||
match client
|
match client
|
||||||
.idm_account_purge_attr(ano.aopts.account_id.as_str(), "account_expire")
|
.idm_account_purge_attr(ano.aopts.account_id.as_str(), "account_expire")
|
||||||
{
|
{
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
_ => println!("Success"),
|
_ => println!("Success"),
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if let Err(e) =
|
if let Err(e) =
|
||||||
OffsetDateTime::parse(ano.datetime.as_str(), time::Format::Rfc3339)
|
OffsetDateTime::parse(ano.datetime.as_str(), time::Format::Rfc3339)
|
||||||
{
|
{
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -543,7 +543,7 @@ impl AccountOpt {
|
||||||
"account_expire",
|
"account_expire",
|
||||||
&[ano.datetime.as_str()],
|
&[ano.datetime.as_str()],
|
||||||
) {
|
) {
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
_ => println!("Success"),
|
_ => println!("Success"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -556,7 +556,7 @@ impl AccountOpt {
|
||||||
ano.aopts.account_id.as_str(),
|
ano.aopts.account_id.as_str(),
|
||||||
"account_valid_from",
|
"account_valid_from",
|
||||||
) {
|
) {
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
_ => println!("Success"),
|
_ => println!("Success"),
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -564,7 +564,7 @@ impl AccountOpt {
|
||||||
if let Err(e) =
|
if let Err(e) =
|
||||||
OffsetDateTime::parse(ano.datetime.as_str(), time::Format::Rfc3339)
|
OffsetDateTime::parse(ano.datetime.as_str(), time::Format::Rfc3339)
|
||||||
{
|
{
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -573,7 +573,7 @@ impl AccountOpt {
|
||||||
"account_valid_from",
|
"account_valid_from",
|
||||||
&[ano.datetime.as_str()],
|
&[ano.datetime.as_str()],
|
||||||
) {
|
) {
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
_ => println!("Success"),
|
_ => println!("Success"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,7 +87,7 @@ impl CommonOpt {
|
||||||
match prompt_for_username_get_token() {
|
match prompt_for_username_get_token() {
|
||||||
Ok(value) => value,
|
Ok(value) => value,
|
||||||
Err(msg) => {
|
Err(msg) => {
|
||||||
eprintln!("{}", msg);
|
error!("{}", msg);
|
||||||
std::process::exit(1);
|
std::process::exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,7 @@ impl CommonOpt {
|
||||||
let jwtu = match JwsUnverified::from_str(&token) {
|
let jwtu = match JwsUnverified::from_str(&token) {
|
||||||
Ok(jwtu) => jwtu,
|
Ok(jwtu) => jwtu,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Unable to parse token - {:?}", e);
|
error!("Unable to parse token - {:?}", e);
|
||||||
std::process::exit(1);
|
std::process::exit(1);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -139,7 +139,7 @@ pub fn prompt_for_username_get_values() -> Result<(String, String), String> {
|
||||||
_ => return Err("Error retrieving authentication token store".to_string()),
|
_ => return Err("Error retrieving authentication token store".to_string()),
|
||||||
};
|
};
|
||||||
if tokens.is_empty() {
|
if tokens.is_empty() {
|
||||||
eprintln!("No tokens in store, quitting!");
|
error!("No tokens in store, quitting!");
|
||||||
std::process::exit(1);
|
std::process::exit(1);
|
||||||
}
|
}
|
||||||
let mut options = Vec::new();
|
let mut options = Vec::new();
|
||||||
|
@ -153,7 +153,7 @@ pub fn prompt_for_username_get_values() -> Result<(String, String), String> {
|
||||||
.interact();
|
.interact();
|
||||||
let selection = match user_select {
|
let selection = match user_select {
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
eprintln!("Failed to handle user input: {:?}", error);
|
error!("Failed to handle user input: {:?}", error);
|
||||||
std::process::exit(1);
|
std::process::exit(1);
|
||||||
}
|
}
|
||||||
Ok(value) => value,
|
Ok(value) => value,
|
||||||
|
@ -168,7 +168,7 @@ pub fn prompt_for_username_get_values() -> Result<(String, String), String> {
|
||||||
Ok((f_uname.to_string(), f_token.to_string()))
|
Ok((f_uname.to_string(), f_token.to_string()))
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
eprintln!("Memory corruption trying to read token store, quitting!");
|
error!("Memory corruption trying to read token store, quitting!");
|
||||||
std::process::exit(1);
|
std::process::exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,14 +13,14 @@ impl DomainOpt {
|
||||||
let client = copt.to_client();
|
let client = copt.to_client();
|
||||||
match client.idm_domain_get() {
|
match client.idm_domain_get() {
|
||||||
Ok(e) => println!("{}", e),
|
Ok(e) => println!("{}", e),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DomainOpt::ResetTokenKey(copt) => {
|
DomainOpt::ResetTokenKey(copt) => {
|
||||||
let client = copt.to_client();
|
let client = copt.to_client();
|
||||||
match client.idm_domain_reset_token_key() {
|
match client.idm_domain_reset_token_key() {
|
||||||
Ok(_) => println!("Success"),
|
Ok(_) => println!("Success"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ impl GroupOpt {
|
||||||
GroupOpt::List(copt) => {
|
GroupOpt::List(copt) => {
|
||||||
let client = copt.to_client();
|
let client = copt.to_client();
|
||||||
match client.idm_group_list() {
|
match client.idm_group_list() {
|
||||||
Ok(r) => r.iter().for_each(|ent| info!("{}", ent)),
|
Ok(r) => r.iter().for_each(|ent| println!("{}", ent)),
|
||||||
Err(e) => error!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,8 +32,8 @@ impl GroupOpt {
|
||||||
let client = gcopt.copt.to_client();
|
let client = gcopt.copt.to_client();
|
||||||
// idm_group_get
|
// idm_group_get
|
||||||
match client.idm_group_get(gcopt.name.as_str()) {
|
match client.idm_group_get(gcopt.name.as_str()) {
|
||||||
Ok(Some(e)) => info!("{}", e),
|
Ok(Some(e)) => println!("{}", e),
|
||||||
Ok(None) => info!("No matching group '{}'", gcopt.name.as_str()),
|
Ok(None) => warn!("No matching group '{}'", gcopt.name.as_str()),
|
||||||
Err(e) => error!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,21 +41,21 @@ impl GroupOpt {
|
||||||
let client = gcopt.copt.to_client();
|
let client = gcopt.copt.to_client();
|
||||||
match client.idm_group_create(gcopt.name.as_str()) {
|
match client.idm_group_create(gcopt.name.as_str()) {
|
||||||
Err(e) => error!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
Ok(_) => info!("Successfully created group '{}'", gcopt.name.as_str()),
|
Ok(_) => println!("Successfully created group '{}'", gcopt.name.as_str()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GroupOpt::Delete(gcopt) => {
|
GroupOpt::Delete(gcopt) => {
|
||||||
let client = gcopt.copt.to_client();
|
let client = gcopt.copt.to_client();
|
||||||
match client.idm_group_delete(gcopt.name.as_str()) {
|
match client.idm_group_delete(gcopt.name.as_str()) {
|
||||||
Err(e) => error!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
Ok(_) => info!("Successfully deleted group {}", gcopt.name.as_str()),
|
Ok(_) => println!("Successfully deleted group {}", gcopt.name.as_str()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GroupOpt::PurgeMembers(gcopt) => {
|
GroupOpt::PurgeMembers(gcopt) => {
|
||||||
let client = gcopt.copt.to_client();
|
let client = gcopt.copt.to_client();
|
||||||
match client.idm_group_purge_members(gcopt.name.as_str()) {
|
match client.idm_group_purge_members(gcopt.name.as_str()) {
|
||||||
Err(e) => error!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
Ok(_) => info!(
|
Ok(_) => println!(
|
||||||
"Successfully purged members of group {}",
|
"Successfully purged members of group {}",
|
||||||
gcopt.name.as_str()
|
gcopt.name.as_str()
|
||||||
),
|
),
|
||||||
|
@ -64,8 +64,8 @@ impl GroupOpt {
|
||||||
GroupOpt::ListMembers(gcopt) => {
|
GroupOpt::ListMembers(gcopt) => {
|
||||||
let client = gcopt.copt.to_client();
|
let client = gcopt.copt.to_client();
|
||||||
match client.idm_group_get_members(gcopt.name.as_str()) {
|
match client.idm_group_get_members(gcopt.name.as_str()) {
|
||||||
Ok(Some(groups)) => groups.iter().for_each(|m| info!("{:?}", m)),
|
Ok(Some(groups)) => groups.iter().for_each(|m| println!("{:?}", m)),
|
||||||
Ok(None) => info!("No members in group {}", gcopt.name.as_str()),
|
Ok(None) => warn!("No members in group {}", gcopt.name.as_str()),
|
||||||
Err(e) => error!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ impl GroupOpt {
|
||||||
|
|
||||||
match client.idm_group_add_members(gcopt.name.as_str(), &new_members) {
|
match client.idm_group_add_members(gcopt.name.as_str(), &new_members) {
|
||||||
Err(e) => error!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
Ok(_) => info!("Successfully added members to {}", gcopt.name.as_str()),
|
Ok(_) => warn!("Successfully added members to {}", gcopt.name.as_str()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ impl GroupOpt {
|
||||||
|
|
||||||
match client.idm_group_remove_members(gcopt.name.as_str(), &remove_members) {
|
match client.idm_group_remove_members(gcopt.name.as_str(), &remove_members) {
|
||||||
Err(e) => error!("Failed to remove members -> {:?}", e),
|
Err(e) => error!("Failed to remove members -> {:?}", e),
|
||||||
Ok(_) => info!("Successfully removed members from {}", gcopt.name.as_str()),
|
Ok(_) => println!("Successfully removed members from {}", gcopt.name.as_str()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,14 +95,14 @@ impl GroupOpt {
|
||||||
|
|
||||||
match client.idm_group_set_members(gcopt.name.as_str(), &new_members) {
|
match client.idm_group_set_members(gcopt.name.as_str(), &new_members) {
|
||||||
Err(e) => error!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
Ok(_) => info!("Successfully set members for group {}", gcopt.name.as_str()),
|
Ok(_) => println!("Successfully set members for group {}", gcopt.name.as_str()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GroupOpt::Posix(gpopt) => match gpopt {
|
GroupOpt::Posix(gpopt) => match gpopt {
|
||||||
GroupPosix::Show(gcopt) => {
|
GroupPosix::Show(gcopt) => {
|
||||||
let client = gcopt.copt.to_client();
|
let client = gcopt.copt.to_client();
|
||||||
match client.idm_group_unix_token_get(gcopt.name.as_str()) {
|
match client.idm_group_unix_token_get(gcopt.name.as_str()) {
|
||||||
Ok(token) => info!("{}", token),
|
Ok(token) => println!("{}", token),
|
||||||
Err(e) => error!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ impl GroupOpt {
|
||||||
let client = gcopt.copt.to_client();
|
let client = gcopt.copt.to_client();
|
||||||
match client.idm_group_unix_extend(gcopt.name.as_str(), gcopt.gidnumber) {
|
match client.idm_group_unix_extend(gcopt.name.as_str(), gcopt.gidnumber) {
|
||||||
Err(e) => error!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
Ok(_) => info!(
|
Ok(_) => println!(
|
||||||
"Success adding POSIX configuration for group {}",
|
"Success adding POSIX configuration for group {}",
|
||||||
gcopt.name.as_str()
|
gcopt.name.as_str()
|
||||||
),
|
),
|
||||||
|
|
|
@ -13,16 +13,33 @@
|
||||||
use kanidm_cli::KanidmClientOpt;
|
use kanidm_cli::KanidmClientOpt;
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
|
|
||||||
|
use tracing_subscriber::prelude::*;
|
||||||
|
use tracing_subscriber::{fmt, EnvFilter};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let opt = KanidmClientOpt::from_args();
|
let opt = KanidmClientOpt::from_args();
|
||||||
|
|
||||||
if opt.debug() {
|
let fmt_layer = fmt::layer().with_writer(std::io::stderr);
|
||||||
::std::env::set_var(
|
|
||||||
"RUST_LOG",
|
let filter_layer = if opt.debug() {
|
||||||
"kanidm=debug,kanidm_client=debug,webauthn=debug",
|
match EnvFilter::try_new("kanidm=debug,kanidm_client=debug,webauthn=debug") {
|
||||||
);
|
Ok(f) => f,
|
||||||
}
|
Err(e) => {
|
||||||
tracing_subscriber::fmt::init();
|
eprintln!("ERROR! Unable to start tracing {:?}", e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
match EnvFilter::try_from_default_env() {
|
||||||
|
Ok(f) => f,
|
||||||
|
Err(_) => EnvFilter::new("kanidm_client=warn"),
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
tracing_subscriber::registry()
|
||||||
|
.with(filter_layer)
|
||||||
|
.with(fmt_layer)
|
||||||
|
.init();
|
||||||
|
|
||||||
opt.exec()
|
opt.exec()
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ impl Oauth2Opt {
|
||||||
let client = copt.to_client();
|
let client = copt.to_client();
|
||||||
match client.idm_oauth2_rs_list() {
|
match client.idm_oauth2_rs_list() {
|
||||||
Ok(r) => r.iter().for_each(|ent| println!("{}", ent)),
|
Ok(r) => r.iter().for_each(|ent| println!("{}", ent)),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Oauth2Opt::Get(nopt) => {
|
Oauth2Opt::Get(nopt) => {
|
||||||
|
@ -32,7 +32,7 @@ impl Oauth2Opt {
|
||||||
match client.idm_oauth2_rs_get(nopt.name.as_str()) {
|
match client.idm_oauth2_rs_get(nopt.name.as_str()) {
|
||||||
Ok(Some(e)) => println!("{}", e),
|
Ok(Some(e)) => println!("{}", e),
|
||||||
Ok(None) => println!("No matching entries"),
|
Ok(None) => println!("No matching entries"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Oauth2Opt::CreateBasic(cbopt) => {
|
Oauth2Opt::CreateBasic(cbopt) => {
|
||||||
|
@ -43,7 +43,7 @@ impl Oauth2Opt {
|
||||||
cbopt.origin.as_str(),
|
cbopt.origin.as_str(),
|
||||||
) {
|
) {
|
||||||
Ok(_) => println!("Success"),
|
Ok(_) => println!("Success"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Oauth2Opt::SetImplictScopes(cbopt) => {
|
Oauth2Opt::SetImplictScopes(cbopt) => {
|
||||||
|
@ -59,7 +59,7 @@ impl Oauth2Opt {
|
||||||
false,
|
false,
|
||||||
) {
|
) {
|
||||||
Ok(_) => println!("Success"),
|
Ok(_) => println!("Success"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Oauth2Opt::CreateScopeMap(cbopt) => {
|
Oauth2Opt::CreateScopeMap(cbopt) => {
|
||||||
|
@ -70,7 +70,7 @@ impl Oauth2Opt {
|
||||||
cbopt.scopes.iter().map(|s| s.as_str()).collect(),
|
cbopt.scopes.iter().map(|s| s.as_str()).collect(),
|
||||||
) {
|
) {
|
||||||
Ok(_) => println!("Success"),
|
Ok(_) => println!("Success"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Oauth2Opt::DeleteScopeMap(cbopt) => {
|
Oauth2Opt::DeleteScopeMap(cbopt) => {
|
||||||
|
@ -79,7 +79,7 @@ impl Oauth2Opt {
|
||||||
.idm_oauth2_rs_delete_scope_map(cbopt.nopt.name.as_str(), cbopt.group.as_str())
|
.idm_oauth2_rs_delete_scope_map(cbopt.nopt.name.as_str(), cbopt.group.as_str())
|
||||||
{
|
{
|
||||||
Ok(_) => println!("Success"),
|
Ok(_) => println!("Success"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Oauth2Opt::ResetSecrets(cbopt) => {
|
Oauth2Opt::ResetSecrets(cbopt) => {
|
||||||
|
@ -95,42 +95,42 @@ impl Oauth2Opt {
|
||||||
true,
|
true,
|
||||||
) {
|
) {
|
||||||
Ok(_) => println!("Success"),
|
Ok(_) => println!("Success"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Oauth2Opt::Delete(nopt) => {
|
Oauth2Opt::Delete(nopt) => {
|
||||||
let client = nopt.copt.to_client();
|
let client = nopt.copt.to_client();
|
||||||
match client.idm_oauth2_rs_delete(nopt.name.as_str()) {
|
match client.idm_oauth2_rs_delete(nopt.name.as_str()) {
|
||||||
Ok(_) => println!("Success"),
|
Ok(_) => println!("Success"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Oauth2Opt::EnablePkce(nopt) => {
|
Oauth2Opt::EnablePkce(nopt) => {
|
||||||
let client = nopt.copt.to_client();
|
let client = nopt.copt.to_client();
|
||||||
match client.idm_oauth2_rs_enable_pkce(nopt.name.as_str()) {
|
match client.idm_oauth2_rs_enable_pkce(nopt.name.as_str()) {
|
||||||
Ok(_) => println!("Success"),
|
Ok(_) => println!("Success"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Oauth2Opt::DisablePkce(nopt) => {
|
Oauth2Opt::DisablePkce(nopt) => {
|
||||||
let client = nopt.copt.to_client();
|
let client = nopt.copt.to_client();
|
||||||
match client.idm_oauth2_rs_disable_pkce(nopt.name.as_str()) {
|
match client.idm_oauth2_rs_disable_pkce(nopt.name.as_str()) {
|
||||||
Ok(_) => println!("Success"),
|
Ok(_) => println!("Success"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Oauth2Opt::EnableLegacyCrypto(nopt) => {
|
Oauth2Opt::EnableLegacyCrypto(nopt) => {
|
||||||
let client = nopt.copt.to_client();
|
let client = nopt.copt.to_client();
|
||||||
match client.idm_oauth2_rs_enable_legacy_crypto(nopt.name.as_str()) {
|
match client.idm_oauth2_rs_enable_legacy_crypto(nopt.name.as_str()) {
|
||||||
Ok(_) => println!("Success"),
|
Ok(_) => println!("Success"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Oauth2Opt::DisableLegacyCrypto(nopt) => {
|
Oauth2Opt::DisableLegacyCrypto(nopt) => {
|
||||||
let client = nopt.copt.to_client();
|
let client = nopt.copt.to_client();
|
||||||
match client.idm_oauth2_rs_disable_legacy_crypto(nopt.name.as_str()) {
|
match client.idm_oauth2_rs_disable_legacy_crypto(nopt.name.as_str()) {
|
||||||
Ok(_) => println!("Success"),
|
Ok(_) => println!("Success"),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,14 +34,14 @@ impl RawOpt {
|
||||||
let filter: Filter = match serde_json::from_str(sopt.filter.as_str()) {
|
let filter: Filter = match serde_json::from_str(sopt.filter.as_str()) {
|
||||||
Ok(f) => f,
|
Ok(f) => f,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
match client.search(filter) {
|
match client.search(filter) {
|
||||||
Ok(rset) => rset.iter().for_each(|e| println!("{}", e)),
|
Ok(rset) => rset.iter().for_each(|e| println!("{}", e)),
|
||||||
Err(e) => eprintln!("Error -> {:?}", e),
|
Err(e) => error!("Error -> {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RawOpt::Create(copt) => {
|
RawOpt::Create(copt) => {
|
||||||
|
@ -50,7 +50,7 @@ impl RawOpt {
|
||||||
let r_entries: Vec<BTreeMap<String, Vec<String>>> = match read_file(&copt.file) {
|
let r_entries: Vec<BTreeMap<String, Vec<String>>> = match read_file(&copt.file) {
|
||||||
Ok(r) => r,
|
Ok(r) => r,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -58,7 +58,7 @@ impl RawOpt {
|
||||||
let entries = r_entries.into_iter().map(|b| Entry { attrs: b }).collect();
|
let entries = r_entries.into_iter().map(|b| Entry { attrs: b }).collect();
|
||||||
|
|
||||||
if let Err(e) = client.create(entries) {
|
if let Err(e) = client.create(entries) {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RawOpt::Modify(mopt) => {
|
RawOpt::Modify(mopt) => {
|
||||||
|
@ -67,7 +67,7 @@ impl RawOpt {
|
||||||
let filter: Filter = match serde_json::from_str(mopt.filter.as_str()) {
|
let filter: Filter = match serde_json::from_str(mopt.filter.as_str()) {
|
||||||
Ok(f) => f,
|
Ok(f) => f,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -75,14 +75,14 @@ impl RawOpt {
|
||||||
let r_list: Vec<Modify> = match read_file(&mopt.file) {
|
let r_list: Vec<Modify> = match read_file(&mopt.file) {
|
||||||
Ok(r) => r,
|
Ok(r) => r,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let modlist = ModifyList::new_list(r_list);
|
let modlist = ModifyList::new_list(r_list);
|
||||||
if let Err(e) = client.modify(filter, modlist) {
|
if let Err(e) = client.modify(filter, modlist) {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RawOpt::Delete(dopt) => {
|
RawOpt::Delete(dopt) => {
|
||||||
|
@ -90,13 +90,13 @@ impl RawOpt {
|
||||||
let filter: Filter = match serde_json::from_str(dopt.filter.as_str()) {
|
let filter: Filter = match serde_json::from_str(dopt.filter.as_str()) {
|
||||||
Ok(f) => f,
|
Ok(f) => f,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if let Err(e) = client.delete(filter) {
|
if let Err(e) = client.delete(filter) {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ impl RecycleOpt {
|
||||||
match client.recycle_bin_list() {
|
match client.recycle_bin_list() {
|
||||||
Ok(r) => r.iter().for_each(|e| println!("{}", e)),
|
Ok(r) => r.iter().for_each(|e| println!("{}", e)),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,14 +26,14 @@ impl RecycleOpt {
|
||||||
Ok(Some(e)) => println!("{}", e),
|
Ok(Some(e)) => println!("{}", e),
|
||||||
Ok(None) => println!("No matching entries"),
|
Ok(None) => println!("No matching entries"),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RecycleOpt::Revive(nopt) => {
|
RecycleOpt::Revive(nopt) => {
|
||||||
let client = nopt.copt.to_client();
|
let client = nopt.copt.to_client();
|
||||||
if let Err(e) = client.recycle_bin_revive(nopt.name.as_str()) {
|
if let Err(e) = client.recycle_bin_revive(nopt.name.as_str()) {
|
||||||
eprintln!("Error -> {:?}", e);
|
error!("Error -> {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,7 +127,7 @@ fn get_index_choice_dialoguer(msg: &str, options: &[String]) -> usize {
|
||||||
|
|
||||||
let selection = match user_select {
|
let selection = match user_select {
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
eprintln!("Failed to handle user input: {:?}", error);
|
error!("Failed to handle user input: {:?}", error);
|
||||||
std::process::exit(1);
|
std::process::exit(1);
|
||||||
}
|
}
|
||||||
Ok(value) => value,
|
Ok(value) => value,
|
||||||
|
@ -158,7 +158,7 @@ impl LoginOpt {
|
||||||
let mut backup_code = String::new();
|
let mut backup_code = String::new();
|
||||||
loop {
|
loop {
|
||||||
if let Err(e) = io::stdin().read_line(&mut backup_code) {
|
if let Err(e) = io::stdin().read_line(&mut backup_code) {
|
||||||
eprintln!("Failed to read from stdin -> {:?}", e);
|
error!("Failed to read from stdin -> {:?}", e);
|
||||||
return Err(ClientError::SystemError);
|
return Err(ClientError::SystemError);
|
||||||
};
|
};
|
||||||
if !backup_code.trim().is_empty() {
|
if !backup_code.trim().is_empty() {
|
||||||
|
@ -173,11 +173,11 @@ impl LoginOpt {
|
||||||
print!("Enter TOTP: ");
|
print!("Enter TOTP: ");
|
||||||
// We flush stdout so it'll write the buffer to screen, continuing operation. Without it, the application halts.
|
// We flush stdout so it'll write the buffer to screen, continuing operation. Without it, the application halts.
|
||||||
if let Err(e) = io::stdout().flush() {
|
if let Err(e) = io::stdout().flush() {
|
||||||
eprintln!("Somehow we failed to flush stdout: {:?}", e);
|
error!("Somehow we failed to flush stdout: {:?}", e);
|
||||||
};
|
};
|
||||||
let mut buffer = String::new();
|
let mut buffer = String::new();
|
||||||
if let Err(e) = io::stdin().read_line(&mut buffer) {
|
if let Err(e) = io::stdin().read_line(&mut buffer) {
|
||||||
eprintln!("Failed to read from stdin -> {:?}", e);
|
error!("Failed to read from stdin -> {:?}", e);
|
||||||
return Err(ClientError::SystemError);
|
return Err(ClientError::SystemError);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -360,7 +360,7 @@ impl LogoutOpt {
|
||||||
_tmp_username = match prompt_for_username_get_username() {
|
_tmp_username = match prompt_for_username_get_username() {
|
||||||
Ok(value) => value,
|
Ok(value) => value,
|
||||||
Err(msg) => {
|
Err(msg) => {
|
||||||
eprintln!("{}", msg);
|
error!("{}", msg);
|
||||||
std::process::exit(1);
|
std::process::exit(1);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -379,9 +379,9 @@ impl LogoutOpt {
|
||||||
error!("Error persisting authentication token store");
|
error!("Error persisting authentication token store");
|
||||||
std::process::exit(1);
|
std::process::exit(1);
|
||||||
};
|
};
|
||||||
info!("Removed session for {}", username);
|
println!("Removed session for {}", username);
|
||||||
} else {
|
} else {
|
||||||
info!("No sessions for {}", username);
|
println!("No sessions for {}", username);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue