use crate::update;
use serde::{Deserialize, Serialize};
use std::time::SystemTime;
use wmi::{COMLibrary, WMIConnection, WMIDateTime};
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct SoftwareLicensingProducts {
pub software_licensing_products: Vec<SoftwareLicensingProduct>,
pub last_updated: SystemTime,
}
update!(SoftwareLicensingProducts, software_licensing_products);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct SoftwareLicensingServices {
pub software_licensing_services: Vec<SoftwareLicensingService>,
pub last_updated: SystemTime,
}
update!(SoftwareLicensingServices, software_licensing_services);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct SoftwareLicensingTokenActivationLicenses {
pub software_licensing_token_activation_licenses: Vec<SoftwareLicensingTokenActivationLicense>,
pub last_updated: SystemTime,
}
update!(SoftwareLicensingTokenActivationLicenses, software_licensing_token_activation_licenses);
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct SoftwareLicensingProduct {
pub ID: Option<String>,
pub Name: Option<String>,
pub Description: Option<String>,
pub ApplicationID: Option<String>,
pub ProcessorURL: Option<String>,
pub MachineURL: Option<String>,
pub ProductKeyURL: Option<String>,
pub UseLicenseURL: Option<String>,
pub LicenseStatus: Option<u32>,
pub LicenseStatusReason: Option<u32>,
pub GracePeriodRemaining: Option<u32>,
pub EvaluationEndDate: Option<WMIDateTime>,
pub OfflineInstallationId: Option<String>,
pub PartialProductKey: Option<String>,
pub ProductKeyID: Option<String>,
pub LicenseFamily: Option<String>,
pub LicenseDependsOn: Option<String>,
pub LicenseIsAddon: Option<bool>,
pub VLActivationInterval: Option<u32>,
pub VLRenewalInterval: Option<u32>,
pub KeyManagementServiceProductKeyID: Option<String>,
pub KeyManagementServiceMachine: Option<String>,
pub KeyManagementServicePort: Option<u32>,
pub DiscoveredKeyManagementServiceMachineName: Option<String>,
pub DiscoveredKeyManagementServiceMachinePort: Option<u32>,
pub IsKeyManagementServiceMachine: Option<u32>,
pub KeyManagementServiceCurrentCount: Option<u32>,
pub RequiredClientCount: Option<u32>,
pub KeyManagementServiceUnlicensedRequests: Option<u32>,
pub KeyManagementServiceLicensedRequests: Option<u32>,
pub KeyManagementServiceOOBGraceRequests: Option<u32>,
pub KeyManagementServiceOOTGraceRequests: Option<u32>,
pub KeyManagementServiceNonGenuineGraceRequests: Option<u32>,
pub KeyManagementServiceTotalRequests: Option<u32>,
pub KeyManagementServiceFailedRequests: Option<u32>,
pub KeyManagementServiceNotificationRequests: Option<u32>,
pub GenuineStatus: Option<u32>,
pub ExtendedGrace: Option<u32>,
pub TokenActivationILID: Option<String>,
pub TokenActivationILVID: Option<u32>,
pub TokenActivationGrantNumber: Option<u32>,
pub TokenActivationCertificateThumbprint: Option<String>,
pub TokenActivationAdditionalInfo: Option<String>,
pub TrustedTime: Option<WMIDateTime>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct SoftwareLicensingService {
pub Version: Option<String>,
pub KeyManagementServiceMachine: Option<String>,
pub IsKeyManagementServiceMachine: Option<u32>,
pub VLActivationInterval: Option<u32>,
pub VLRenewalInterval: Option<u32>,
pub KeyManagementServiceCurrentCount: Option<u32>,
pub RequiredClientCount: Option<u32>,
pub KeyManagementServiceProductKeyID: Option<String>,
pub DiscoveredKeyManagementServiceMachineName: Option<String>,
pub DiscoveredKeyManagementServiceMachinePort: Option<u32>,
pub PolicyCacheRefreshRequired: Option<u32>,
pub ClientMachineID: Option<String>,
pub RemainingWindowsReArmCount: Option<u32>,
pub KeyManagementServiceListeningPort: Option<u32>,
pub KeyManagementServiceDnsPublishing: Option<bool>,
pub KeyManagementServiceLowPriority: Option<bool>,
pub KeyManagementServiceHostCaching: Option<bool>,
pub KeyManagementServiceUnlicensedRequests: Option<u32>,
pub KeyManagementServiceLicensedRequests: Option<u32>,
pub KeyManagementServiceOOBGraceRequests: Option<u32>,
pub KeyManagementServiceOOTGraceRequests: Option<u32>,
pub KeyManagementServiceNonGenuineGraceRequests: Option<u32>,
pub KeyManagementServiceTotalRequests: Option<u32>,
pub KeyManagementServiceFailedRequests: Option<u32>,
pub KeyManagementServiceNotificationRequests: Option<u32>,
pub TokenActivationILID: Option<String>,
pub TokenActivationILVID: Option<u32>,
pub TokenActivationGrantNumber: Option<u32>,
pub TokenActivationCertificateThumbprint: Option<String>,
pub TokenActivationAdditionalInfo: Option<String>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct SoftwareLicensingTokenActivationLicense {
pub ID: Option<String>,
pub ILID: Option<String>,
pub ILVID: Option<u32>,
pub AuthorizationStatus: Option<u32>,
pub ExpirationDate: Option<WMIDateTime>,
pub Description: Option<String>,
pub AdditionalInfo: Option<String>,
}