diff --git a/proxmox-subscription/src/check.rs b/proxmox-subscription/src/check.rs index f50679f6..8ff9e1a8 100644 --- a/proxmox-subscription/src/check.rs +++ b/proxmox-subscription/src/check.rs @@ -49,11 +49,11 @@ fn register_subscription>( fn parse_status(value: &str) -> SubscriptionStatus { match value.to_lowercase().as_str() { - "active" => SubscriptionStatus::ACTIVE, - "new" => SubscriptionStatus::NEW, - "notfound" => SubscriptionStatus::NOTFOUND, - "invalid" => SubscriptionStatus::INVALID, - _ => SubscriptionStatus::INVALID, + "active" => SubscriptionStatus::Active, + "new" => SubscriptionStatus::New, + "notfound" => SubscriptionStatus::NotFound, + "invalid" => SubscriptionStatus::Invalid, + _ => SubscriptionStatus::Invalid, } } @@ -67,7 +67,7 @@ fn parse_register_response( ) -> Result { let mut info = SubscriptionInfo { key: Some(key), - status: SubscriptionStatus::NOTFOUND, + status: SubscriptionStatus::NotFound, checktime: Some(checktime), url: Some(product_url), ..Default::default() @@ -97,7 +97,7 @@ fn parse_register_response( } } - if let SubscriptionStatus::ACTIVE = info.status { + if let SubscriptionStatus::Active = info.status { let response_raw = format!("{}{}", SHARED_KEY_DATA, challenge); let expected = hex::encode(md5sum(response_raw.as_bytes())?); @@ -148,7 +148,7 @@ fn test_parse_register_response() -> Result<(), Error> { SubscriptionInfo { key: Some(key), serverid: Some(server_id), - status: SubscriptionStatus::ACTIVE, + status: SubscriptionStatus::Active, checktime: Some(checktime), url: Some("https://www.proxmox.com/en/proxmox-backup-server/pricing".into()), message: None, diff --git a/proxmox-subscription/src/files.rs b/proxmox-subscription/src/files.rs index 25fba547..5ab5301b 100644 --- a/proxmox-subscription/src/files.rs +++ b/proxmox-subscription/src/files.rs @@ -53,7 +53,7 @@ fn parse_subscription_file(raw: &str) -> Result, Error> let pbs_csum = calc_csum(&encoded)?; if checksum != pbs_csum.as_ref() && checksum != pve_csum.as_ref() { return Ok(Some(SubscriptionInfo { - status: SubscriptionStatus::INVALID, + status: SubscriptionStatus::Invalid, message: Some("checksum mismatch".to_string()), ..info })); @@ -62,7 +62,7 @@ fn parse_subscription_file(raw: &str) -> Result, Error> match info.key { Some(ref info_key) if info_key != key => { return Ok(Some(SubscriptionInfo { - status: SubscriptionStatus::INVALID, + status: SubscriptionStatus::Invalid, message: Some("subscription key mismatch".to_string()), ..info })) @@ -109,7 +109,7 @@ pub fn write_subscription>( ) -> Result<(), Error> { let raw = if info.key == None || info.checktime == None { String::new() - } else if let SubscriptionStatus::NEW = info.status { + } else if let SubscriptionStatus::New = info.status { format!("{}\n", info.key.as_ref().unwrap()) } else { let encoded = base64::encode(serde_json::to_string(&info)?); @@ -167,7 +167,7 @@ fn test_pve_compat() { let content = "pve4t-123456789a\nNx5qaBSAwkhF/o39/zPAeA\neyJrZXkiOiJwdmU0dC0xMjM0NTY3ODlhIiwibmV4dGR1ZWRhdGUiOiIwMDAwLTAwLTAwIiwic3Rh\ndHVzIjoiQWN0aXZlIiwidmFsaWRkaXJlY3RvcnkiOiI4MzAwMDAwMDAxMjM0NTY3ODlBQkNERUYw\nMDAwMDA0MiIsImNoZWNrdGltZSI6MTYwMDAwMDAwMCwicHJvZHVjdG5hbWUiOiJQcm94bW94IFZF\nIEZyZWUgVHJpYWwgU3Vic2NyaXB0aW9uIDEyIE1vbnRocyAoNCBDUFVzKSIsInJlZ2RhdGUiOiIy\nMDIyLTA0LTA3IDAwOjAwOjAwIn0="; let expected = SubscriptionInfo { - status: SubscriptionStatus::ACTIVE, + status: SubscriptionStatus::Active, serverid: Some("830000000123456789ABCDEF00000042".to_string()), checktime: Some(1600000000), key: Some("pve4t-123456789a".to_string()), @@ -195,7 +195,7 @@ fn test_pbs_compat() { let expected = SubscriptionInfo { key: Some("pbst-123456789a".to_string()), serverid: Some("830000000123456789ABCDEF00000042".to_string()), - status: SubscriptionStatus::ACTIVE, + status: SubscriptionStatus::Active, checktime: Some(1600000000), url: Some("https://www.proxmox.com/en/proxmox-backup-server/pricing".into()), message: None, diff --git a/proxmox-subscription/src/subscription_info.rs b/proxmox-subscription/src/subscription_info.rs index 32a2f11c..bce90e80 100644 --- a/proxmox-subscription/src/subscription_info.rs +++ b/proxmox-subscription/src/subscription_info.rs @@ -24,29 +24,29 @@ pub enum SubscriptionStatus { // FIXME: remove? /// newly set subscription, not yet checked #[serde(alias = "New")] - NEW, + New, /// no subscription set #[serde(alias = "Notfound")] - NOTFOUND, + NotFound, /// subscription set and active #[serde(alias = "Active")] - ACTIVE, + Active, /// subscription set but invalid for this server #[serde(alias = "Invalid")] - INVALID, + Invalid, } impl Default for SubscriptionStatus { fn default() -> Self { - SubscriptionStatus::NOTFOUND + SubscriptionStatus::NotFound } } impl std::fmt::Display for SubscriptionStatus { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - SubscriptionStatus::NEW => write!(f, "New"), - SubscriptionStatus::NOTFOUND => write!(f, "NotFound"), - SubscriptionStatus::ACTIVE => write!(f, "Active"), - SubscriptionStatus::INVALID => write!(f, "Invalid"), + SubscriptionStatus::New => write!(f, "New"), + SubscriptionStatus::NotFound => write!(f, "NotFound"), + SubscriptionStatus::Active => write!(f, "Active"), + SubscriptionStatus::Invalid => write!(f, "Invalid"), } } } @@ -145,28 +145,28 @@ impl SubscriptionInfo { // allow some delta for DST changes or time syncs, 1.5h if age < -5400 { - self.status = SubscriptionStatus::INVALID; + self.status = SubscriptionStatus::Invalid; self.message = Some("last check date too far in the future".to_string()); self.signature = None; } else if age > cutoff { - if let SubscriptionStatus::ACTIVE = self.status { - self.status = SubscriptionStatus::INVALID; + if let SubscriptionStatus::Active = self.status { + self.status = SubscriptionStatus::Invalid; self.message = Some("subscription information too old".to_string()); self.signature = None; } } - if self.is_signed() && self.status == SubscriptionStatus::ACTIVE { + if self.is_signed() && self.status == SubscriptionStatus::Active { if let Some(next_due) = self.nextduedate.as_ref() { match parse_next_due(next_due.as_str()) { Ok(next_due) if now > next_due => { - self.status = SubscriptionStatus::INVALID; + self.status = SubscriptionStatus::Invalid; self.message = Some("subscription information too old".to_string()); self.signature = None; } Ok(_) => {} Err(err) => { - self.status = SubscriptionStatus::INVALID; + self.status = SubscriptionStatus::Invalid; self.message = Some(format!("Failed parsing 'nextduedate' - {err}")); self.signature = None; } @@ -182,17 +182,17 @@ impl SubscriptionInfo { pub fn check_server_id(&mut self) { match (self.serverid.as_ref(), get_hardware_address()) { (_, Err(err)) => { - self.status = SubscriptionStatus::INVALID; + self.status = SubscriptionStatus::Invalid; self.message = Some(format!("Failed to obtain server ID - {err}.")); self.signature = None; } (None, _) => { - self.status = SubscriptionStatus::INVALID; + self.status = SubscriptionStatus::Invalid; self.message = Some(format!("Missing server ID.")); self.signature = None; } (Some(contained), Ok(expected)) if &expected != contained => { - self.status = SubscriptionStatus::INVALID; + self.status = SubscriptionStatus::Invalid; self.message = Some("Server ID mismatch.".to_string()); self.signature = None; } @@ -218,7 +218,7 @@ impl SubscriptionInfo { if self.is_signed() { if let Err(err) = verify(&self) { - self.status = SubscriptionStatus::INVALID; + self.status = SubscriptionStatus::Invalid; self.message = Some(format!("Signature validation failed - {err}")); } }