// Copyright (c) 2010 Martin Knafve / hMailServer.com. // http://www.hmailserver.com #include "stdafx.h" #include "InterfaceSecurityRange.h" #include "../Common/Persistence/PersistentSecurityRange.h" #include "../Common/BO/SecurityRanges.h" #include "../Common/BO/SecurityRange.h" #include "COMError.h" STDMETHODIMP InterfaceSecurityRange::InterfaceSupportsErrorInfo(REFIID riid) { try { static const IID* arr[] = { &IID_IInterfaceSecurityRange, }; for (int i=0;iGetIsServerAdmin()) return authentication_->GetAccessDenied(); HM::String result; if (HM::PersistentSecurityRange::SaveObject(object_, result, HM::PersistenceModeNormal)) { // Add to parent collection AddToParentCollection(); return S_OK; } return COMError::GenerateError(result); } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_ID(long *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = (long) object_->GetID(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_LowerIP(BSTR *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetLowerIPString().AllocSysString(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_LowerIP(BSTR newVal) { try { if (!object_) return GetAccessDenied(); object_->SetLowerIPString(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_UpperIP(BSTR *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetUpperIPString().AllocSysString(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_UpperIP(BSTR newVal) { try { if (!object_) return GetAccessDenied(); object_->SetUpperIPString(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_Priority(long *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetPriority(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_Priority(long newVal) { try { if (!object_) return GetAccessDenied(); object_->SetPriority(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_AllowPOP3Connections(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetAllowPOP3() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_AllowPOP3Connections(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetAllowPOP3 (newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_AllowSMTPConnections(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetAllowSMTP() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_AllowSMTPConnections(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetAllowSMTP (newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_AllowIMAPConnections(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetAllowIMAP() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_AllowIMAPConnections(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetAllowIMAP (newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_Name(BSTR *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetName().AllocSysString(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_Name(BSTR newVal) { try { if (!object_) return GetAccessDenied(); object_->SetName(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_RequireAuthForDeliveryToLocal(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); // OBSOLETE: Removed i 5.1 return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_RequireAuthForDeliveryToLocal(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); // OBSOLETE: Removed i 5.1 return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_RequireAuthForDeliveryToRemote(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); // OBSOLETE: Removed i 5.1 return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_RequireAuthForDeliveryToRemote(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); // OBSOLETE: Removed i 5.1 return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_RequireSMTPAuthLocalToLocal(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetRequireSMTPAuthLocalToLocal() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_RequireSMTPAuthLocalToLocal(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetRequireSMTPAuthLocalToLocal(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_RequireSMTPAuthLocalToExternal(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetRequireSMTPAuthLocalToExternal() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_RequireSMTPAuthLocalToExternal(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetRequireSMTPAuthLocalToExternal(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_RequireSMTPAuthExternalToLocal(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetRequireSMTPAuthExternalToLocal() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_RequireSMTPAuthExternalToLocal(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetRequireSMTPAuthExternalToLocal(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_RequireSMTPAuthExternalToExternal(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetRequireSMTPAuthExternalToExternal() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_RequireSMTPAuthExternalToExternal(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetRequireSMTPAuthExternalToExternal(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_AllowDeliveryFromLocalToLocal(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetAllowRelayL2L() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_AllowDeliveryFromLocalToLocal(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetAllowRelayL2L(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_AllowDeliveryFromLocalToRemote(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetAllowRelayL2R() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_AllowDeliveryFromLocalToRemote(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetAllowRelayL2R(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_AllowDeliveryFromRemoteToLocal(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetAllowRelayR2L() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_AllowDeliveryFromRemoteToLocal(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetAllowRelayR2L(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_AllowDeliveryFromRemoteToRemote(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetAllowRelayR2R() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_AllowDeliveryFromRemoteToRemote(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetAllowRelayR2R(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_EnableSpamProtection(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetSpamProtection() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_EnableSpamProtection(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetSpamProtection(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_EnableAntiVirus(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetVirusProtection() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_EnableAntiVirus(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetVirusProtection(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_RequireSSLTLSForAuth(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetRequireTLSForAuth() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_RequireSSLTLSForAuth(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetRequireTLSForAuth(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_IsForwardingRelay(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); // OBSOLETE: Remove in 6.0. No longer used as of 5.1. return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_IsForwardingRelay(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); // OBSOLETE: Remove in 6.0. No longer used as of 5.1. return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::Delete() { try { if (!object_) return GetAccessDenied(); if (!authentication_->GetIsServerAdmin()) return authentication_->GetAccessDenied(); if (!parent_collection_) return HM::PersistentSecurityRange::DeleteObject(object_) ? S_OK : S_FALSE; parent_collection_->DeleteItemByDBID(object_->GetID()); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_Expires(VARIANT_BOOL *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetExpires() ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_Expires(VARIANT_BOOL newVal) { try { if (!object_) return GetAccessDenied(); object_->SetExpires(newVal == VARIANT_TRUE); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::get_ExpiresTime(VARIANT *pVal) { try { if (!object_) return GetAccessDenied(); *pVal = object_->GetExpiresTime().GetVariant(); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } } STDMETHODIMP InterfaceSecurityRange::put_ExpiresTime(VARIANT newVal) { try { if (!object_) return GetAccessDenied(); object_->SetExpiresTime(newVal); return S_OK; } catch (...) { return COMError::GenerateGenericMessage(); } }