STDMETHODIMP InterfaceDomain::get_DistributionLists(IInterfaceDistributionLists **pVal) { try { if (!m_pObject) return GetAccessDenied(); if (!m_pAuthentication->GetIsDomainAdmin()) return m_pAuthentication->GetAccessDenied(); CComObject<InterfaceDistributionLists>* pItem = new CComObject<InterfaceDistributionLists>(); pItem->SetAuthentication(m_pAuthentication); shared_ptr<HM::DistributionLists> pDistLists = m_pObject->GetDistributionLists(); pDistLists->Refresh(); if (pDistLists) { pItem->Attach(pDistLists); pItem->SetDomain(m_pObject->GetID()); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceDistributionList::get_Recipients(IInterfaceDistributionListRecipients **pVal) { try { if (!m_pObject) return GetAccessDenied(); CComObject<InterfaceDistributionListRecipients>* pItem = new CComObject<InterfaceDistributionListRecipients>(); pItem->SetAuthentication(m_pAuthentication); pItem->SetListID(m_pObject->GetID()); shared_ptr<HM::DistributionListRecipients> pRecipients = m_pObject->GetMembers(); if (pRecipients) { pItem->Attach(pRecipients); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceBackupManager::LoadBackup(BSTR sXMLFile, IInterfaceBackup **pVal) { try { if (!m_pBackupManager) return GetAccessDenied(); CComObject<InterfaceBackup>* pBackupInt = new CComObject<InterfaceBackup>(); pBackupInt->SetAuthentication(m_pAuthentication); shared_ptr<HM::Backup> pBackup = m_pBackupManager->LoadBackup(sXMLFile); if (!pBackup) return DISP_E_BADINDEX; pBackupInt->Attach(pBackup); pBackupInt->AddRef(); *pVal = pBackupInt; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceApplication::get_Rules(IInterfaceRules **pVal) { try { if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); HRESULT hResult = EnsureDatabaseConnectivity_(); if (hResult != S_OK) return hResult; CComObject<InterfaceRules >* pItem = new CComObject<InterfaceRules >(); pItem->SetAuthentication(authentication_); std::shared_ptr<HM::Rules> pRules = std::shared_ptr<HM::Rules>(new HM::Rules(0)); if (pRules) { pRules->Refresh(); pItem->Attach(pRules); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceIMAPFolders::get_ItemByDBID(long DBID, IInterfaceIMAPFolder **pVal) { try { if (!m_pObject) return GetAccessDenied(); CComObject<InterfaceIMAPFolder>* pIMAPFolderInt = new CComObject<InterfaceIMAPFolder>(); pIMAPFolderInt->SetAuthentication(m_pAuthentication); shared_ptr<HM::IMAPFolder> pIMAPFolder = m_pObject->GetItemByDBID(DBID); if (!pIMAPFolder) return DISP_E_BADINDEX; pIMAPFolderInt->Attach(pIMAPFolder); pIMAPFolderInt->AttachParent(m_pObject, true); pIMAPFolderInt->AddRef(); *pVal = pIMAPFolderInt; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceIMAPFolders::get_ItemByName(BSTR sName, IInterfaceIMAPFolder **pVal) { try { if (!m_pObject) return GetAccessDenied(); CComObject<InterfaceIMAPFolder>* pIMAPFolderInt = new CComObject<InterfaceIMAPFolder>(); pIMAPFolderInt->SetAuthentication(m_pAuthentication); HM::String sUnicode (sName); HM::AnsiString sFolderName = HM::ModifiedUTF7::Encode(sUnicode); shared_ptr<HM::IMAPFolder> pIMAPFolder = m_pObject->GetFolderByName(sFolderName); if (!pIMAPFolder) return DISP_E_BADINDEX; pIMAPFolderInt->Attach(pIMAPFolder); pIMAPFolderInt->AttachParent(m_pObject, true); pIMAPFolderInt->AddRef(); *pVal = pIMAPFolderInt; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceIMAPFolder::get_SubFolders(IInterfaceIMAPFolders **pVal) { try { if (!m_pObject) return GetAccessDenied(); CComObject<InterfaceIMAPFolders>* pItem = new CComObject<InterfaceIMAPFolders >(); pItem->SetAuthentication(m_pAuthentication); boost::shared_ptr<HM::IMAPFolders> pFolders = m_pObject->GetSubFolders(); if (pFolders) { pItem->Attach(pFolders); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceMessage::get_Recipients(IInterfaceRecipients**pVal) { try { if (!m_pObject) return GetAccessDenied(); CComObject<InterfaceRecipients>* pItem = new CComObject<InterfaceRecipients>(); pItem->SetAuthentication(m_pAuthentication); shared_ptr<HM::Message> pMessage = _GetMessageData()->GetMessage(); if (pMessage) { pItem->Attach(pMessage); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceRule::get_Actions(IInterfaceRuleActions **pVal) { try { if (!m_pObject) return GetAccessDenied(); CComObject<InterfaceRuleActions>* pItem = new CComObject<InterfaceRuleActions >(); boost::shared_ptr<HM::RuleActions> pRuleActions = m_pObject->GetActions(); if (pRuleActions) { pItem->Attach(pRuleActions); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceDomain::get_DomainAliases(IInterfaceDomainAliases **pVal) { try { if (!m_pObject) return GetAccessDenied(); if (!m_pAuthentication->GetIsDomainAdmin()) return m_pAuthentication->GetAccessDenied(); CComObject<InterfaceDomainAliases>* pItem = new CComObject<InterfaceDomainAliases>(); pItem->SetAuthentication(m_pAuthentication); shared_ptr<HM::DomainAliases> pDA = shared_ptr<HM::DomainAliases>(new HM::DomainAliases(m_pObject->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 InterfaceAccount::get_IMAPFolders(IInterfaceIMAPFolders **pVal) { try { if (!m_pObject) return GetAccessDenied(); if (m_pObject->GetID() == 0) return DISP_E_BADINDEX; CComObject<InterfaceIMAPFolders>* pItem = new CComObject<InterfaceIMAPFolders >(); pItem->SetAuthentication(m_pAuthentication); shared_ptr<HM::IMAPFolders> pFolders = HM::IMAPFolderContainer::Instance()->GetFoldersForAccount(m_pObject->GetID()); if (pFolders) { pItem->Attach(pFolders); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceAccount::get_Rules(IInterfaceRules **pVal) { try { if (!m_pObject) return GetAccessDenied(); CComObject<InterfaceRules >* pItem = new CComObject<InterfaceRules >(); pItem->SetAuthentication(m_pAuthentication); shared_ptr<HM::Rules> pRules = m_pObject->GetRules(); if (pRules) { pItem->Attach(pRules); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceAccount::get_FetchAccounts(IInterfaceFetchAccounts **pVal) { try { if (!m_pObject) return GetAccessDenied(); CComObject<InterfaceFetchAccounts>* pItem = new CComObject<InterfaceFetchAccounts >(); pItem->SetAuthentication(m_pAuthentication); shared_ptr<HM::FetchAccounts> pFetchAccounts = shared_ptr<HM::FetchAccounts>(new HM::FetchAccounts(m_pObject->GetID())); pFetchAccounts->Refresh(); if (pFetchAccounts) { pItem->Attach(pFetchAccounts); pItem->AddRef(); *pVal = pItem; } return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceAccount::get_Messages(IInterfaceMessages **pVal) { try { if (!m_pObject) return GetAccessDenied(); CComObject<InterfaceMessages>* pMessages = new CComObject<InterfaceMessages>(); pMessages->SetAuthentication(m_pAuthentication); shared_ptr<HM::Messages> pMsgs = m_pObject->GetMessages(); if (!pMsgs) return DISP_E_BADINDEX; pMessages->Attach(pMsgs); pMessages->AddRef(); *pVal = pMessages; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceIMAPFolders::Add(BSTR sName, IInterfaceIMAPFolder **pVal) { try { if (!m_pObject) return GetAccessDenied(); // Convert the modified UTF7 string into unicode. // Since hMailServer core don't know unicode, we // have to do it out here in the interface. HM::String sUnicode (sName); HM::AnsiString sFolderName = HM::ModifiedUTF7::Encode(sUnicode); CComObject<InterfaceIMAPFolder>* pIMAPFolderInt = new CComObject<InterfaceIMAPFolder>(); pIMAPFolderInt->SetAuthentication(m_pAuthentication); // Check that it does not exist. shared_ptr<HM::IMAPFolder> pIMAPFolder = m_pObject->GetFolderByName(sFolderName); if (pIMAPFolder) return COMError::GenerateError("Folder with specified name already exists"); pIMAPFolder = shared_ptr<HM::IMAPFolder>(new HM::IMAPFolder(m_pObject->GetAccountID(), m_pObject->GetParentID())); pIMAPFolder->SetFolderName(sFolderName); // We auto-subscribe to public folders. if (m_pObject->GetAccountID() == 0) pIMAPFolder->SetIsSubscribed(true); if (!HM::PersistentIMAPFolder::SaveObject(pIMAPFolder)) { return COMError::GenerateError("Folder could not be saved."); } // Add the folder ot the collection. m_pObject->AddItem(pIMAPFolder); pIMAPFolderInt->AttachParent(m_pObject, true); pIMAPFolderInt->Attach(pIMAPFolder); pIMAPFolderInt->AddRef(); *pVal = pIMAPFolderInt; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceLanguages::get_ItemByName(BSTR ItemName, IInterfaceLanguage **pVal) { try { CComObject<InterfaceLanguage>* pInterfaceLanguage = new CComObject<InterfaceLanguage>(); boost::shared_ptr<HM::Language> pLanguage = HM::Languages::Instance()->GetLanguage(ItemName); if (!pLanguage) return DISP_E_BADINDEX; pInterfaceLanguage->Attach(pLanguage); pInterfaceLanguage->AddRef(); *pVal = pInterfaceLanguage; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceAntiSpam::get_WhiteListAddresses(IInterfaceWhiteListAddresses **pVal) { try { if (!m_pConfig) return GetAccessDenied(); if (!m_pConfig) return DISP_E_BADINDEX; CComObject<InterfaceWhiteListAddresses>* pGLWhiteList = new CComObject<InterfaceWhiteListAddresses>(); pGLWhiteList->SetAuthentication(m_pAuthentication); pGLWhiteList->Attach(HM::Configuration::Instance()->GetAntiSpamConfiguration().GetWhiteListAddresses()); pGLWhiteList->AddRef(); *pVal = pGLWhiteList; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceRoute::get_Addresses(IInterfaceRouteAddresses **pVal) { try { if (!m_pObject) return GetAccessDenied(); CComObject<InterfaceRouteAddresses>* pInterfaceAddresses = new CComObject<InterfaceRouteAddresses>; pInterfaceAddresses->SetAuthentication(m_pAuthentication); boost::shared_ptr<HM::RouteAddresses> pAdresses = m_pObject->GetAddresses(); pInterfaceAddresses->Attach(pAdresses); pInterfaceAddresses->AddRef(); *pVal = pInterfaceAddresses; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }
STDMETHODIMP InterfaceAntiVirus::get_BlockedAttachments(IInterfaceBlockedAttachments **pVal) { try { if (!GetIsServerAdmin()) return GetAccessDenied(); CComObject<InterfaceBlockedAttachments>* pInterface = new CComObject<InterfaceBlockedAttachments>; pInterface->SetAuthentication(authentication_); shared_ptr<HM::BlockedAttachments> pBlockedAttachments = HM::Configuration::Instance()->GetBlockedAttachments(); pInterface->Attach(pBlockedAttachments); pInterface->AddRef(); *pVal = pInterface; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }