// Copyright (c) 2010 Martin Knafve / hMailServer.com. // http://www.hmailserver.com #include "stdafx.h" #include "InterfaceDomain.h" #include "InterfaceDomain.h" #include "InterfaceAccounts.h" #include "InterfaceAliases.h" #include "InterfaceDomainAliases.h" #include "InterfaceDistributionLists.h" #include "../Common/Bo/Accounts.h" #include "../Common/Bo/DistributionLists.h" #include "../Common/Bo/Domain.h" #include "../Common/Bo/DomainAliases.h" #include "../Common/BO/Domains.h" #include "../Common/persistence/PersistentDomain.h" #include "../Common/persistence/PersistenceMode.h" #include "InterfaceDomains.h" #include "COMAuthentication.h" #include "COMError.h" #ifdef _DEBUG long InterfaceDomain::counter = 0; #endif STDMETHODIMP InterfaceDomain::InterfaceSupportsErrorInfo(REFIID riid) { static const IID* arr[] = { &IID_IInterfaceDomain, }; for (int i=0;i pAuthentication) { authentication_ = pAuthentication; } STDMETHODIMP InterfaceDomain::get_ID(long *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = (long) object_->GetID(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_Name(BSTR *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetName().AllocSysString(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_Name(BSTR newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); HM::String sName = newVal; sName.Trim(); object_->SetName(sName); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_Postmaster(BSTR *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetPostmaster().AllocSysString(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_Postmaster(BSTR newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetPostmaster(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_ADDomainName(BSTR *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetADDomainName().AllocSysString(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_ADDomainName(BSTR newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); // Set the active directory domain name object_->SetADDomainName(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::Save() { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); // Save object in the database. HM::String sErrorMessage; if (HM::PersistentDomain::SaveObject(object_, sErrorMessage, HM::PersistenceModeNormal)) { // Add to parent collection AddToParentCollection(); return S_OK; } return COMError::GenerateError("Failed to save object. " + sErrorMessage); } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_Active(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); if (object_->GetIsActive()) *pVal = VARIANT_TRUE; else *pVal = VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_Active(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); if (newVal == VARIANT_TRUE) object_->SetIsActive(true); else object_->SetIsActive(false); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_PlusAddressingEnabled(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetUsePlusAddressing() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_PlusAddressingEnabled(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetUsePlusAddressing(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_Accounts(IInterfaceAccounts **pVal) { try { if (!object_) return GetAccessDenied(); CComObject* pItem = new CComObject(); pItem->SetAuthentication(authentication_); std::shared_ptr pAccounts; if (authentication_->GetIsDomainAdmin()) pAccounts = object_->GetAccounts(); else pAccounts = object_->GetAccounts(authentication_->GetAccountID()); if (pAccounts) { pItem->SetAuthentication(authentication_); pItem->Attach(pAccounts); pItem->SetDomain(object_->GetID()); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::Delete() { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); if (!parent_collection_) return HM::PersistentDomain::DeleteObject(object_) ? S_OK : S_FALSE; parent_collection_->DeleteItemByDBID(object_->GetID()); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::SynchronizeDirectory() { try { if (!object_) return GetAccessDenied(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_Aliases(IInterfaceAliases **pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); CComObject* pItem = new CComObject(); pItem->SetAuthentication(authentication_); std::shared_ptr pAliases = object_->GetAliases(); pAliases->Refresh(); if (pAliases) { pItem->Attach(pAliases); pItem->SetDomain(object_->GetID()); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_DomainAliases(IInterfaceDomainAliases **pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); CComObject* pItem = new CComObject(); pItem->SetAuthentication(authentication_); std::shared_ptr pDA = std::shared_ptr(new HM::DomainAliases(object_->GetID())); if (pDA) { // Refresh the collection from the database. pDA->Refresh(); pItem->Attach(pDA); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_DistributionLists(IInterfaceDistributionLists **pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); CComObject* pItem = new CComObject(); pItem->SetAuthentication(authentication_); std::shared_ptr pDistLists = object_->GetDistributionLists(); pDistLists->Refresh(); if (pDistLists) { pItem->Attach(pDistLists); pItem->SetDomain(object_->GetID()); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_MaxMessageSize(long *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetMaxMessageSize(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_MaxMessageSize(long pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); object_->SetMaxMessageSize(pVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_MaxSize(long *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetMaxSizeMB(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_MaxSize(long pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); object_->SetMaxSizeMB(pVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_Size(long *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = HM::PersistentDomain::GetSize(object_); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_AllocatedSize(hyper *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = HM::PersistentDomain::GetAllocatedSize(object_); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_PlusAddressingCharacter(BSTR *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetPlusAddressingChar().AllocSysString(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_PlusAddressingCharacter(BSTR newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetPlusAddressingChar(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_AntiSpamEnableGreylisting(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetASUseGreyListing() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_AntiSpamEnableGreylisting(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetASUseGreyListing(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_SignatureEnabled(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetEnableSignature() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_SignatureEnabled(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetEnableSignature(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_SignatureMethod(eDomainSignatureMethod *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = (eDomainSignatureMethod) object_->GetSignatureMethod(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_SignatureMethod(eDomainSignatureMethod newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetSignatureMethod((HM::Domain::DomainSignatureMethod) newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_SignaturePlainText(BSTR *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetSignaturePlainText().AllocSysString(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_SignaturePlainText(BSTR newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetSignaturePlainText(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_SignatureHTML(BSTR *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetSignatureHTML().AllocSysString(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_SignatureHTML(BSTR newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetSignatureHTML(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_AddSignaturesToReplies(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetAddSignaturesToReplies() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_AddSignaturesToReplies(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetAddSignaturesToReplies(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_AddSignaturesToLocalMail(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetAddSignaturesToLocalMail() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_AddSignaturesToLocalMail(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetAddSignaturesToLocalMail(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_MaxNumberOfAccounts(long *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied();; *pVal = object_->GetMaxNoOfAccounts(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_MaxNumberOfAccounts(long pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); object_->SetMaxNoOfAccounts(pVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_MaxNumberOfAliases(long *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetMaxNoOfAliases(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_MaxNumberOfAliases(long pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); object_->SetMaxNoOfAliases(pVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_MaxNumberOfDistributionLists(long *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetMaxNoOfDistributionLists(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_MaxNumberOfDistributionLists(long pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); object_->SetMaxNoOfDistributionLists(pVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_MaxAccountSize(long *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetMaxAccountSize(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_MaxAccountSize(long pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); object_->SetMaxAccountSize(pVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_MaxNumberOfAccountsEnabled(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied();; *pVal = object_->GetMaxNoOfAccountsEnabled() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_MaxNumberOfAccountsEnabled(VARIANT_BOOL pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); object_->SetMaxNoOfAccountsEnabled(pVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_MaxNumberOfAliasesEnabled(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetMaxNoOfAliasesEnabled() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_MaxNumberOfAliasesEnabled(VARIANT_BOOL pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); object_->SetMaxNoOfAliasesEnabled(pVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_MaxNumberOfDistributionListsEnabled(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetMaxNoOfDistributionListsEnabled() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_MaxNumberOfDistributionListsEnabled(VARIANT_BOOL pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); object_->SetMaxNoOfDistributionListsEnabled(pVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_DKIMSignEnabled(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetDKIMEnabled() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_DKIMSignEnabled(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetDKIMEnabled(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_DKIMSelector(BSTR *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetDKIMSelector().AllocSysString(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_DKIMSelector(BSTR newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetDKIMSelector(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_DKIMPrivateKeyFile(BSTR *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = object_->GetDKIMPrivateKeyFile().AllocSysString(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_DKIMPrivateKeyFile(BSTR newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetDKIMPrivateKeyFile(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_DKIMHeaderCanonicalizationMethod(eDKIMCanonicalizationMethod *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = (eDKIMCanonicalizationMethod)object_->GetDKIMHeaderCanonicalizationMethod(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_DKIMHeaderCanonicalizationMethod(eDKIMCanonicalizationMethod newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetDKIMHeaderCanonicalizationMethod(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_DKIMBodyCanonicalizationMethod(eDKIMCanonicalizationMethod *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = (eDKIMCanonicalizationMethod)object_->GetDKIMBodyCanonicalizationMethod(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_DKIMBodyCanonicalizationMethod(eDKIMCanonicalizationMethod newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetDKIMBodyCanonicalizationMethod(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::get_DKIMSigningAlgorithm(eDKIMAlgorithm *pVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); *pVal = (eDKIMAlgorithm) object_->GetDKIMSigningAlgorithm(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceDomain::put_DKIMSigningAlgorithm(eDKIMAlgorithm newVal) { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsDomainAdmin()) return authentication_->GetAccessDenied(); object_->SetDKIMSigningAlgorithm(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }