|
|
|
@ -23,10 +23,15 @@ use crate::{
|
|
|
|
|
RegionListResponse,
|
|
|
|
|
EmailUsageResponse,
|
|
|
|
|
EmailDomainListResponse,
|
|
|
|
|
EmailDomainAddResponse,
|
|
|
|
|
EmailDomainRemoveResponse,
|
|
|
|
|
EmailUserListResponse,
|
|
|
|
|
EmailUserAddResponse,
|
|
|
|
|
EmailUserRemoveResponse,
|
|
|
|
|
EmailUserSetPasswordResponse,
|
|
|
|
|
EmailAliasListResponse,
|
|
|
|
|
EmailAliasAddResponse,
|
|
|
|
|
EmailAliasRemoveResponse,
|
|
|
|
|
MonitorCheckListResponse,
|
|
|
|
|
MonitorCheckTypesResponse,
|
|
|
|
|
MonitorContactListResponse,
|
|
|
|
@ -82,6 +87,10 @@ pub enum ZoneSubArgs {
|
|
|
|
|
pub enum EmailDomainSubArgs {
|
|
|
|
|
/// `email domain list`
|
|
|
|
|
List(EmailDomainListRequest),
|
|
|
|
|
/// `email domain add`
|
|
|
|
|
Add(EmailDomainAddRequest),
|
|
|
|
|
/// `email domain remove`
|
|
|
|
|
Remove(EmailDomainRemoveRequest),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize, Debug, clap::Subcommand)]
|
|
|
|
@ -97,6 +106,17 @@ pub enum EmailUserSubArgs {
|
|
|
|
|
SetPassword(EmailUserSetPasswordRequest),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize, Debug, clap::Subcommand)]
|
|
|
|
|
/// All possible `email alias` subcommands.
|
|
|
|
|
pub enum EmailAliasSubArgs {
|
|
|
|
|
/// `email alias list`
|
|
|
|
|
List(EmailAliasListRequest),
|
|
|
|
|
/// `email alias add`
|
|
|
|
|
Add(EmailAliasAddRequest),
|
|
|
|
|
/// `email alias remove`
|
|
|
|
|
Remove(EmailAliasRemoveRequest),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize, Debug, clap::Subcommand)]
|
|
|
|
|
/// All possible `email` subcommands.
|
|
|
|
|
pub enum EmailSubArgs {
|
|
|
|
@ -108,6 +128,9 @@ pub enum EmailSubArgs {
|
|
|
|
|
#[clap(subcommand)]
|
|
|
|
|
/// `email user`
|
|
|
|
|
User(EmailUserSubArgs),
|
|
|
|
|
#[clap(subcommand)]
|
|
|
|
|
/// `email alias`
|
|
|
|
|
Alias(EmailAliasSubArgs)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize, Debug, clap::Subcommand)]
|
|
|
|
@ -314,10 +337,15 @@ impl Args {
|
|
|
|
|
Self::Region(RegionSubArgs::List(reg_list)) => print_req(reg_list)?,
|
|
|
|
|
Self::Email(EmailSubArgs::Usage(email_usage)) => print_req(email_usage)?,
|
|
|
|
|
Self::Email(EmailSubArgs::Domain(EmailDomainSubArgs::List(email_domain_list))) => print_req(email_domain_list)?,
|
|
|
|
|
Self::Email(EmailSubArgs::Domain(EmailDomainSubArgs::Add(email_domain_add_req))) => print_req(email_domain_add_req)?,
|
|
|
|
|
Self::Email(EmailSubArgs::Domain(EmailDomainSubArgs::Remove(email_domain_rem_req))) => print_req(email_domain_rem_req)?,
|
|
|
|
|
Self::Email(EmailSubArgs::User(EmailUserSubArgs::List(email_user_list))) => print_req(email_user_list)?,
|
|
|
|
|
Self::Email(EmailSubArgs::User(EmailUserSubArgs::Add(email_add_user_req))) => print_req(email_add_user_req)?,
|
|
|
|
|
Self::Email(EmailSubArgs::User(EmailUserSubArgs::Remove(email_del_req))) => print_req(email_del_req)?,
|
|
|
|
|
Self::Email(EmailSubArgs::User(EmailUserSubArgs::SetPassword(email_user_set_password))) => print_req(email_user_set_password)?,
|
|
|
|
|
Self::Email(EmailSubArgs::Alias(EmailAliasSubArgs::List(email_alias_list))) => print_req(email_alias_list)?,
|
|
|
|
|
Self::Email(EmailSubArgs::Alias(EmailAliasSubArgs::Add(email_alias_add))) => print_req(email_alias_add)?,
|
|
|
|
|
Self::Email(EmailSubArgs::Alias(EmailAliasSubArgs::Remove(email_alias_rem))) => print_req(email_alias_rem)?,
|
|
|
|
|
}
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|
|
|
|
@ -541,3 +569,44 @@ pub struct RecordRemoveRequest {
|
|
|
|
|
/// The ID of the DNS record to remove. See [`RecordListResponse`]
|
|
|
|
|
record_id: i32,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[lunanode_request(response="EmailDomainAddResponse", endpoint="email/domain-add/")]
|
|
|
|
|
/// Adds a new domain to Lunanode's email server.
|
|
|
|
|
pub struct EmailDomainAddRequest {
|
|
|
|
|
/// The domain name you would like to add mail service for.
|
|
|
|
|
name: String,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[lunanode_request(response="EmailDomainRemoveResponse", endpoint="email/domain-remove/")]
|
|
|
|
|
/// Removes a domain from Lunanode's email service.
|
|
|
|
|
pub struct EmailDomainRemoveRequest {
|
|
|
|
|
/// The domain id which should be removed. See: [`EmailDomainListRequest`]
|
|
|
|
|
domain_id: i32,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[lunanode_request(response="EmailAliasListResponse", endpoint="email/alias-list/")]
|
|
|
|
|
/// Show all aliases for a given domain's email.
|
|
|
|
|
pub struct EmailAliasListRequest {
|
|
|
|
|
/// The domain id for which the email alias records will be fetched. See: [`EmailDomainListRequest`]
|
|
|
|
|
domain_id: i32,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[lunanode_request(response="EmailAliasAddResponse", endpoint="email/alias-add/")]
|
|
|
|
|
/// Add an email alias or a catch-all address.
|
|
|
|
|
pub struct EmailAliasAddRequest {
|
|
|
|
|
/// The domain id for which the alias will be set on. See: [`EmailDomainListRequest`]
|
|
|
|
|
domain_id: i32,
|
|
|
|
|
/// The name of the alias XYZ@example.com (use a blank string here for a catch-all).
|
|
|
|
|
name: String,
|
|
|
|
|
/// The destination of the alias, which should be an existing address on the system.
|
|
|
|
|
target: String,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[lunanode_request(response="EmailAliasRemoveResponse", endpoint="email/alias-remove/")]
|
|
|
|
|
/// Remove an email alias.
|
|
|
|
|
pub struct EmailAliasRemoveRequest {
|
|
|
|
|
/// The domain id for which the email alias will be deletes.
|
|
|
|
|
domain_id: i32,
|
|
|
|
|
/// The alias id to delete.
|
|
|
|
|
alias_id: i32,
|
|
|
|
|
}
|
|
|
|
|