From 20edb3fb0e2685096aa526333d838cb707c68b64 Mon Sep 17 00:00:00 2001 From: Trevor Robinson Date: Mon, 24 Oct 2022 16:25:59 +0200 Subject: [PATCH] Smartermail100 (Latest API) - Work sponsored by Enterprise Guardian Inc. --- Languages/Resources.xml | 525 ++++ SolidCP/Database/update_db.sql | 21 + .../SmarterMail100.cs | 2111 +++++++++++++++++ ...lidCP.Providers.Mail.SmarterMail100.csproj | 86 + .../packages.config | 4 + SolidCP/Sources/SolidCP.Server.sln | 18 +- ...marterMail100x_EditAccount.ascx.de-DE.resx | 171 ++ .../SmarterMail100x_EditAccount.ascx.resx | 171 ++ ...SmarterMail100x_EditDomain.ascx.de-DE.resx | 171 ++ .../SmarterMail100x_EditDomain.ascx.resx | 171 ++ ...il100x_EditDomain_Features.ascx.de-DE.resx | 168 ++ ...rterMail100x_EditDomain_Features.ascx.resx | 168 ++ ...ail100x_EditDomain_Sharing.ascx.de-DE.resx | 138 ++ ...arterMail100x_EditDomain_Sharing.ascx.resx | 138 ++ ...100x_EditDomain_Throttling.ascx.de-DE.resx | 132 ++ ...erMail100x_EditDomain_Throttling.ascx.resx | 132 ++ .../SmarterMail100x_EditForwarding.ascx.resx | 101 + .../SmarterMail100x_EditGroup.ascx.de-DE.resx | 123 + .../SmarterMail100x_EditGroup.ascx.resx | 123 + .../SmarterMail100x_EditList.ascx.de-DE.resx | 219 ++ .../SmarterMail100x_EditList.ascx.resx | 219 ++ .../SmarterMail100x_Settings.ascx.de-DE.resx | 150 ++ .../SmarterMail100x_Settings.ascx.resx | 150 ++ .../SmarterMail100x_EditAccount.ascx | 113 + .../SmarterMail100x_EditAccount.ascx.cs | 88 + ...arterMail100x_EditAccount.ascx.designer.cs | 339 +++ .../SmarterMail100x_EditDomain.ascx | 145 ++ .../SmarterMail100x_EditDomain.ascx.bak | 145 ++ .../SmarterMail100x_EditDomain.ascx.cs | 187 ++ ...marterMail100x_EditDomain.ascx.designer.cs | 395 +++ ...erMail100x_EditDomain.ascx.designer.cs.bak | 431 ++++ .../SmarterMail100x_EditDomain_Features.ascx | 69 + ...marterMail100x_EditDomain_Features.ascx.cs | 75 + ...l100x_EditDomain_Features.ascx.designer.cs | 71 + .../SmarterMail100x_EditDomain_Sharing.ascx | 27 + ...SmarterMail100x_EditDomain_Sharing.ascx.cs | 67 + ...il100x_EditDomain_Sharing.ascx.designer.cs | 53 + ...SmarterMail100x_EditDomain_Throttling.ascx | 45 + ...rterMail100x_EditDomain_Throttling.ascx.cs | 83 + ...00x_EditDomain_Throttling.ascx.designer.cs | 177 ++ .../SmarterMail100x_EditForwarding.ascx | 1 + .../SmarterMail100x_EditForwarding.ascx.cs | 55 + ...erMail100x_EditForwarding.ascx.designer.cs | 15 + .../SmarterMail100x_EditGroup.ascx | 8 + .../SmarterMail100x_EditGroup.ascx.cs | 55 + ...SmarterMail100x_EditGroup.ascx.designer.cs | 33 + .../SmarterMail100x_EditList.ascx | 175 ++ .../SmarterMail100x_EditList.ascx.cs | 214 ++ .../SmarterMail100x_EditList.ascx.designer.cs | 305 +++ .../SmarterMail100x_Settings.ascx | 108 + .../SmarterMail100x_Settings.ascx.cs | 163 ++ .../SmarterMail100x_Settings.ascx.designer.cs | 213 ++ .../SolidCP/SolidCP.Portal.Modules.csproj | 89 + 53 files changed, 9352 insertions(+), 2 deletions(-) create mode 100644 SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/SmarterMail100.cs create mode 100644 SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/SolidCP.Providers.Mail.SmarterMail100.csproj create mode 100644 SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/packages.config create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditAccount.ascx.de-DE.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditAccount.ascx.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain.ascx.de-DE.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain.ascx.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Features.ascx.de-DE.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Features.ascx.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Sharing.ascx.de-DE.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Sharing.ascx.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Throttling.ascx.de-DE.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Throttling.ascx.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditForwarding.ascx.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditGroup.ascx.de-DE.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditGroup.ascx.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditList.ascx.de-DE.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditList.ascx.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_Settings.ascx.de-DE.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_Settings.ascx.resx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx.designer.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.bak create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.designer.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.designer.cs.bak create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx.designer.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx.designer.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx.designer.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx.designer.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx.designer.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx.designer.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx.cs create mode 100644 SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx.designer.cs diff --git a/Languages/Resources.xml b/Languages/Resources.xml index c3551edf7..141397016 100644 --- a/Languages/Resources.xml +++ b/Languages/Resources.xml @@ -13321,6 +13321,11 @@ Quota.RDS.DisableUserShutdown Disable user from shutting down RDS Server + + App_GlobalResources\SolidCP_SharedResources.ascx.resx + TaskActivity.VPS_CREATE_CREATE_VM_ATTEMPT + Creating Virtual Machine object attempt - {0} + DesktopModules\SolidCP\App_LocalResources\ApplyEnableHardQuotaFeature.ascx.resx btnUpdate.Text @@ -44012,6 +44017,526 @@ The following substitution variables can be used in the pattern:<br/> lblServiceConfig.Text Service Configuration + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + cbChangePassword.Text + Change Password + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + cbDomainAdmin.Text + Domain Administrator + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + cbDomainAdministrator.Text + Domain Administrator + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + cbEnableAccount.Text + Account enabled + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + cbEnabled + Check to Enable + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + chkDeleteOnForward.Text + Delete Message on Forward + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + chkResponderEnabled.Text + Yes + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + lblFirstName.Text + First Name: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + lblForwardTo.Text + Forward Mail to Address: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + lblLastName.Text + Last Name: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + lblMessage.Text + Message: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + lblReplyTo.Text + Reply to Address: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + lblResponderEnabled.Text + Enable Autoresponder: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + lblSignature.Text + Signature: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + lblSubject.Text + Subject: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + secAutoresponder.Text + Autoresponder + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditAccount.ascx.resx + secForwarding.Text + Mail Forwarding + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + lblAbuse.Text + Abuse Account: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + lblCatchAll.Text + Catch-All Account: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + lblDomainAliases.Text + Domain Aliases : + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + lblDomainDiskSpace.Text + Domain Disk Space, MB : + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + lblMailingListsQuota.Text + Mailing Lists : + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + lblMessageSizeQuota.Text + Max Message Size, KB : + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + lblPopRetreivalAccounts.Text + POP Retrieval Accounts: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + lblPostmaster.Text + Postmaster Account: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + lblRecipientsPerMessageQuota.Text + Max Recipients per Message : + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + lblUserAliasesQuota.Text + User Aliases : + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + lblUserQuota.Text + Users : + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + secFeatures.Text + Features + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + secLimits.Text + Limits + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + secSharing.Text + Sharing + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + secTechnical.Text + Technical + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + secThrottling.Text + Throttling + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain.ascx.resx + Text.NotSelected + <Not Selected> + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbEnableCatchAlls.Text + Enable Catch-Alls + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbEnableIMAPRetreival.Text + Enable IMAP Retreival + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbEnableMailReports.Text + Enable Email Reports + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbEnableMailSigning.Text + Enable Mail Signing + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbEnablePopRetreival.Text + Enable POP Retrieval + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbEnableSyncML.Text + Enable SyncML + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbPopRetrieval.Text + Pop Retreival + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbShowCalendar.Text + Calendar + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbShowContacts.Text + Contacts + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbShowcontentfilteringmenu.Text + Domain Content Filtering + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbShowdomainaliasmenu.Text + Domain Aliases + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbShowDomainReports.Text + Domain Reports + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbShowlistmenu.Text + Mailing Lists + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbShowNotes.Text + Notes + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbShowspammenu.Text + Domain Spam Options + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Features.ascx.resx + lbShowTasks.Text + Tasks + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Sharing.ascx.resx + cbGlobalAddressList.Text + Global Address List + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Sharing.ascx.resx + cbSharedCalendars.Text + Shared Calendars + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Sharing.ascx.resx + cbSharedContacts.Text + Shared Contacts + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Sharing.ascx.resx + cbSharedFolders.Text + Shared Folders + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Sharing.ascx.resx + cbSharedNotes.Text + Shared Notes + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Sharing.ascx.resx + cbSharedTasks.Text + Shared Tasks + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Throttling.ascx.resx + lbBandwidthPerHour.Text + Outgoing Bandwidth per Hour, MB: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Throttling.ascx.resx + lbBouncesPerHour.Text + Bounces Received per Hour: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Throttling.ascx.resx + lbEnabled.Text + Enabled + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditDomain_Throttling.ascx.resx + lbMessagesPerHour.Text + Outgoing Messages per Hour: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditGroup.ascx.resx + lblGroupMembers.Text + Group E-Mails: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + chkPasswordEnabled.Text + Enabled + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + chkReplyToList.Text + Reply To List + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + chkSubjectPrefixEnabled.Text + Enabled + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + ctxValDomain.Text + Moderator should be within mail domain where Mail List is located + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + ddlPostingModeItem.Anyone + Anyone + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + ddlPostingModeItem.MembersOnly + Subscribers Only + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + ddlPostingModeItem.ModeratorOnly + Moderator Only + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + ddlPostingModeItem.Password + Password Protected Posting + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + ddlReplyToItem.List + List + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + ddlReplyToItem.Moderator + Moderator + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + ddlReplyToItem.Sender + Sender + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblDescription.Text + List Description: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblListOptions.Text + List Options: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblMaxMessageSize.Text + Max Message Size, KB: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblMaxRecipients.Text + Max Recipients per Message: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblMembers.Text + Mailing List Members: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblModerationEnabled.Text + Moderation is Enabled: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblModeratorAddress.Text + List Moderator: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblPostingMode.Text + Who Can Post: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblPostingPassword.Text + List Password: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblReplyTo.Text + Subscribers Reply To: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblSubjectPrefix.Text + Subject Prefix: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + Text.SelectModerator + <Choose a moderator> + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + AdditionalOptions.Text + List Additional Options + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lbAllowUnsubscribe.Text + Enable Unsubscribe from Subject: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lbDigestMode.Text + Enable Digest Mode: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lbDisableListcommand.Text + Enable LIST Command: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lbDisableSubscribecommand.Text + Enable SUBSCRIBE Command: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblListFromAddress.Text + List From Address: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblListReplyToAddress.Text + List Reply To Address: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lblListToAddress.Text + List To Address: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lbSendSubscribe.Text + Send Subscribe Email: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_EditList.ascx.resx + lbSendUnsubscribe.Text + Send Unsubscribe Email: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_Settings.ascx.resx + cbEnableDomainAdmin.Text + Enable Domain Administrators + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_Settings.ascx.resx + cbImportDomainAdmin.Text + Import Domain Admin + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_Settings.ascx.resx + cbImportSystemAdmin.Text + Import System Admin + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_Settings.ascx.resx + cbInheritDefaultLimits.Text + Inherit Domain Default Limits &nbsp; (Domain Default Limits will be applied for all new created domains) + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_Settings.ascx.resx + lblAdminLogin.Text + Admin Login: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_Settings.ascx.resx + lblAdminPassword.Text + Admin Password: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_Settings.ascx.resx + lblCurrPassword.Text + Current Admin Password: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_Settings.ascx.resx + lblDomainsPath.Text + Domains Root Folder: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_Settings.ascx.resx + lblPublicIP.Text + Public IP Address: + + + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100x_Settings.ascx.resx + lblServiceUrl.Text + SmarterMail Web Services URL: + DesktopModules\SolidCP\ProviderControls\App_LocalResources\SmarterMail100_EditAccount.ascx.resx cbChangePassword.Text diff --git a/SolidCP/Database/update_db.sql b/SolidCP/Database/update_db.sql index e2c1fa132..7ded43216 100644 --- a/SolidCP/Database/update_db.sql +++ b/SolidCP/Database/update_db.sql @@ -23384,4 +23384,25 @@ IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [ProviderID] = '1901' AND D BEGIN INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (1903, 7, N'SimpleDNS', N'SimpleDNS Plus 9.x', N'SolidCP.Providers.DNS.SimpleDNS9, SolidCP.Providers.DNS.SimpleDNS90', N'SimpleDNS', NULL) END +GO + +-- SmarterMail 100.x +IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'SmarterMail 100.x +') +BEGIN +INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES(67, 4, N'SmarterMail', N'SmarterMail 100.x +', N'SolidCP.Providers.Mail.SmarterMail100, SolidCP.Providers.Mail.SmarterMail100', N'SmarterMail100x', NULL) +END +ELSE +BEGIN +UPDATE [dbo].[Providers] SET [EditorControl] = 'SmarterMail100' WHERE [DisplayName] = 'SmarterMail 100.x +' +END +GO + +IF NOT EXISTS (SELECT * FROM [dbo].[ServiceDefaultProperties] WHERE [ProviderID] = '67' AND [PropertyName] = N'AdminUsername') +BEGIN +INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (67, N'AdminPassword', N'') +INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (67, N'AdminUsername', N'admin') +INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (67, N'DomainsPath', N'%SYSTEMDRIVE%\SmarterMail\Domains') +INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (67, N'ServerIPAddress', N'127.0.0.1;127.0.0.1') +INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (67, N'ServiceUrl', N'http://localhost:9998/services/') +END GO \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/SmarterMail100.cs b/SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/SmarterMail100.cs new file mode 100644 index 000000000..94d7b6891 --- /dev/null +++ b/SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/SmarterMail100.cs @@ -0,0 +1,2111 @@ +// Copyright (c) 2016, SolidCP +// SolidCP is distributed under the Creative Commons Share-alike license +// +// SolidCP is a fork of WebsitePanel: +// Copyright (c) 2015, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Web.Services.Protocols; +using System.Net; +using SolidCP.Providers; +using SolidCP.Providers.Common; +using SolidCP.Providers.Mail; +using SolidCP.Server.Utils; +using Microsoft.Win32; +using FileUtils = SolidCP.Providers.Utils.FileUtils; +using Newtonsoft.Json; +using System.Net.Http; +using System.Threading.Tasks; +using System.Threading; + +namespace SolidCP.Providers.Mail +{ + class SmarterMail100 : HostingServiceProviderBase, IMailServer + { + + #region Public Properties + + protected string AdminUsername + { + get { return ProviderSettings["AdminUsername"]; } + } + + protected string AdminPassword + { + get { return ProviderSettings["AdminPassword"]; } + } + + protected bool ImportDomainAdmin + { + get + { + bool res; + bool.TryParse(ProviderSettings[Constants.ImportDomainAdmin], out res); + return res; + } + } + + protected bool InheritDomainDefaultLimits + { + get + { + bool res; + bool.TryParse(ProviderSettings[Constants.InheritDomainDefaultLimits], out res); + return res; + } + } + + protected bool EnableDomainAdministrators + { + get + { + bool res; + bool.TryParse(ProviderSettings[Constants.EnableDomainAdministrators], out res); + return res; + } + } + + protected string DomainsPath + { + get { return FileUtils.EvaluateSystemVariables(ProviderSettings["DomainsPath"]); } + } + + protected string ServerIP + { + get + { + string val = ProviderSettings["ServerIPAddress"]; + if (String.IsNullOrEmpty(val)) + return "127.0.0.1"; + + string ip = val.Trim(); + if (ip.IndexOf(";") > -1) + { + string[] ips = ip.Split(';'); + ip = String.IsNullOrEmpty(ips[1]) ? ips[0] : ips[1]; // get internal IP part + } + return ip; + } + } + + protected string ServiceUrl + { + get { return ProviderSettings["ServiceUrl"]; } + } + #endregion + + #region Constants + public const string SYSTEM_DOMAIN_ADMIN = "system.domain.admin"; + public const string SYSTEM_CATCH_ALL = "system.catch.all"; + #endregion + + #region Class + + public class AuthToken + { + public string emailAddress { get; set; } + public bool changePasswordNeeded { get; set; } + public bool displayWelcomeWizard { get; set; } + public bool isAdmin { get; set; } + public bool isDomainAdmin { get; set; } + public bool isLicensed { get; set; } + public string autoLoginToken { get; set; } + public string autoLoginUrl { get; set; } + public string localeId { get; set; } + public bool isImpersonating { get; set; } + public bool canViewPasswords { get; set; } + public string accessToken { get; set; } + public string refreshToken { get; set; } + public DateTime accessTokenExpiration { get; set; } + public string username { get; set; } + public bool success { get; set; } + public HttpStatusCode resultCode { get; set; } + public string message { get; set; } + public string debugInfo { get; set; } + } + public class Domain + { + public string name { get; set; } + public string path { get; set; } + public string hostname { get; set; } + public bool isEnabled { get; set; } + public int userCount { get; set; } + public int userLimit { get; set; } + public int aliasCount { get; set; } + public int aliasLimit { get; set; } + public int domainAliasCount { get; set; } + public int listCount { get; set; } + public int listLimit { get; set; } + public int size { get; set; } + public int maxSize { get; set; } + public int fileStorageSize { get; set; } + public int sizeMb { get; set; } + public int fileStorageSizeMb { get; set; } + public string imgLink { get; set; } + public string status { get; set; } + } + + #endregion + + #region Connection + + public async Task GetAccessToken() + { + //Log.WriteStart("GetAccessToken"); + + HttpClient client = new HttpClient(); + var loginData = new { + username = AdminUsername, + password = AdminPassword + }; + var loginDatajson = JsonConvert.SerializeObject(loginData); + var authinput_post = new StringContent(loginDatajson, Encoding.UTF8, "application/json"); + var authurl = ServiceUrl + "api/v1/auth/authenticate-user"; + + //Log.WriteInfo("authurl: {0}", authurl); + + var authresponse = await client.PostAsync(authurl, authinput_post); + authresponse.EnsureSuccessStatusCode(); + var authresult = await authresponse.Content.ReadAsStringAsync(); + AuthToken authdata = JsonConvert.DeserializeObject(authresult); + + //Log.WriteInfo("Token: {0}", authdata.accessToken); + + //Log.WriteEnd("GetAccessToken"); + + return authdata; + } + + public async Task GetDomainAccessToken(string domain) + { + //Log.WriteStart("GetAccessToken"); + + AuthToken authToken = await GetAccessToken(); + + HttpClient client = new HttpClient(); + var domainData = new { }; + var domainDatajson = JsonConvert.SerializeObject(domainData); + var authinput_post = new StringContent(domainDatajson, Encoding.UTF8, "application/json"); + client.DefaultRequestHeaders.Add("Authorization", "Bearer " + authToken.accessToken); + var authurl = ServiceUrl + "api/v1//settings/sysadmin/manage-domain/" + domain; + var authresponse = await client.PostAsync(authurl, authinput_post); + authresponse.EnsureSuccessStatusCode(); + var authresult = await authresponse.Content.ReadAsStringAsync(); + dynamic data = JsonConvert.DeserializeObject(authresult); + + AuthToken authdata = new AuthToken(); + + authdata.accessToken = data.impersonateAccessToken; + authdata.refreshToken = data.impersonateRefreshToken; + authdata.accessTokenExpiration = data.impersonateAccessTokenExpiration; + authdata.username = data.username; + authdata.emailAddress = data.email; + authdata.success = data.success; + authdata.message = data.message; + + + //Log.WriteInfo("Token: {0}", authdata.accessToken); + + //Log.WriteEnd("GetAccessToken"); + + return authdata; + } + + public async Task GetUserAccessToken(string email) + { + //Log.WriteStart("GetUserAccessToken"); + + AuthToken authToken = await GetAccessToken(); + + HttpClient client = new HttpClient(); + var UserData = new { }; + var UserDatajson = JsonConvert.SerializeObject(UserData); + var authinput_post = new StringContent(UserDatajson, Encoding.UTF8, "application/json"); + client.DefaultRequestHeaders.Add("Authorization", "Bearer " + authToken.accessToken); + var authurl = ServiceUrl + "api/v1/settings/domain/impersonate-user/" + email; + var authresponse = await client.PostAsync(authurl, authinput_post); + authresponse.EnsureSuccessStatusCode(); + var authresult = await authresponse.Content.ReadAsStringAsync(); + dynamic data = JsonConvert.DeserializeObject(authresult); + + AuthToken authdata = new AuthToken(); + + authdata.accessToken = data.impersonateAccessToken; + authdata.refreshToken = data.impersonateRefreshToken; + authdata.accessTokenExpiration = data.impersonateAccessTokenExpiration; + authdata.username = data.username; + authdata.emailAddress = data.email; + authdata.success = data.success; + authdata.message = data.message; + + + //Log.WriteInfo("User Token: {0}", authdata.accessToken); + + //Log.WriteEnd("GetUserAccessToken"); + + return authdata; + } + + private async Task ExecGetCommand(string command) + { + //Log.WriteStart("ExecGetCommand {0}", command); + + AuthToken auth = await GetAccessToken(); + + var commandurl = ServiceUrl + "api/v1/" + command; + + //Log.WriteInfo("commandurl: {0}", commandurl); + + HttpClient client = new HttpClient(); + client.DefaultRequestHeaders.Add("Authorization", "Bearer " + auth.accessToken); + var commandresponse = await client.GetAsync(commandurl); + var commandresult = await commandresponse.Content.ReadAsStringAsync(); + Object commanddata = JsonConvert.DeserializeObject(commandresult); + + Log.WriteInfo("ExecGetCommand: URL: {0} \n\n returned: {1}", commandurl, commanddata); + + return commanddata; + } + + private async Task ExecPostCommand(string command, object param) + { + //Log.WriteStart("ExecPostCommand {0}", command); + + AuthToken authToken = await GetAccessToken(); + + var commandurl = ServiceUrl + "api/v1/" + command; + + HttpClient client = new HttpClient(); + var commandparamjson = JsonConvert.SerializeObject(param); + var commandinput_post = new StringContent(commandparamjson, Encoding.UTF8, "application/json"); + client.DefaultRequestHeaders.Add("Authorization", "Bearer " + authToken.accessToken); + var commandresponse = await client.PostAsync(commandurl, commandinput_post); + //commandresponse.EnsureSuccessStatusCode(); + var commandresult = await commandresponse.Content.ReadAsStringAsync(); + Object commanddata = JsonConvert.DeserializeObject(commandresult); + + Log.WriteInfo("ExecPostCommand: Command: {0} \n\n URL: {1} \n\n Params: {2} \n\n Result: {3}", command, commandurl, commandparamjson, commanddata); + + return commanddata; + } + + private async Task ExecDomainGetCommand(string command, string domain) + { + //Log.WriteStart("ExecGetCommand {0}", command); + + AuthToken auth = await GetDomainAccessToken(domain); + + var commandurl = ServiceUrl + "api/v1/" + command; + + //Log.WriteInfo("commandurl: {0}", commandurl); + + HttpClient client = new HttpClient(); + client.DefaultRequestHeaders.Add("Authorization", "Bearer " + auth.accessToken); + var commandresponse = await client.GetAsync(commandurl); + var commandresult = await commandresponse.Content.ReadAsStringAsync(); + Object commanddata = JsonConvert.DeserializeObject(commandresult); + + Log.WriteInfo("ExecDomainGetCommand: URL: {0} \n\n returned: {1}", commandurl, commanddata); + + return commanddata; + } + + private async Task ExecDomainPostCommand(string command, string domain, object param) + { + AuthToken authToken = await GetDomainAccessToken(domain); + + var commandurl = ServiceUrl + "api/v1/" + command; + + HttpClient client = new HttpClient(); + var commandparamjson = JsonConvert.SerializeObject(param); + var commandinput_post = new StringContent(commandparamjson, Encoding.UTF8, "application/json"); + client.DefaultRequestHeaders.Add("Authorization", "Bearer " + authToken.accessToken); + var commandresponse = await client.PostAsync(commandurl, commandinput_post); + //commandresponse.EnsureSuccessStatusCode(); + var commandresult = await commandresponse.Content.ReadAsStringAsync(); + Object commanddata = JsonConvert.DeserializeObject(commandresult); + + Log.WriteInfo("ExecDomainPostCommand: Command: {0} \n\n URL: {1} \n\n Params: {2} \n\n Result: {3}", command, commandurl, commandparamjson, commanddata); + + return commanddata; + } + + private async Task ExecUserGetCommand(string command, string email) + { + //Log.WriteStart("ExecGetCommand {0}", command); + + AuthToken auth = await GetUserAccessToken(email); + + var commandurl = ServiceUrl + "api/v1/" + command; + + //Log.WriteInfo("commandurl: {0}", commandurl); + + HttpClient client = new HttpClient(); + client.DefaultRequestHeaders.Add("Authorization", "Bearer " + auth.accessToken); + var commandresponse = await client.GetAsync(commandurl); + var commandresult = await commandresponse.Content.ReadAsStringAsync(); + Object commanddata = JsonConvert.DeserializeObject(commandresult); + + Log.WriteInfo("ExecUserGetCommand: URL: {0} \n\n returned: {1}", commandurl, commanddata); + + return commanddata; + } + + private async Task ExecUserPostCommand(string command, string email, object param) + { + //Log.WriteStart("ExecPostCommand {0}", command); + + AuthToken authToken = await GetUserAccessToken(email); + + var commandurl = ServiceUrl + "api/v1/" + command; + + HttpClient client = new HttpClient(); + var commandparamjson = JsonConvert.SerializeObject(param); + var commandinput_post = new StringContent(commandparamjson, Encoding.UTF8, "application/json"); + client.DefaultRequestHeaders.Add("Authorization", "Bearer " + authToken.accessToken); + var commandresponse = await client.PostAsync(commandurl, commandinput_post); + //commandresponse.EnsureSuccessStatusCode(); + var commandresult = await commandresponse.Content.ReadAsStringAsync(); + Object commanddata = JsonConvert.DeserializeObject(commandresult); + + Log.WriteInfo("ExecUserPostCommand: Command: {0} \n\n URL: {1} \n\n Params: {2} \n\n Result: {3}", command, commandurl, commandparamjson, commanddata); + + return commanddata; + } + + #endregion + + #region Domains + + /// + /// Checks whether the specified domain exists + /// + /// Domain name + /// true if the specified domain exists, otherwise false + public bool DomainExists(string domainName) + { + try + { + //Json result = GetDomainSettings(AdminUsername, AdminPassword, domainName); + + dynamic result = ExecGetCommand("settings/sysadmin/domain-settings/" + domainName).Result; + + bool success = result.success ?? false; + + //Log.WriteInfo("DomainExists: {0}", result); + + + + return success; + } + catch (Exception ex) + { + throw new Exception("Could not check whether mail domain exists", ex); + } + } + + public string[] GetDomains() + { + try + { + + List domainNames = new List(); + + dynamic result = ExecGetCommand("settings/sysadmin/domains").Result; + + //Log.WriteInfo("GetDomains: Raw: {0}", result); + //Log.WriteInfo("GetDomains: success: {0}", result.success); + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.message); + + foreach (dynamic domain in result.data) + { + string domainName = domain.name; + //Log.WriteInfo("GetDomains - Domain: {0}", domainName); + domainNames.Add(domainName); + } + + String[] domainNameString = domainNames.ToArray(); + + //Log.WriteInfo("GetDomains - domainNameString: {0}", domainNameString); + + return domainNameString; + } + catch (Exception ex) + { + throw new Exception("Could not get the list of mail domains", ex); + } + } + + public MailDomain GetDomain(string domainName) + { + try + { + //Log.WriteInfo("GetDomain: {0}", domainName); + + dynamic result = ExecGetCommand("settings/sysadmin/domain-settings/" + domainName).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + //Log.WriteInfo("GetDomain: DomainSettings {0}", result.domainSettings); + + // fill domain properties + MailDomain domain = new MailDomain(); + domain.Name = domainName; + domain.Path = result.domainSettings.domainPath; + + + //Features + //domain.ShowContentFilteringMenu + domain.ShowDomainAliasMenu = Convert.ToBoolean(result.domainSettings.showDomainAliasMenu); + domain.ShowListMenu = Convert.ToBoolean(result.domainSettings.showListMenu); + domain.ShowSpamMenu = Convert.ToBoolean(result.domainSettings.showSpamMenu); + //Domain Reports + //Enable POP Retrieval + //Enable Catch - Alls + //Enable IMAP Retreival + //Enable Mail Signing + //Enable Email Reports + //Enable SyncML + + + //Sharing + domain.IsGlobalAddressList = Convert.ToBoolean(result.domainSettings.sharedGlobalAddressList); + domain.SharedCalendars = Convert.ToBoolean(result.domainSettings.calendarPublicAvailability); + //domain.SharedContacts + //domain.SharedFolders + //domain.SharedNotes + //domain.SharedTasks + + //Throttling + domain[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR] = result.domainSettings.throttleSettings.messagesPerHour; + string SM_MESSAGES_PER_HOUR_ENABLED = result.domainSettings.throttleSettings.messagesAction; + domain[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR_ENABLED] = GetBoolean(SM_MESSAGES_PER_HOUR_ENABLED); + domain[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR] = result.domainSettings.throttleSettings.bandwidthPerHour; + string SM_BANDWIDTH_PER_HOUR_ENABLED = result.domainSettings.throttleSettings.bandwidthAction; + domain[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR_ENABLED] = GetBoolean(SM_BANDWIDTH_PER_HOUR_ENABLED); + domain[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR] = result.domainSettings.throttleSettings.bouncesPerHour; + string SM_BOUNCES_PER_HOUR_ENABLED = result.domainSettings.throttleSettings.bouncesAction; + domain[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR_ENABLED] = GetBoolean(SM_BOUNCES_PER_HOUR_ENABLED); + + //Limits + domain.MaxDomainSizeInMB = result.domainSettings.maxSize / 1048576; + domain.MaxDomainAliases = result.domainSettings.maxDomainAliases; + domain.MaxDomainUsers = Convert.ToInt32(result.domainSettings.MaxUsers); + domain.MaxAliases = result.domainSettings.maxAliases; + domain.MaxLists = result.domainSettings.maxLists; + //domain.MaxPopRetrievalAccounts + domain.MaxMessageSize = Convert.ToInt32(result.domainSettings.MaxMessageSize); + domain.MaxRecipients = Convert.ToInt32(result.domainSettings.MaxRecipients); + + + domain.MaxMailboxSizeInMB = Convert.ToInt32(result.domainSettings.maxMailboxSize) / 1048576; + domain.MaxRecipients = Convert.ToInt32(result.domainSettings.MaxRecipients); + domain.RequireSmtpAuthentication = Convert.ToBoolean(result.domainSettings.RequireSmtpAuthentication); + domain.ListCommandAddress = result.domainSettings.ListCommandAddress; + + // get additional domain settings + domain.CatchAllAccount = result.domainSettings.catchAll; + domain.Enabled = Convert.ToBoolean(result.domainSettings.isEnabled); + domain.BypassForwardBlackList = Convert.ToBoolean(result.domainSettings.bypassForwardBlackList); + //domain.ServerIP = result.ServerIP; + //domain.ImapPort = result.ImapPort; + //domain.SmtpPort = result.SmtpPort; + //domain.PopPort = result.PopPort; + //domain.ShowContentFilteringMenu = result.ShowContentFilteringMenu; + + //TODO: Above options + + + // get catch-all address + if (!String.IsNullOrEmpty(domain.CatchAllAccount)) + { + // get catch-all group + string groupName = SYSTEM_CATCH_ALL + "@" + domain.Name; + if (GroupExists(groupName)) + { + // get the first member of this group + MailGroup group = GetGroup(groupName); + + if (group.Members.Length > 0) + { + domain.CatchAllAccount = GetAccountName(group.Members[0]); + } + } + } + + dynamic licenseType = ExecGetCommand("licensing/info").Result; + + if (licenseType.edition == "0") //Enterprise + { + domain[MailDomain.SMARTERMAIL_LICENSE_TYPE] = "ENT"; + } + if (licenseType.edition == "1") //Professional + { + domain[MailDomain.SMARTERMAIL_LICENSE_TYPE] = "PRO"; + } + if (licenseType.edition == "2") //Free + { + domain[MailDomain.SMARTERMAIL_LICENSE_TYPE] = "FREE"; + } + if (licenseType.edition == "3") //Free + { + domain[MailDomain.SMARTERMAIL_LICENSE_TYPE] = "Lite"; + } + + return domain; + } + catch (Exception ex) + { + throw new Exception("Could not get mail domain", ex); + } + } + + public void CreateDomain(MailDomain domain) + { + try + { + var domainDataArray = new + { + name = domain.Name, + path = DomainsPath + "\\" + domain.Name, + hostname = domain.Name, + isEnabled = domain.Enabled.ToString(), + userLimit = domain.MaxDomainUsers, + domainAliasCount = domain.MaxDomainAliases, + listLimit = domain.MaxLists, + size = domain.MaxDomainSizeInMB, + maxSize = domain.MaxDomainSizeInMB, + sizeMb = domain.MaxDomainSizeInMB, + }; + + var domainparam = new + { + domainData = domainDataArray, + adminUsername = domain.Name + "Admin", + adminPassword = Guid.NewGuid().ToString("P") + }; + + dynamic result = ExecPostCommand("settings/sysadmin/domain-put", domainparam).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + } + catch (Exception ex) + { + if (DomainExists(domain.Name)) + { + DeleteDomain(domain.Name); + } + Log.WriteError(ex); + throw new Exception("Could not create mail domain", ex); + } + } + + public void DeleteDomain(string domainName) + { + try + { + var input_post = new { }; + dynamic result = ExecPostCommand("settings/domain/user-delete/" + domainName + "/true", input_post).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + } + catch (Exception ex) + { + throw new Exception("Could not delete mail domain", ex); + } + } + + public bool DomainAliasExists(string domainName, string aliasName) + { + try + { + string[] aliases = GetDomainAliases(domainName); + foreach (string alias in aliases) + { + if (String.Compare(alias, aliasName, true) == 0) + return true; + } + return false; + } + catch (Exception ex) + { + throw new Exception("Could not check whether mail domain alias exists", ex); + } + } + + public string[] GetDomainAliases(string domainName) + { + try + { + List domainAliasNames = new List(); + + dynamic result = ExecDomainGetCommand("settings/domain/domain-aliases", domainName).Result; + + //Log.WriteInfo("GetDomains: Raw: {0}", result); + //Log.WriteInfo("GetDomains: success: {0}", result.success); + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.message); + + foreach (dynamic domain in result.data) + { + string domainAliasName = domain.name; + //Log.WriteInfo("GetDomains - Domain: {0}", domainName); + domainAliasNames.Add(domainAliasName); + } + + String[] domainNameAliasString = domainAliasNames.ToArray(); + + //Log.WriteInfo("GetDomains - domainNameString: {0}", domainNameString); + + return domainNameAliasString; + } + catch (Exception ex) + { + throw new Exception("Could not get the list of mail domain aliases", ex); + } + } + + public void AddDomainAlias(string domainName, string aliasName) + { + try + { + var addDomainPram = new + { + }; + + dynamic result = ExecDomainPostCommand("settings/domain/domain-alias-put/" + aliasName + "/false", domainName, addDomainPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + } + catch (Exception ex) + { + throw new Exception("Could not add mail domain alias", ex); + } + } + + public void DeleteDomainAlias(string domainName, string aliasName) + { + try + { + + var DelDomainPram = new + { + }; + + dynamic result = ExecDomainPostCommand("settings/domain/domain-alias-delete/" + aliasName, domainName, DelDomainPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + } + catch (Exception ex) + { + throw new Exception("Could not delete mail domain alias", ex); + } + } + + public void UpdateDomain(MailDomain domain) + { + try + { + + var throttleSettingsArray = new + { + bandwidthAction = domain[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR_ENABLED], + bandwidthPerHour = domain[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR], + bouncesAction = domain[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR_ENABLED], + bouncesPerHour = domain[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR] + }; + + var domainSettingsArray = new + { + catchAll = domain.CatchAllAccount, + showDomainAliasMenu = domain.ShowDomainAliasMenu, + showListMenu = domain.ShowListMenu, + showSpamMenu = domain.ShowSpamMenu, + sharedGlobalAddressList = domain.IsGlobalAddressList, + calendarPublicAvailability = domain.SharedCalendars, + maxMessages = domain[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR], + throttleSettings = throttleSettingsArray, + maxSize = domain.MaxDomainSizeInMB, + maxDomainAliases = domain.MaxDomainAliases, + maxUsers = domain.MaxDomainUsers, + maxMessageSize = domain.MaxMessageSize, + maxRecipients = domain.MaxRecipients, + }; + + var domainSettingsPram = new + { + domainSettings = domainSettingsArray + }; + + dynamic result = ExecPostCommand("settings/sysadmin/domain-settings/" + domain.Name, domainSettingsPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + } + catch (Exception ex) + { + throw new Exception("Could not update mail domain", ex); + } + } + + #endregion + + #region Mail Accounts + + public bool AccountExists(string mailboxName) + { + dynamic result = ExecGetCommand("settings/sysadmin/user/" + mailboxName).Result; + + bool success = result.success ?? false; + + //Log.WriteInfo("AccountExists: Raw: {0}", result); + //Log.WriteInfo("AccountExists: success: {0}", success); + + //bool success = Convert.ToBoolean(result.success); + //if (!success) + //throw new Exception(result.message); + + return success; + } + + public MailAccount[] GetAccounts(string domainName) + { + try + { + + dynamic result = ExecGetCommand("settings/sysadmin/list-users/" + domainName).Result; + + if (!result.Result) + throw new Exception(result.Message); + + List accounts = new List(); + + + foreach (dynamic user in result.userData) + { + if (user.securityFlags.IsDomainAdmin && !ImportDomainAdmin) + continue; + + MailAccount account = new MailAccount(); + account.Name = user.userName; + //account.Password = user.password; + accounts.Add(account); + } + return accounts.ToArray(); + } + catch (Exception ex) + { + throw new Exception("Could not get the list of domain mailboxes", ex); + } + } + + public void CreateAccount(MailAccount mailbox) + { + try + { + var userDataArray = new + { + domain = GetDomainName(mailbox.Name), + userName = mailbox.Name, + fullName = mailbox.FullName, + password = mailbox.Password, + maxMailboxSize = mailbox.MaxMailboxSize + }; + + var userContactInfoArray = new + { + firstName = mailbox.FirstName, + lastName = mailbox.LastName + }; + + var userMailSettingsArray = new + { + userContactInfo = userContactInfoArray, + replyToAddress = mailbox.ReplyTo, + signature = mailbox.Signature, + isEnabled = mailbox.Enabled, + enableMailForwarding = mailbox.ForwardingEnabled + }; + + var forwardListArray = new + { + forwardList = mailbox.ForwardingAddresses + }; + + var userputPram = new + { + userData = userDataArray, + userMailSettings = userMailSettingsArray, + deleteOnForward = mailbox.DeleteOnForward, + forwardList = forwardListArray + }; + + dynamic result = ExecDomainPostCommand("settings/domain/user-put", GetDomainName(mailbox.Name), userputPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + var autoResponderSettingsArray = new + { + enabled = mailbox.ResponderEnabled, + subject = mailbox.ResponderSubject, + body = mailbox.ResponderMessage + }; + + var autoresponderPramArray = new + { + autoResponderSettings = autoResponderSettingsArray + }; + + result = ExecUserPostCommand("settings/auto-responder", mailbox.Name, autoresponderPramArray).Result; + + success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + //TODO: Signature + + } + catch (Exception ex) + { + if (AccountExists(mailbox.Name)) + { + DeleteAccount(mailbox.Name); + } + Log.WriteError(ex); + throw new Exception("Could not create mailbox", ex); + } + } + + public MailAccount GetAccount(string mailboxName) + { + try + { + dynamic result = ExecGetCommand("settings/domain/user-mail/" + mailboxName).Result; + dynamic userDataresult = ExecGetCommand("settings/sysadmin/user/" + mailboxName).Result; + + MailAccount mailbox = new MailAccount(); + mailbox.Name = userDataresult.userData.username; + mailbox.Password = userDataresult.userData.Password; + mailbox.FirstName = result.userMailSettings.userContactInfo.firstName; + mailbox.LastName = result.userMailSettings.userContactInfo.lastName; + mailbox.IsDomainAdmin = Convert.ToBoolean(userDataresult.userData.IsDomainAdmin); + mailbox.Enabled = Convert.ToBoolean(result.userMailSettings.isEnabled); + mailbox.MaxMailboxSize = Convert.ToInt32(userDataresult.userData.maxMailboxSize) / 1048576; + mailbox.ReplyTo = result.userMailSettings.replyToAddress; + mailbox.PasswordLocked = Convert.ToBoolean(userDataresult.userData.lockPassword); + + + dynamic userSignaturesresult = ExecUserGetCommand("settings/emails-signatures", mailboxName).Result; + foreach (dynamic userSignature in userSignaturesresult.userSignatures) + { + if (Convert.ToBoolean(userSignature.isDefault)) + { + mailbox.Signature = userSignature.text; + } + } + + if (Convert.ToBoolean(result.userMailSettings.enableMailForwarding)) + { + dynamic mailboxForwardListresult = ExecGetCommand("settings/domain/mailbox-forward-list/" + mailboxName).Result; + + List ForwardingAddress = new List(); + + Array forwardListArray = mailboxForwardListresult.mailboxForwardList.forwardList.ToObject(); + + foreach (dynamic address in forwardListArray) + { + ForwardingAddress.Add(address); + } + + string[] ForwardingAddressString = ForwardingAddress.ToArray(); + mailbox.ForwardingAddresses = ForwardingAddressString; + mailbox.DeleteOnForward = Convert.ToBoolean(mailboxForwardListresult.mailboxForwardList.deleteOnForward); + } + + + dynamic autoResponderSettingsresult = ExecUserGetCommand("settings/auto-responder", mailboxName).Result; + + mailbox.ResponderEnabled = Convert.ToBoolean(autoResponderSettingsresult.autoResponderSettings.enabled); + mailbox.ResponderSubject = autoResponderSettingsresult.autoResponderSettings.subject; + mailbox.ResponderMessage = autoResponderSettingsresult.autoResponderSettings.body; + + return mailbox; + } + catch (Exception ex) + { + throw new Exception("Could not get mailbox", ex); + } + } + + public void DeleteAccount(string mailboxName) + { + try + { + var input_post = new { }; + dynamic result = ExecPostCommand("settings/domain/user-delete/" + mailboxName, input_post).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + } + catch (Exception ex) + { + throw new Exception("Could not delete mailbox", ex); + } + } + + public void UpdateAccount(MailAccount mailbox) + { + + try + { + + //Log.WriteStart("UpdateAccount: Mailbox Password: {0}", mailbox.Password); + + //get original account + MailAccount account = GetAccount(mailbox.Name); + + //svcUserAdmin users = new svcUserAdmin(); + //PrepareProxy(users); + + string strPassword = mailbox.Password; + + //Don't change password. Get it from mail server. + if (!mailbox.ChangePassword) + { + strPassword = account.Password; + } + + //GenericResult result = users.UpdateUser( + //AdminUsername, AdminPassword, mailbox.Name, strPassword, mailbox.FirstName, mailbox.LastName, mailbox.IsDomainAdmin); + + //if (!result.Result) + //{ + // if (result.ResultCode == -21) + // throw new Exception("Password doesn't meet complexity", new Exception(result.Message)); + + // throw new Exception(result.Message); + //} + + // set forwarding settings + //result = users.UpdateUserForwardingInfo(AdminUsername, AdminPassword, + // mailbox.Name, mailbox.DeleteOnForward, + // (mailbox.ForwardingAddresses != null ? String.Join(", ", mailbox.ForwardingAddresses) : "")); + + //if (!result.Result) + // throw new Exception(result.Message); + + // set forwarding settings - Not tracking errors as this only applies to some versions due to API change (The above wont error) + //result = users.UpdateUserForwardingInfo2(AdminUsername, AdminPassword, + // mailbox.Name, mailbox.DeleteOnForward, + // (mailbox.ForwardingAddresses != null ? String.Join(", ", mailbox.ForwardingAddresses) : "")); + + // Set additional settings + //result = users.SetRequestedUserSettings(AdminUsername, AdminPassword, mailbox.Name, mailbox.PrepareSetRequestedUserSettingsWebMethodParams()); + + //if (!result.Result) + // throw new Exception(result.Message); + + // set autoresponder settings + //result = users.UpdateUserAutoResponseInfo(AdminUsername, AdminPassword, + // mailbox.Name, + // mailbox.ResponderEnabled, + // (mailbox.ResponderSubject != null ? mailbox.ResponderSubject : ""), + // (mailbox.ResponderMessage != null ? mailbox.ResponderMessage : "")); + + //if (!result.Result) + // throw new Exception(result.Message); + + var userContactInfoArray = new + { + firstName = mailbox.FirstName, + lastName = mailbox.LastName + }; + + var userMailSettingsArray = new + { + userContactInfo = userContactInfoArray, + //signature = mailbox.Signature, + isEnabled = mailbox.Enabled, + //enableMailForwarding = mailbox.ForwardingEnabled + maxSize = mailbox.MaxMailboxSize * 1048576, //MB to B + replyToAddress = mailbox.ReplyTo, + }; + + var userputPram = new + { + userMailSettings = userMailSettingsArray, + }; + + dynamic result = ExecDomainPostCommand("settings/domain/user-put", GetDomainName(mailbox.Name), userputPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + //TODO: Signature + + //TODO: Mail Forwarding + + } + catch (Exception ex) + { + throw new Exception("Could not update mailbox", ex); + } + + } + + #endregion + + #region Mail Aliases + + public bool MailAliasExists(string mailAliasName) + { + try + { + //AliasInfoResult result = aliases.GetAlias(AdminUsername, AdminPassword, GetDomainName(mailAliasName), mailAliasName); + + //if ((!result.Result || (result.AliasInfo.Name.Equals("Empty")) && (result.AliasInfo.Addresses.Length == 0))) + // return false; + + dynamic result = ExecDomainGetCommand("settings/domain/aliases/" + GetAccountName(mailAliasName), GetDomainName(mailAliasName)).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + if (result.gridInfo == null) + return false; + + + + return true; + } + catch (Exception ex) + { + throw new Exception("Could not check whether mail alias exists", ex); + } + } + + public MailAlias[] GetMailAliases(string domainName) + { + try + { + dynamic result = ExecDomainGetCommand("settings/domain/aliases/", domainName).Result; + + if (!result.Result) + throw new Exception(result.Message); + + List aliasesList = new List(); + + + foreach (dynamic alias in result.gridInfo) + { + if (alias.aliasTargetList.Length == 1) + { + MailAlias mailAlias = new MailAlias(); + mailAlias.Name = alias.Name + "@" + domainName; + mailAlias.ForwardTo = alias.aliasTargetList[0]; + aliasesList.Add(mailAlias); + } + } + return aliasesList.ToArray(); + } + catch (Exception ex) + { + throw new Exception("Could not get the list of mail aliases", ex); + } + + + } + + public void CreateMailAlias(MailAlias mailAlias) + { + try + { + var aliasArray = new + { + name = GetAccountName(mailAlias.Name), + aliasTargetList = new string[] { mailAlias.ForwardTo } + }; + + var mailAliasPram = new + { + alias = aliasArray + }; + + dynamic result = ExecDomainPostCommand("settings/domain/alias-put", GetDomainName(mailAlias.Name), mailAliasPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + } + + catch (Exception ex) + { + if (MailAliasExists(mailAlias.Name)) + { + DeleteMailAlias(mailAlias.Name); + } + Log.WriteError(ex); + throw new Exception("Could not create mail alias", ex); + + } + + } + + public MailAlias GetMailAlias(string mailAliasName) + { + MailAlias alias = new MailAlias(); + + dynamic result = ExecDomainGetCommand("settings/domain/aliases/" + GetAccountName(mailAliasName), GetDomainName(mailAliasName)).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + alias.Name = result.gridInfo[0].Name; + if (result.gridInfo[0].targets != null) + { + alias.ForwardTo = result.gridInfo[0].targets[0]; + } + else + { + alias.ForwardTo = "empty@email.com"; + } + return alias; + } + + public void DeleteMailAlias(string mailAliasName) + { + try + { + //svcAliasAdmin aliases = new svcAliasAdmin(); + //PrepareProxy(aliases); + + //GenericResult result = aliases.DeleteAlias(AdminUsername, AdminPassword, GetDomainName(mailAliasName), + // mailAliasName); + + //if (!result.Result) + // throw new Exception(result.Message); + + var mailAliasPram = new + { + }; + + dynamic result = ExecDomainPostCommand("settings/domain/alias-delete/" + GetAccountName(mailAliasName), GetDomainName(mailAliasName), mailAliasPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + } + catch (Exception ex) + { + throw new Exception("Could not delete mailAlias", ex); + } + } + + public void UpdateMailAlias(MailAlias mailAlias) + { + try + { + var aliasArray = new + { + name = GetAccountName(mailAlias.Name), + aliasTargetList = new string[] { mailAlias.ForwardTo } + }; + + var mailAliasPram = new + { + alias = aliasArray + }; + + dynamic result = ExecDomainPostCommand("settings/domain/alias", GetDomainName(mailAlias.Name), mailAliasPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + } + catch (Exception ex) + { + throw new Exception("Could not update mailAlias", ex); + } + + } + + #endregion + + #region Groups + + public bool GroupExists(string groupName) + { + try + { + dynamic result = ExecDomainGetCommand("settings/domain/aliases/" + GetAccountName(groupName), GetDomainName(groupName)).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + if (result.gridInfo == null) + return false; + + return true; + } + catch (Exception ex) + { + throw new Exception("Could not check whether mail domain group exists", ex); + } + } + + public MailGroup[] GetGroups(string domainName) + { + try + { + dynamic result = ExecDomainGetCommand("settings/domain/aliases/", domainName).Result; + + if (!result.Result) + throw new Exception(result.Message); + + List groups = new List(); + + foreach (dynamic alias in result.gridInfo) + { + //group - alias with more than one forwarding address + if (alias.aliasTargetList.Length > 1) + { + MailGroup mailGroup = new MailGroup(); + mailGroup.Name = alias.Name + "@" + domainName; + mailGroup.Members = alias.aliasTargetList; + groups.Add(mailGroup); + } + } + + return groups.ToArray(); + } + catch (Exception ex) + { + throw new Exception("Could not get the list of mail domain groups", ex); + } + } + + public MailGroup GetGroup(string groupName) + { + try + { + dynamic result = ExecDomainGetCommand("settings/domain/aliases/" + GetAccountName(groupName), GetDomainName(groupName)).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + + List targets = new List(); + + foreach (dynamic target in result.gridInfo[0].targets) + { + string targetName = target; + targets.Add(targetName); + }; + + String[] targetsString = targets.ToArray(); + + MailGroup group = new MailGroup(); + group.Name = groupName; + group.Members = targetsString; + group.Enabled = true; // by default + return group; + } + catch (Exception ex) + { + throw new Exception("Could not get mail domain group", ex); + } + } + + public void CreateGroup(MailGroup group) + { + try + { + //svcAliasAdmin svcGroups = new svcAliasAdmin(); + //PrepareProxy(svcGroups); + + //GenericResult result = svcGroups.AddAlias(AdminUsername, AdminPassword, + // GetDomainName(group.Name), group.Name, group.Members); + + //if (!result.Result) + // throw new Exception(result.Message); + + var aliasArray = new + { + name = GetAccountName(group.Name), + aliasTargetList = group.Members + }; + + var mailAliasPram = new + { + alias = aliasArray + }; + + dynamic result = ExecDomainPostCommand("settings/domain/alias-put", GetDomainName(group.Name), mailAliasPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + } + catch (Exception ex) + { + throw new Exception("Could not create mail domain group", ex); + } + } + + public void DeleteGroup(string groupName) + { + try + { + //svcAliasAdmin svcGroups = new svcAliasAdmin(); + //PrepareProxy(svcGroups); + + //GenericResult result = svcGroups.DeleteAlias(AdminUsername, AdminPassword, + // GetDomainName(groupName), groupName); + + //if (!result.Result) + // throw new Exception(result.Message); + + var mailAliasPram = new + { + }; + + dynamic result = ExecDomainPostCommand("settings/domain/alias-delete/" + GetAccountName(groupName), GetDomainName(groupName), mailAliasPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + } + catch (Exception ex) + { + throw new Exception("Could not delete mail domain group", ex); + } + } + + public void UpdateGroup(MailGroup group) + { + try + { + var aliasArray = new + { + name = GetAccountName(group.Name), + aliasTargetList = group.Members + }; + + var mailAliasPram = new + { + alias = aliasArray + }; + + dynamic result = ExecDomainPostCommand("settings/domain/alias", GetDomainName(group.Name), mailAliasPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + } + catch (Exception ex) + { + throw new Exception("Could not update mail domain group", ex); + } + } + + #endregion + + #region Lists + + public bool ListExists(string listName) + { + bool exists = false; + + try + { + dynamic result = ExecDomainGetCommand("settings/domain/mailing-lists/list", GetDomainName(listName)).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + + foreach (dynamic member in result.items) + { + string MemberlistAddress = member.listAddress; + if (MemberlistAddress.ToLower() == GetAccountName(listName).ToLower()) + { + return true; + } + } + } + catch (Exception ex) + { + throw new Exception("Couldn't obtain mail list.", ex); + } + + return exists; + } + + public void CreateList(MailList list) + { + try + { + int enumPostingPermissions = 2; + if (list.PostingMode == PostingMode.AnyoneCanPost) + { + enumPostingPermissions = 0; + } + else if (list.PostingMode == PostingMode.MembersCanPost) + { + enumPostingPermissions = 1; + } + + var AliasPram = new + { + listAddress = GetAccountName(list.Name), + moderatorAddress = list.ModeratorAddress, + description = list.Description, + password = list.Password, + requirePassword = list.RequirePassword, + postingPermissions = enumPostingPermissions, + prependSubject = list.SubjectPrefix, + //list.EnableSubjectPrefix + //list.MaxMessageSize + //list.MaxRecipientsPerMessage + //list.ListReplyToAddress + listToAddress = list.ListToAddress, + listFromAddress = list.ListFromAddress, + listReplyToAddress = list.ListReplyToAddress, + enableDigest = list.DigestMode, + sendSubscribeEmail = list.SendSubscribe, + sendUnsubscribeEmail = list.SendUnsubscribe, + //Enable Unsubscribe from Subject: ?? list.AllowUnsubscribe + disableListCommand = list.DisableListcommand + // list.DisableSubscribecommand + }; + + dynamic result = ExecDomainPostCommand("settings/domain/mailing-lists/add", GetDomainName(list.Name), AliasPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + //Add members + + if (list.Members.Length > 0) + { + dynamic memberaddresult = ExecDomainPostCommand("api/v1/settings/domain/mailing-lists/" + result.item.id + "/subscriber-add", GetDomainName(list.Name), list.Members).Result; + + bool memberaddsuccess = Convert.ToBoolean(memberaddresult.success); + if (!memberaddsuccess) + throw new Exception(memberaddresult.Message); + } + } + catch (Exception ex) + { + if (ListExists(list.Name)) + { + DeleteList(list.Name); + } + Log.WriteError(ex); + throw new Exception("Couldn't create mail list.", ex); + } + } + + public MailList GetList(string listName) + { + try + { + + MailList list = new MailList(); + list.Name = listName; + List members = new List(); + + dynamic result = ExecDomainGetCommand("settings/domain/mailing-lists/list", GetDomainName(listName)).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + //Log.WriteInfo("GetList - ListName: {0}", listName); + + + foreach (dynamic member in result.items) + { + string MemberlistAddress = member.listAddress; + if ((MemberlistAddress.ToLower()) == (GetAccountName(listName).ToLower())) + { + //Log.WriteInfo("Found result: {0}", member); + list.Id = member.id; + list.CreatedDate = member.createdOn; + list.Description = member.description; + //list.Enabled + list.ModeratorAddress = member.moderatorAddress; + //list.Moderated + list.Password = member.password; + list.RequirePassword = Convert.ToBoolean(member.requirePassword); + list.PostingMode = member.postingPermissions; + list.SubjectPrefix = member.subject; + list.EnableSubjectPrefix = Convert.ToBoolean(member.prependSubject); + //list.MaxMessageSize + //list.MaxRecipientsPerMessage + //list.ReplyToMode + list.ListToAddress = member.listAddress; + list.ListFromAddress = member.listFromAddress; + list.ListReplyToAddress = member.listReplyToAddress; + + // list members + if(member.listSubscriberCount > 0) + { + var listSubscriberArray = new + { + skip = 0, + take = 200, + search = "", + subscriberType = "Subscriber", + sortField = "emailaddress" + }; + + dynamic listSubscriberresult = ExecDomainPostCommand("settings/domain/mailing-lists/" + member.id + "/subscriber-search", GetDomainName(listName), listSubscriberArray).Result; + + bool listSubscribersuccess = Convert.ToBoolean(listSubscriberresult.success); + if (!listSubscribersuccess) + throw new Exception(listSubscriberresult.Message); + + foreach (dynamic item in listSubscriberresult.items) + { + string itememail = item.emailAddress; + members.Add(itememail); + + } + + + } + + list.Members = members.ToArray(); + list.DigestMode = Convert.ToBoolean(member.enableDigest); + list.SendSubscribe = Convert.ToBoolean(member.sendSubscribeEmail); + list.SendUnsubscribe = Convert.ToBoolean(member.sendUnsubscribeEmail); + // list.AllowUnsubscribe = Enable Unsubscribe from Subject + list.DisableListcommand = Convert.ToBoolean(member.disableListcommand); + //list.DisableSubscribecommand = member.disableSubscribecommand; + + } + } + + //Log.WriteInfo("SubList {0}, SendUnsubscribe: {1}", list, list.SendUnsubscribe); + + return list; + } + catch (Exception ex) + { + throw new Exception("Couldn't obtain mail list.", ex); + } + } + + public MailList[] GetLists(string domainName) + { + try + { + dynamic result = ExecDomainGetCommand("settings/domain/mailing-lists/list", domainName).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + List mailLists = new List(); + foreach (dynamic member in result.items) + { + List members = new List(); + MailList list = new MailList(); + //Log.WriteInfo("Found result: {0}", member); + list.Id = member.id; + list.CreatedDate = member.createdOn; + list.Description = member.description; + //list.Enabled + list.ModeratorAddress = member.moderatorAddress; + //list.Moderated + list.Password = member.password; + list.RequirePassword = Convert.ToBoolean(member.requirePassword); + list.PostingMode = member.postingPermissions; + list.SubjectPrefix = member.subject; + list.EnableSubjectPrefix = Convert.ToBoolean(member.prependSubject); + //list.MaxMessageSize + //list.MaxRecipientsPerMessage + //list.ReplyToMode + list.ListToAddress = member.listAddress; + list.ListFromAddress = member.listFromAddress; + list.ListReplyToAddress = member.listReplyToAddress; + + // list members + if (member.listSubscriberCount > 0) + { + var listSubscriberArray = new + { + skip = 0, + take = 200, + search = "", + subscriberType = "Subscriber", + sortField = "emailaddress" + }; + + dynamic listSubscriberresult = ExecDomainPostCommand("settings/domain/mailing-lists/" + member.id + "/subscriber-search", domainName, listSubscriberArray).Result; + + bool listSubscribersuccess = Convert.ToBoolean(listSubscriberresult.success); + if (!listSubscribersuccess) + throw new Exception(listSubscriberresult.Message); + + foreach (dynamic item in listSubscriberresult.items) + { + string itememail = item.emailAddress; + members.Add(itememail); + + } + + + } + + list.Members = members.ToArray(); + list.DigestMode = Convert.ToBoolean(member.enableDigest); + list.SendSubscribe = Convert.ToBoolean(member.sendSubscribeEmail); + list.SendUnsubscribe = Convert.ToBoolean(member.sendUnsubscribeEmail); + // list.AllowUnsubscribe = Enable Unsubscribe from Subject + list.DisableListcommand = Convert.ToBoolean(member.disableListcommand); + //list.DisableSubscribecommand = member.disableSubscribecommand; + mailLists.Add(list); + } + + return mailLists.ToArray(); + + } + catch (Exception ex) + { + throw new Exception("Couldn't obtain domain mail lists.", ex); + } + } + + public void DeleteList(string listName) + { + try + { + dynamic result = ExecDomainGetCommand("settings/domain/mailing-lists/list", GetDomainName(listName)).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + foreach (dynamic member in result.items) + { + string MemberlistAddress = member.listAddress; + if (MemberlistAddress.ToLower() == listName.ToLower()) + { + var DelListPram = new + { + }; + + dynamic deleteresult = ExecDomainPostCommand("settings/domain/mailing-lists/" + member.id + "/delete", GetDomainName(listName), DelListPram).Result; + + bool deletesuccess = Convert.ToBoolean(deleteresult.success); + if (!success) + throw new Exception(deleteresult.Message); + } + } + } + catch (Exception ex) + { + throw new Exception("Couldn't delete a mail list.", ex); + } + } + + private void SetMailListSettings(MailList list, string[] smSettings) + { + foreach (string setting in smSettings) + { + string[] bunch = setting.Split(new char[] { '=' }); + + switch (bunch[0]) + { + case "description": + list.Description = bunch[1]; + break; + case "disabled": + list.Enabled = !Convert.ToBoolean(bunch[1]); + break; + case "moderator": + list.ModeratorAddress = bunch[1]; + list.Moderated = !string.IsNullOrEmpty(bunch[1]); + break; + case "password": + list.Password = bunch[1]; + break; + case "requirepassword": + list.RequirePassword = Convert.ToBoolean(bunch[1]); + break; + case "whocanpost": + if (string.Compare(bunch[1], "anyone", true) == 0) + list.PostingMode = PostingMode.AnyoneCanPost; + else if (string.Compare(bunch[1], "moderator", true) == 0) + list.PostingMode = PostingMode.ModeratorCanPost; + else + list.PostingMode = PostingMode.MembersCanPost; + break; + case "prependsubject": + list.EnableSubjectPrefix = Convert.ToBoolean(bunch[1]); + break; + case "maxmessagesize": + list.MaxMessageSize = Convert.ToInt32(bunch[1]); + break; + case "maxrecipients": + list.MaxRecipientsPerMessage = Convert.ToInt32(bunch[1]); + break; + case "replytolist": + list.ReplyToMode = string.Compare(bunch[1], "true", true) == 0 ? ReplyTo.RepliesToList : ReplyTo.RepliesToSender; + break; + case "subject": + list.SubjectPrefix = bunch[1]; + break; + case "listtoaddress": + if (string.Compare(bunch[1], "DEFAULT", true) == 0) + list.ListToAddress = "DEFAULT"; + else if (string.Compare(bunch[1], "LISTADDRESS", true) == 0) + list.ListToAddress = "LISTADDRESS"; + else if (string.Compare(bunch[1], "SUBSCRIBERADDRESS", true) == 0) + list.ListToAddress = "SUBSCRIBERADDRESS"; + else + list.ListToAddress = bunch[1]; + break; + case "listfromaddress": + if (string.Compare(bunch[1], "LISTADDRESS", true) == 0) + list.ListFromAddress = "LISTADDRESS"; + else list.ListFromAddress = string.Compare(bunch[1], "POSTERADDRESS", true) == 0 ? "POSTERADDRESS" : bunch[1]; + break; + case "listreplytoaddress": + if (string.Compare(bunch[1], "LISTADDRESS", true) == 0) + list.ListReplyToAddress = "LISTADDRESS"; + else list.ListReplyToAddress = string.Compare(bunch[1], "POSTERADDRESS", true) == 0 ? "POSTERADDRESS" : bunch[1]; + break; + case "digestmode": + list.DigestMode = Convert.ToBoolean(bunch[1]); + break; + case "sendsubscribe": + list.SendSubscribe = Convert.ToBoolean(bunch[1]); + break; + case "sendunsubscribe": + list.SendUnsubscribe = Convert.ToBoolean(bunch[1]); + break; + case "allowunsubscribe": + list.AllowUnsubscribe = Convert.ToBoolean(bunch[1]); + break; + case "disablelistcommand": + list.DisableListcommand = Convert.ToBoolean(bunch[1]); + break; + case "disablesubscribecommand": + list.DisableSubscribecommand = Convert.ToBoolean(bunch[1]); + break; + + } + } + } + + protected void SetMailListMembers(MailList list, string[] subscribers) + { + List members = new List(); + + foreach (string subscriber in subscribers) + members.Add(subscriber); + + list.Members = members.ToArray(); + } + + public void UpdateList(MailList list) + { + try + { + string domain = GetDomainName(list.Name); + string listAccount = GetAccountName(list.Name); + + dynamic Listsresult = ExecDomainGetCommand("settings/domain/mailing-lists/list", domain).Result; + + bool Listssuccess = Convert.ToBoolean(Listsresult.success); + if (!Listssuccess) + throw new Exception(Listsresult.Message); + + string listID = ""; + foreach (dynamic member in Listsresult.items) + { + string MemberlistAddress = member.listAddress; + if (MemberlistAddress.ToLower() == listAccount.ToLower()) + { + listID = member.id; + } + } + + int enumPostingPermissions = 2; + if (list.PostingMode == PostingMode.AnyoneCanPost) + { + enumPostingPermissions = 0; + } + else if (list.PostingMode == PostingMode.MembersCanPost) + { + enumPostingPermissions = 1; + } + + var mailListPram = new + { + description = list.Description, + listAddress = listAccount, + moderatorAddress = list.ModeratorAddress, + postingPermissions = enumPostingPermissions, + disableListCommand = list.DisableListcommand, + //disableSubscriptions + enableDigest = list.DigestMode, + prependSubject = list.SubjectPrefix, + //subject + requirePassword = list.RequirePassword, + password = list.Password, + //maxMessagesSentPerHour: + //messagesAction: enum (see ThrottlingActions), + //maxSmtpOutBandwidthPerHour: + //bandwidthAction: enum (see ThrottlingActions), + disabled = !list.Enabled, + sendSubscribeEmail = list.SendSubscribe, + sendUnsubscribeEmail = list.SendUnsubscribe, + //digestMailbox: + //digestSubject: + //digestStripNonTextAttachments: + //digestSendTriggerSize: + //digestSendTriggerType: enum (see DigestTrigger), + //digestSendType: enum (see DigestSendType), + //digestNextSendDate: date, + //doubleOptIn: + //disableListErrorReplies: + listToAddress = list.ListToAddress, + listFromAddress = list.ListFromAddress, + listReplyToAddress = list.ListReplyToAddress + //customUnsubscribe: + //unsubscribeText: + //baseUrl: + //showInGal: boolean + + }; + + dynamic result = ExecDomainPostCommand("settings/domain/mailing-lists/" + listID + "/settings", domain, mailListPram).Result; + + bool success = Convert.ToBoolean(result.success); + if (!success) + throw new Exception(result.Message); + + + var listSubscriberArray = new + { + skip = 0, + take = 200, + search = "", + subscriberType = "Subscriber", + sortField = "emailaddress" + }; + + dynamic listSubscriberresult = ExecDomainPostCommand("settings/domain/mailing-lists/" + listID + "/subscriber-search", domain, listSubscriberArray).Result; + + bool listSubscribersuccess = Convert.ToBoolean(listSubscriberresult.success); + if (!listSubscribersuccess) + throw new Exception(listSubscriberresult.Message); + + foreach (dynamic item in listSubscriberresult.items) + { + var mailRemoveMemberPram = new + { + item.emailAddress + }; + + dynamic mailRemoveMemberresult = ExecDomainPostCommand("settings/domain/mailing-lists/" + listID + "/subscriber-remove", domain, mailRemoveMemberPram).Result; + + bool mailRemoveMembersuccess = Convert.ToBoolean(mailRemoveMemberresult.success); + if (!success) + throw new Exception(mailRemoveMemberresult.Message); + } + + if (list.Members.Length > 0) + { + + dynamic SetSubscriberListResult = ExecDomainPostCommand("settings/domain/mailing-lists/" + listID + "/subscriber-remove", domain, list.Members).Result; + + bool SetSubscriberListsuccess = Convert.ToBoolean(SetSubscriberListResult.success); + if (!success) + throw new Exception(SetSubscriberListResult.Message); + } + } + catch (Exception ex) + { + throw new Exception("Couldn't update mail list.", ex); + } + } + + #endregion + + #region Install Settings + public override bool IsInstalled() + { + string productName = null; + string productVersion = null; + + RegistryKey HKLM = Registry.LocalMachine; + + RegistryKey key = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"); + String[] names = null; + + if (key != null) + { + names = key.GetSubKeyNames(); + + foreach (string s in names) + { + RegistryKey subkey = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + s); + if (subkey != null) + if (!String.IsNullOrEmpty((string)subkey.GetValue("DisplayName"))) + { + productName = (string)subkey.GetValue("DisplayName"); + } + if (productName != null && productName.Contains("SmarterMail")) + { + if (subkey != null) + productVersion = (string)subkey.GetValue("DisplayVersion"); + break; + } + } + + if (!String.IsNullOrEmpty(productVersion)) + { + int version = 0; + string[] split = productVersion.Split(new[] { '.' }); + + if (int.TryParse(split[0], out version)) + { + if (version >= 100) return true; + } + else + return split[0].Equals("100"); + } + } + + //checking x64 platform + key = HKLM.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"); + + if (key == null) + { + return false; + } + + names = key.GetSubKeyNames(); + + foreach (string s in names) + { + RegistryKey subkey = HKLM.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\" + s); + if (subkey != null) + if (!String.IsNullOrEmpty((string)subkey.GetValue("DisplayName"))) + { + productName = (string)subkey.GetValue("DisplayName"); + } + if (productName != null) + if (productName.Contains("SmarterMail")) + { + if (subkey != null) productVersion = (string)subkey.GetValue("DisplayVersion"); + break; + } + } + + if (!String.IsNullOrEmpty(productVersion)) + { + int version = 0; + string[] split = productVersion.Split(new[] { '.' }); + + if (int.TryParse(split[0], out version)) + { + if (version >= 100) return true; + } + else + return split[0].Equals("100"); + } + + return false; + } + #endregion + + protected string GetDomainName(string email) + { + return email.Substring(email.IndexOf('@') + 1); + } + + protected string GetAccountName(string email) + { + return email.Substring(0, email.IndexOf('@')); + } + + protected string GetBoolean(string Boolean) + { + //Log.WriteInfo("GetBoolean: {0}", Boolean); + if (Boolean == "1" | Boolean == "true") + { + return "true"; + } + else + { + return "false"; + } + } + } +} diff --git a/SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/SolidCP.Providers.Mail.SmarterMail100.csproj b/SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/SolidCP.Providers.Mail.SmarterMail100.csproj new file mode 100644 index 000000000..70b67094a --- /dev/null +++ b/SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/SolidCP.Providers.Mail.SmarterMail100.csproj @@ -0,0 +1,86 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7} + Library + Properties + SolidCP.Providers.Mail + SolidCP.Providers.Mail.SmarterMail100 + v4.5 + 512 + + + + true + full + true + ..\SolidCP.Server\bin\ + DEBUG;TRACE + prompt + 4 + 618 + false + AnyCPU + + + pdbonly + true + ..\SolidCP.Server\bin\ + TRACE + prompt + 4 + 618 + false + AnyCPU + + + + + False + ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + + + + + + + + + VersionInfo.cs + + + + + + {684C932A-6C75-46AC-A327-F3689D89EB42} + SolidCP.Providers.Base + + + {ADEAADF8-62E6-4AA9-9E0D-A8E552A2A85A} + SolidCP.Providers.Mail.SmarterMail10 + + + {E91E52F3-9555-4D00-B577-2B1DBDD87CA7} + SolidCP.Server.Utils + + + + + + + + + + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/packages.config b/SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/packages.config new file mode 100644 index 000000000..5dea7d0d8 --- /dev/null +++ b/SolidCP/Sources/SolidCP.Providers.Mail.SmarterMail100/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.Server.sln b/SolidCP/Sources/SolidCP.Server.sln index 4270d8719..93cd11955 100644 --- a/SolidCP/Sources/SolidCP.Server.sln +++ b/SolidCP/Sources/SolidCP.Server.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28922.388 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31912.275 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Caching Application Block", "Caching Application Block", "{C8E6F2E4-A5B8-486A-A56E-92D864524682}" ProjectSection(SolutionItems) = preProject @@ -250,6 +250,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SolidCP.Providers.DNS.MsDNS EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SolidCP.Providers.DNS.SimpleDNS90", "SolidCP.Providers.DNS.SimpleDNS90\SolidCP.Providers.DNS.SimpleDNS90.csproj", "{52C36F18-408F-4D82-AD29-B636E892DEA2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SolidCP.Providers.Mail.SmarterMail100", "SolidCP.Providers.Mail.SmarterMail100\SolidCP.Providers.Mail.SmarterMail100.csproj", "{6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1214,6 +1216,18 @@ Global {52C36F18-408F-4D82-AD29-B636E892DEA2}.Release|Mixed Platforms.Build.0 = Release|Any CPU {52C36F18-408F-4D82-AD29-B636E892DEA2}.Release|x86.ActiveCfg = Release|Any CPU {52C36F18-408F-4D82-AD29-B636E892DEA2}.Release|x86.Build.0 = Release|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Debug|x86.ActiveCfg = Debug|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Debug|x86.Build.0 = Debug|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Release|Any CPU.Build.0 = Release|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Release|x86.ActiveCfg = Release|Any CPU + {6A1CB0E4-F717-4BD5-A78A-132BBCB81CE7}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditAccount.ascx.de-DE.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditAccount.ascx.de-DE.resx new file mode 100644 index 000000000..82e27a8cb --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditAccount.ascx.de-DE.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Passwort ändern + + + Domänen-Administrator + + + Domänen-Administrator + + + Konto aktiviert + + + Ankreuzen zum Aktivieren + + + Nachricht beim Weiterleiten löschen + + + Ja + + + Vorname: + + + E-Mail weiterleiten an Adresse: + + + Nachname: + + + Nachricht: + + + Antworten an-Adresse: + + + Automatische Antworten aktivieren: + + + Signatur: + + + Betreff: + + + Automatische Antworten + + + E-Mail-Weiterleitung + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditAccount.ascx.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditAccount.ascx.resx new file mode 100644 index 000000000..c04f2873f --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditAccount.ascx.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Change Password + + + Domain Administrator + + + Domain Administrator + + + Account enabled + + + Check to Enable + + + Delete Message on Forward + + + Yes + + + First Name: + + + Forward Mail to Address: + + + Last Name: + + + Message: + + + Reply to Address: + + + Enable Autoresponder: + + + Signature: + + + Subject: + + + Autoresponder + + + Mail Forwarding + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain.ascx.de-DE.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain.ascx.de-DE.resx new file mode 100644 index 000000000..455a0377c --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain.ascx.de-DE.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + "Abuse"-Konto: + + + "Catch-All"-Konto: + + + Domänen-Aliasse : + + + Domänen-Festplattenspeicher, MB: + + + Mailing-Listen + + + Max. Nachrichtengröße [KB]: + + + POP-Empfangskonten: + + + "Postmaster"-Konto: + + + Max. Empfänger pro Nachricht: + + + Benutzer-Aliasse: + + + Benutzer: + + + Funktionen + + + Limitierungen + + + Wird geteilt + + + Technisch + + + Wird gedrosselt + + + <Nicht ausgewählt> + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain.ascx.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain.ascx.resx new file mode 100644 index 000000000..5a90fd633 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain.ascx.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Abuse Account: + + + Catch-All Account: + + + Domain Aliases : + + + Domain Disk Space, MB : + + + Mailing Lists : + + + Max Message Size, KB : + + + POP Retrieval Accounts: + + + Postmaster Account: + + + Max Recipients per Message : + + + User Aliases : + + + Users : + + + Features + + + Limits + + + Sharing + + + Technical + + + Throttling + + + <Not Selected> + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Features.ascx.de-DE.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Features.ascx.de-DE.resx new file mode 100644 index 000000000..79a24a9d3 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Features.ascx.de-DE.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Catch-Alls aktivieren + + + IMAP-Empfang aktivieren + + + E-Mail-Berichte aktivieren + + + E-Mail-Signierung aktivieren + + + POP-Empfang aktivieren + + + SyncML aktivieren + + + POP-Empfang + + + Kalender + + + Kontakte + + + Domäneninhalt-Filterung + + + Domänen-Aliasse + + + Domänen-Berichte + + + Mailing-Listen + + + Notizen + + + Domänen-Spam-Optionen + + + Aufgaben + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Features.ascx.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Features.ascx.resx new file mode 100644 index 000000000..05dd194c2 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Features.ascx.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Enable Catch-Alls + + + Enable IMAP Retreival + + + Enable Email Reports + + + Enable Mail Signing + + + Enable POP Retrieval + + + Enable SyncML + + + Pop Retreival + + + Calendar + + + Contacts + + + Domain Content Filtering + + + Domain Aliases + + + Domain Reports + + + Mailing Lists + + + Notes + + + Domain Spam Options + + + Tasks + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Sharing.ascx.de-DE.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Sharing.ascx.de-DE.resx new file mode 100644 index 000000000..f0530c7a9 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Sharing.ascx.de-DE.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Globale Adressliste + + + Geteilte Kalender + + + Geteilte Kontakte + + + Geteilte Ordner + + + Geteilte Notizen + + + Geteilte Aufgaben + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Sharing.ascx.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Sharing.ascx.resx new file mode 100644 index 000000000..7c06f6680 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Sharing.ascx.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Global Address List + + + Shared Calendars + + + Shared Contacts + + + Shared Folders + + + Shared Notes + + + Shared Tasks + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Throttling.ascx.de-DE.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Throttling.ascx.de-DE.resx new file mode 100644 index 000000000..09e92d58b --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Throttling.ascx.de-DE.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ausgehender Traffic pro Stunde [MB]: + + + Pro Stunde erhaltene Bounces: + + + Aktiviert + + + Ausgehende Nachrichten pro Stunde: + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Throttling.ascx.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Throttling.ascx.resx new file mode 100644 index 000000000..ba5d28640 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditDomain_Throttling.ascx.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Outgoing Bandwidth per Hour, MB: + + + Bounces Received per Hour: + + + Enabled + + + Outgoing Messages per Hour: + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditForwarding.ascx.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditForwarding.ascx.resx new file mode 100644 index 000000000..4fdb1b6af --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditForwarding.ascx.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditGroup.ascx.de-DE.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditGroup.ascx.de-DE.resx new file mode 100644 index 000000000..b0382b8bb --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditGroup.ascx.de-DE.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Gruppen-E-Mails: + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditGroup.ascx.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditGroup.ascx.resx new file mode 100644 index 000000000..979f144b3 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditGroup.ascx.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Group E-Mails: + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditList.ascx.de-DE.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditList.ascx.de-DE.resx new file mode 100644 index 000000000..6e9b541e8 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditList.ascx.de-DE.resx @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktiviert + + + Antworten an Liste + + + Aktiviert + + + Moderatur muss in der Maildomäne der Mailingliste sein + + + Jeder + + + Nur Abonnenten + + + Nur Moderator + + + Passwortgeschütztes Posten + + + Liste + + + Moderator + + + Absender + + + Listenbeschreibung: + + + Listenoptionen: + + + Max. Nachrichtengröße [KB]: + + + Max. Empfänger pro Nachricht: + + + Mailing-Listen-Mitglieder: + + + Moderation ist aktiviert: + + + Listenmoderator: + + + Wer kann posten: + + + Listenpasswort: + + + Abonnenten Antworten an: + + + Betreff-Prefix: + + + <Wählen Sie einen Moderator aus> + + + Zusätzliche Optionen der Liste + + + Abmelden über Betreff aktivieren: + + + Übersichtsmodus aktivieren: + + + LIST Befehl aktivieren: + + + SUBSCRIBE Befehl aktivieren: + + + Von Adresse der Liste: + + + Antworten an Adresse der Liste: + + + An Adresse der Liste: + + + Anmeldungs-E-Mail versenden: + + + Abmeldungs-E-Mail versenden: + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditList.ascx.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditList.ascx.resx new file mode 100644 index 000000000..b3e5ea6cf --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_EditList.ascx.resx @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Enabled + + + Reply To List + + + Enabled + + + Moderator should be within mail domain where Mail List is located + + + Anyone + + + Subscribers Only + + + Moderator Only + + + Password Protected Posting + + + List + + + Moderator + + + Sender + + + List Description: + + + List Options: + + + Max Message Size, KB: + + + Max Recipients per Message: + + + Mailing List Members: + + + Moderation is Enabled: + + + List Moderator: + + + Who Can Post: + + + List Password: + + + Subscribers Reply To: + + + Subject Prefix: + + + <Choose a moderator> + + + List Additional Options + + + Enable Unsubscribe from Subject: + + + Enable Digest Mode: + + + Enable LIST Command: + + + Enable SUBSCRIBE Command: + + + List From Address: + + + List Reply To Address: + + + List To Address: + + + Send Subscribe Email: + + + Send Unsubscribe Email: + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_Settings.ascx.de-DE.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_Settings.ascx.de-DE.resx new file mode 100644 index 000000000..9f00c537b --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_Settings.ascx.de-DE.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Domänen-Administratoren aktivieren + + + Domänen-Administrator importieren + + + System-Administrator importieren + + + Vererbbare Standard-Domänenbegrenzungen &nbsp; (Standard-Domänenbegrenzungen werden auf alle neu erstellten Domänen angewendet) + + + Admin-Anmeldung: + + + Admin-Passwort: + + + Aktuelles Admin-Passwort: + + + Domänen-Stammordner: + + + Öffentliche IP-Adresse: + + + SmarterMail-Webdienste-URL: + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_Settings.ascx.resx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_Settings.ascx.resx new file mode 100644 index 000000000..37daa8bb6 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/App_LocalResources/SmarterMail100x_Settings.ascx.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Enable Domain Administrators + + + Import Domain Admin + + + Import System Admin + + + Inherit Domain Default Limits &nbsp; (Domain Default Limits will be applied for all new created domains) + + + Admin Login: + + + Admin Password: + + + Current Admin Password: + + + Domains Root Folder: + + + Public IP Address: + + + SmarterMail Web Services URL: + + \ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx new file mode 100644 index 000000000..783087cf7 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx @@ -0,0 +1,113 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100x_EditAccount.ascx.cs" Inherits="SolidCP.Portal.ProviderControls.SmarterMail100x_EditAccount" %> +<%@ Register TagPrefix="scp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %> + + +
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+ + + + + + + + + + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ + + + + + + + + + + + +
+ + +
+ + +
+
diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx.cs new file mode 100644 index 000000000..1b62b4846 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx.cs @@ -0,0 +1,88 @@ +// Copyright (c) 2016, SolidCP +// SolidCP is distributed under the Creative Commons Share-alike license +// +// SolidCP is a fork of WebsitePanel: +// Copyright (c) 2015, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using SolidCP.Providers.Common; +using SolidCP.Providers.Mail; + +namespace SolidCP.Portal.ProviderControls +{ + public partial class SmarterMail100x_EditAccount : SolidCPControlBase, IMailEditAccountControl + { + protected void Page_Load(object sender, EventArgs e) + { + + passwordRow.Visible = (PanelRequest.ItemID > 0); + } + + public void BindItem(MailAccount item) + { + txtFirstName.Text = item.FirstName; + txtLastName.Text = item.LastName; + txtSignature.Text = item.Signature; + cbEnableAccount.Checked = item.Enabled; + chkResponderEnabled.Checked = item.ResponderEnabled; + txtReplyTo.Text = item.ReplyTo; + txtSubject.Text = item.ResponderSubject; + txtMessage.Text = item.ResponderMessage; + txtForward.Text = item.ForwardingAddresses != null ? String.Join("; ", item.ForwardingAddresses) : ""; + chkDeleteOnForward.Checked = item.DeleteOnForward; + if (item.IsDomainAdminEnabled) + { + domainAdminRow.Visible = item.IsDomainAdminEnabled; + cbDomainAdmin.Checked = item.IsDomainAdmin; + } + else + { + domainAdminRow.Visible = item.IsDomainAdminEnabled; + cbDomainAdmin.Checked = false; + } + } + + public void SaveItem(MailAccount item) + { + item.FirstName = txtFirstName.Text; + item.LastName = txtLastName.Text; + item.Signature = txtSignature.Text; + item.ResponderEnabled = chkResponderEnabled.Checked; + item.Enabled = cbEnableAccount.Checked; + item.ReplyTo = txtReplyTo.Text; + item.ResponderSubject = txtSubject.Text; + item.ResponderMessage = txtMessage.Text; + item.ForwardingAddresses = Utils.ParseDelimitedString(txtForward.Text, ';', ' ', ','); + item.DeleteOnForward = chkDeleteOnForward.Checked; + item.ChangePassword = cbChangePassword.Checked; + item.ChangePassword = cbChangePassword.Checked; + item.IsDomainAdmin = cbDomainAdmin.Checked; + } + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx.designer.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx.designer.cs new file mode 100644 index 000000000..fbb0b465e --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditAccount.ascx.designer.cs @@ -0,0 +1,339 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SolidCP.Portal.ProviderControls { + + + public partial class SmarterMail100x_EditAccount { + + /// + /// passwordRow control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl passwordRow; + + /// + /// Label1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label Label1; + + /// + /// Localize1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize Localize1; + + /// + /// cbChangePassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbChangePassword; + + /// + /// Label2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label Label2; + + /// + /// Localize2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize Localize2; + + /// + /// cbEnableAccount control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbEnableAccount; + + /// + /// domainAdminRow control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl domainAdminRow; + + /// + /// Label3 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label Label3; + + /// + /// Localize3 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize Localize3; + + /// + /// cbDomainAdmin control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbDomainAdmin; + + /// + /// lblFirstName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblFirstName; + + /// + /// locFirstName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locFirstName; + + /// + /// txtFirstName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtFirstName; + + /// + /// lblLastName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblLastName; + + /// + /// LocLastName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize LocLastName; + + /// + /// txtLastName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtLastName; + + /// + /// lblReplyTo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblReplyTo; + + /// + /// LocReplyTo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize LocReplyTo; + + /// + /// txtReplyTo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtReplyTo; + + /// + /// lblSignature control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblSignature; + + /// + /// LocSignature control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize LocSignature; + + /// + /// txtSignature control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtSignature; + + /// + /// secAutoresponder control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.CollapsiblePanel secAutoresponder; + + /// + /// AutoresponderPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel AutoresponderPanel; + + /// + /// lblResponderEnabled control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblResponderEnabled; + + /// + /// chkResponderEnabled control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkResponderEnabled; + + /// + /// lblSubject control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblSubject; + + /// + /// txtSubject control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtSubject; + + /// + /// lblMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblMessage; + + /// + /// txtMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtMessage; + + /// + /// secForwarding control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.CollapsiblePanel secForwarding; + + /// + /// ForwardingPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel ForwardingPanel; + + /// + /// lblForwardTo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblForwardTo; + + /// + /// txtForward control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtForward; + + /// + /// chkDeleteOnForward control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkDeleteOnForward; + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx new file mode 100644 index 000000000..2494fdc95 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx @@ -0,0 +1,145 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100x_EditDomain.ascx.cs" Inherits="SolidCP.Portal.ProviderControls.SmarterMail100x_EditDomain" %> +<%@ Register Src="SmarterMail100x_EditDomain_Features.ascx" TagName="SmarterMail100x_EditDomain_Features" + TagPrefix="uc4" %> +<%@ Register Src="SmarterMail100x_EditDomain_Sharing.ascx" TagName="SmarterMail100x_EditDomain_Sharing" + TagPrefix="uc3" %> +<%@ Register Src="SmarterMail100x_EditDomain_Throttling.ascx" TagName="SmarterMail100x_EditDomain_Throttling" + TagPrefix="uc5" %> + +<%@ Register Src="../UserControls/QuotaEditor.ascx" TagName="QuotaEditor" TagPrefix="uc1" %> +<%@ Register TagPrefix="scp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %> + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<%-- + + + --%> + + + + + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+
+ +
\ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.bak b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.bak new file mode 100644 index 000000000..d667c2e3c --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.bak @@ -0,0 +1,145 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100x_EditDomain.ascx.cs" Inherits="SolidCP.Portal.ProviderControls.SmarterMail100x_EditDomain" %> +<%@ Register Src="SmarterMail60_EditDomain_Features.ascx" TagName="SmarterMail60_EditDomain_Features" + TagPrefix="uc4" %> +<%@ Register Src="SmarterMail60_EditDomain_Sharing.ascx" TagName="SmarterMail60_EditDomain_Sharing" + TagPrefix="uc3" %> +<%@ Register Src="SmarterMail60_EditDomain_Throttling.ascx" TagName="SmarterMail60_EditDomain_Throttling" + TagPrefix="uc5" %> + +<%@ Register Src="../UserControls/QuotaEditor.ascx" TagName="QuotaEditor" TagPrefix="uc1" %> +<%@ Register TagPrefix="scp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %> + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+
+ +
\ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.cs new file mode 100644 index 000000000..84f6e6136 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.cs @@ -0,0 +1,187 @@ +// Copyright (c) 2016, SolidCP +// SolidCP is distributed under the Creative Commons Share-alike license +// +// SolidCP is a fork of WebsitePanel: +// Copyright (c) 2015, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using System.Web.UI.WebControls; +using SolidCP.EnterpriseServer; +using SolidCP.Providers.Mail; + +namespace SolidCP.Portal.ProviderControls +{ + public partial class SmarterMail100x_EditDomain : SolidCPControlBase, IMailEditDomainControl + { + protected void Page_Load(object sender, EventArgs e) + { + PackageInfo info = ES.Services.Packages.GetPackage(PanelSecurity.PackageId); + + AdvancedSettingsPanel.Visible = PanelSecurity.EffectiveUser.Role == UserRole.Administrator; + InitValidators(); + } + + public void BindItem(MailDomain item) + { + BindMailboxes(item); + BindQuotas(item); + + featuresSection.BindItem(item); + sharingSection.BindItem(item); + throttlingSection.BindItem(item); + + + if (item[MailDomain.SMARTERMAIL_LICENSE_TYPE] == "PRO") + { + secSharing.Visible = false; + sharingSection.Visible = false; + secThrottling.Visible = false; + throttlingSection.Visible = false; + } + else + { + sharingSection.BindItem(item); + throttlingSection.BindItem(item); + } + + } + + public void SaveItem(MailDomain item) + { + item.CatchAllAccount = ddlCatchAllAccount.SelectedValue; + SaveQuotas(item); + + featuresSection.SaveItem(item); + sharingSection.SaveItem(item); + throttlingSection.SaveItem(item); + + + if (item[MailDomain.SMARTERMAIL_LICENSE_TYPE] == "PRO") + { + secSharing.Visible = false; + sharingSection.Visible = false; + secThrottling.Visible = false; + throttlingSection.Visible = false; + } + else + { + sharingSection.SaveItem(item); + throttlingSection.SaveItem(item); + } + } + + private void SaveQuotas(MailDomain item) + { + item.MaxDomainSizeInMB = Utils.ParseInt(txtSize.Text); + item.MaxDomainAliases = Utils.ParseInt(txtDomainAliases.Text); + item.MaxDomainUsers = Utils.ParseInt(txtUser.Text); + item.MaxAliases = Utils.ParseInt(txtUserAliases.Text); + item.MaxLists = Utils.ParseInt(txtMailingLists.Text); + //item[MailDomain.SMARTERMAIL5_POP_RETREIVAL_ACCOUNTS] = txtPopRetreivalAccounts.Text; + item.MaxRecipients = Utils.ParseInt(txtRecipientsPerMessage.Text); + item.MaxMessageSize = Utils.ParseInt(txtMessageSize.Text); + } + + private void BindQuotas(MailDomain item) + { + txtSize.Text = item.MaxDomainSizeInMB.ToString(); + txtDomainAliases.Text = item.MaxDomainAliases.ToString(); + txtUser.Text = item.MaxDomainUsers.ToString(); + txtUserAliases.Text = item.MaxAliases.ToString(); + txtMailingLists.Text = item.MaxLists.ToString(); + //txtPopRetreivalAccounts.Text = item[MailDomain.SMARTERMAIL5_POP_RETREIVAL_ACCOUNTS]; + txtRecipientsPerMessage.Text = item.MaxRecipients.ToString(); + txtMessageSize.Text = item.MaxMessageSize.ToString(); + } + + private void BindMailboxes(MailDomain item) + { + MailAccount[] accounts = ES.Services.MailServers.GetMailAccounts(item.PackageId, false); + MailAlias[] forwardings = ES.Services.MailServers.GetMailForwardings(item.PackageId, false); + + BindAccounts(item, ddlCatchAllAccount, accounts); + BindAccounts(item, ddlCatchAllAccount, forwardings); + Utils.SelectListItem(ddlCatchAllAccount, item.CatchAllAccount); + + } + + private void BindAccounts(MailDomain item, DropDownList ddl, MailAccount[] accounts) + { + if (ddl.Items.Count == 0) + ddl.Items.Add(new ListItem(GetLocalizedString("Text.NotSelected"), "")); + + foreach (MailAccount account in accounts) + { + int idx = account.Name.IndexOf("@"); + string accountName = account.Name.Substring(0, idx); + string accountDomain = account.Name.Substring(idx + 1); + + if (String.Compare(accountDomain, item.Name, true) == 0) + ddl.Items.Add(new ListItem(account.Name, accountName)); + } + } + + private void InitValidators() + { + string message = "*"; + reqValRecipientsPerMessage.ErrorMessage = message; + valRecipientsPerMessage.ErrorMessage = message; + valRecipientsPerMessage.MaximumValue = int.MaxValue.ToString(); + + reqValMessageSize.ErrorMessage = message; + valMessageSize.ErrorMessage = message; + valMessageSize.MaximumValue = int.MaxValue.ToString(); + + reqValMailingLists.ErrorMessage = message; + valMailingLists.ErrorMessage = message; + valMailingLists.MaximumValue = int.MaxValue.ToString(); + + //reqPopRetreivalAccounts.ErrorMessage = message; + //valPopRetreivalAccounts.ErrorMessage = message; + //valPopRetreivalAccounts.MaximumValue = int.MaxValue.ToString(); + + reqValUser.ErrorMessage = message; + valUser.ErrorMessage = message; + valUser.MaximumValue = int.MaxValue.ToString(); + + reqValUserAliases.ErrorMessage = message; + valUserAliases.ErrorMessage = message; + valUserAliases.MaximumValue = int.MaxValue.ToString(); + + reqValDomainAliases.ErrorMessage = message; + valDomainAliases.ErrorMessage = message; + valDomainAliases.MaximumValue = int.MaxValue.ToString(); + + reqValDiskSpace.ErrorMessage = message; + valDomainDiskSpace.ErrorMessage = message; + valDomainDiskSpace.MaximumValue = int.MaxValue.ToString(); + + } + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.designer.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.designer.cs new file mode 100644 index 000000000..62f1e3387 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.designer.cs @@ -0,0 +1,395 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SolidCP.Portal.ProviderControls +{ + + + public partial class SmarterMail100x_EditDomain + { + + /// + /// lblCatchAll control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblCatchAll; + + /// + /// ddlCatchAllAccount control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlCatchAllAccount; + + /// + /// AdvancedSettingsPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel AdvancedSettingsPanel; + + /// + /// secFeatures control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.CollapsiblePanel secFeatures; + + /// + /// FeaturesPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel FeaturesPanel; + + /// + /// featuresSection control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.ProviderControls.SmarterMail100x_EditDomain_Features featuresSection; + + /// + /// secSharing control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.CollapsiblePanel secSharing; + + /// + /// SharingPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel SharingPanel; + + /// + /// sharingSection control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.ProviderControls.SmarterMail100x_EditDomain_Sharing sharingSection; + + /// + /// secThrottling control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.CollapsiblePanel secThrottling; + + /// + /// ThrottlingPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel ThrottlingPanel; + + /// + /// throttlingSection control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.ProviderControls.SmarterMail100x_EditDomain_Throttling throttlingSection; + + /// + /// secLimits control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.CollapsiblePanel secLimits; + + /// + /// LimitsPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel LimitsPanel; + + /// + /// lblDomainDiskSpace control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblDomainDiskSpace; + + /// + /// txtSize control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtSize; + + /// + /// valDomainDiskSpace control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valDomainDiskSpace; + + /// + /// reqValDiskSpace control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValDiskSpace; + + /// + /// lblDomainAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblDomainAliases; + + /// + /// txtDomainAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtDomainAliases; + + /// + /// valDomainAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valDomainAliases; + + /// + /// reqValDomainAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValDomainAliases; + + /// + /// lblUserQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblUserQuota; + + /// + /// txtUser control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtUser; + + /// + /// valUser control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valUser; + + /// + /// reqValUser control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValUser; + + /// + /// lblUserAliasesQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblUserAliasesQuota; + + /// + /// txtUserAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtUserAliases; + + /// + /// valUserAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valUserAliases; + + /// + /// reqValUserAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValUserAliases; + + /// + /// lblMailingListsQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblMailingListsQuota; + + /// + /// txtMailingLists control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtMailingLists; + + /// + /// valMailingLists control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valMailingLists; + + /// + /// reqValMailingLists control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValMailingLists; + + /// + /// lblMessageSizeQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblMessageSizeQuota; + + /// + /// txtMessageSize control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtMessageSize; + + /// + /// valMessageSize control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valMessageSize; + + /// + /// reqValMessageSize control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValMessageSize; + + /// + /// lblRecipientsPerMessageQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblRecipientsPerMessageQuota; + + /// + /// txtRecipientsPerMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtRecipientsPerMessage; + + /// + /// valRecipientsPerMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valRecipientsPerMessage; + + /// + /// reqValRecipientsPerMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValRecipientsPerMessage; + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.designer.cs.bak b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.designer.cs.bak new file mode 100644 index 000000000..3bc816987 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain.ascx.designer.cs.bak @@ -0,0 +1,431 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SolidCP.Portal.ProviderControls +{ + + + public partial class SmarterMail100x_EditDomain + { + + /// + /// lblCatchAll control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblCatchAll; + + /// + /// ddlCatchAllAccount control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlCatchAllAccount; + + /// + /// AdvancedSettingsPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel AdvancedSettingsPanel; + + /// + /// secFeatures control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.CollapsiblePanel secFeatures; + + /// + /// FeaturesPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel FeaturesPanel; + + /// + /// featuresSection control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.ProviderControls.SmarterMail60_EditDomain_Features featuresSection; + + /// + /// secSharing control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.CollapsiblePanel secSharing; + + /// + /// SharingPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel SharingPanel; + + /// + /// sharingSection control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.ProviderControls.SmarterMail60_EditDomain_Sharing sharingSection; + + /// + /// secThrottling control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.CollapsiblePanel secThrottling; + + /// + /// ThrottlingPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel ThrottlingPanel; + + /// + /// throttlingSection control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.ProviderControls.SmarterMail60_EditDomain_Throttling throttlingSection; + + /// + /// secLimits control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.CollapsiblePanel secLimits; + + /// + /// LimitsPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel LimitsPanel; + + /// + /// lblDomainDiskSpace control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblDomainDiskSpace; + + /// + /// txtSize control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtSize; + + /// + /// valDomainDiskSpace control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valDomainDiskSpace; + + /// + /// reqValDiskSpace control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValDiskSpace; + + /// + /// lblDomainAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblDomainAliases; + + /// + /// txtDomainAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtDomainAliases; + + /// + /// valDomainAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valDomainAliases; + + /// + /// reqValDomainAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValDomainAliases; + + /// + /// lblUserQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblUserQuota; + + /// + /// txtUser control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtUser; + + /// + /// valUser control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valUser; + + /// + /// reqValUser control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValUser; + + /// + /// lblUserAliasesQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblUserAliasesQuota; + + /// + /// txtUserAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtUserAliases; + + /// + /// valUserAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valUserAliases; + + /// + /// reqValUserAliases control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValUserAliases; + + /// + /// lblMailingListsQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblMailingListsQuota; + + /// + /// txtMailingLists control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtMailingLists; + + /// + /// valMailingLists control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valMailingLists; + + /// + /// reqValMailingLists control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValMailingLists; + + /// + /// lblPopRetreivalAccounts control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblPopRetreivalAccounts; + + /// + /// txtPopRetreivalAccounts control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtPopRetreivalAccounts; + + /// + /// valPopRetreivalAccounts control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valPopRetreivalAccounts; + + /// + /// reqPopRetreivalAccounts control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqPopRetreivalAccounts; + + /// + /// lblMessageSizeQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblMessageSizeQuota; + + /// + /// txtMessageSize control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtMessageSize; + + /// + /// valMessageSize control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valMessageSize; + + /// + /// reqValMessageSize control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValMessageSize; + + /// + /// lblRecipientsPerMessageQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblRecipientsPerMessageQuota; + + /// + /// txtRecipientsPerMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtRecipientsPerMessage; + + /// + /// valRecipientsPerMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valRecipientsPerMessage; + + /// + /// reqValRecipientsPerMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValRecipientsPerMessage; + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx new file mode 100644 index 000000000..aec447530 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx @@ -0,0 +1,69 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100x_EditDomain_Features.ascx.cs" Inherits="SolidCP.Portal.ProviderControls.SmarterMail100x_EditDomain_Features" %> + +<%-- + + + --%> + + + + + + + + + + + + +<%-- + + + + + + + + + + + + + + + + + + + + + + + + + + + --%> +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
\ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx.cs new file mode 100644 index 000000000..dca569ecf --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx.cs @@ -0,0 +1,75 @@ +// Copyright (c) 2016, SolidCP +// SolidCP is distributed under the Creative Commons Share-alike license +// +// SolidCP is a fork of WebsitePanel: +// Copyright (c) 2015, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using SolidCP.Providers.Mail; + +namespace SolidCP.Portal.ProviderControls +{ + public partial class SmarterMail100x_EditDomain_Features : SolidCPControlBase + { + protected void Page_Load(object sender, EventArgs e) + { + + } + + public void SaveItem(MailDomain item) + { + //item.ShowContentFilteringMenu = cbShowcontentfilteringmenu.Checked; + item.ShowDomainAliasMenu = cbShowdomainaliasmenu.Checked; + item.ShowListMenu = cbShowlistmenu.Checked; + item.ShowSpamMenu = cbShowspammenu.Checked; + //item[MailDomain.SMARTERMAIL5_SHOW_DOMAIN_REPORTS] = cbShowDomainReports.Checked.ToString(); + //item[MailDomain.SMARTERMAIL5_POP_RETREIVAL_ENABLED] = cbEnablePopRetreival.Checked.ToString(); + //item[MailDomain.SMARTERMAIL5_CATCHALLS_ENABLED] = cbEnableCatchAlls.Checked.ToString(); + //item[MailDomain.SMARTERMAIL6_IMAP_RETREIVAL_ENABLED] = cbEnableIMAPRetreival.ToString(); + //item[MailDomain.SMARTERMAIL6_MAIL_SIGNING_ENABLED] = cbEnableEmailSigning.ToString(); + //item[MailDomain.SMARTERMAIL6_EMAIL_REPORTS_ENABLED] = cbEnableEmailReports.ToString(); + //item[MailDomain.SMARTERMAIL6_SYNCML_ENABLED] = cbEnableSyncML.ToString(); + } + + public void BindItem(MailDomain item) + { + //cbShowcontentfilteringmenu.Checked = item.ShowContentFilteringMenu; + cbShowdomainaliasmenu.Checked = item.ShowDomainAliasMenu; + cbShowlistmenu.Checked = item.ShowListMenu; + cbShowspammenu.Checked = item.ShowSpamMenu; + //cbShowDomainReports.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_SHOW_DOMAIN_REPORTS]); + //cbEnablePopRetreival.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_POP_RETREIVAL_ENABLED]); + //cbEnableCatchAlls.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_CATCHALLS_ENABLED]); + //cbEnableIMAPRetreival.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL6_IMAP_RETREIVAL_ENABLED]); + //cbEnableEmailSigning.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL6_MAIL_SIGNING_ENABLED]); + //cbEnableEmailReports.Checked = Convert.ToBoolean((item[MailDomain.SMARTERMAIL6_EMAIL_REPORTS_ENABLED])); + //cbEnableSyncML.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL6_SYNCML_ENABLED]); + } + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx.designer.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx.designer.cs new file mode 100644 index 000000000..1ada525af --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Features.ascx.designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SolidCP.Portal.ProviderControls +{ + + + public partial class SmarterMail100x_EditDomain_Features + { + + /// + /// Label2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label Label2; + + /// + /// cbShowdomainaliasmenu control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbShowdomainaliasmenu; + + /// + /// Label3 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label Label3; + + /// + /// cbShowlistmenu control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbShowlistmenu; + + /// + /// Label4 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label Label4; + + /// + /// cbShowspammenu control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbShowspammenu; + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx new file mode 100644 index 000000000..74226cc13 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx @@ -0,0 +1,27 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100x_EditDomain_Sharing.ascx.cs" Inherits="SolidCP.Portal.ProviderControls.SmarterMail100x_EditDomain_Sharing" %> + + + + + + + + + +<%-- + + + + + + + + + + + + + + + --%> +
\ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx.cs new file mode 100644 index 000000000..4178c419b --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx.cs @@ -0,0 +1,67 @@ +// Copyright (c) 2016, SolidCP +// SolidCP is distributed under the Creative Commons Share-alike license +// +// SolidCP is a fork of WebsitePanel: +// Copyright (c) 2015, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using SolidCP.Providers.Mail; + +namespace SolidCP.Portal.ProviderControls +{ + public partial class SmarterMail100x_EditDomain_Sharing : SolidCPControlBase + { + protected void Page_Load(object sender, EventArgs e) + { + + } + + public void SaveItem(MailDomain item) + { + item.IsGlobalAddressList = cbGlobalAddressList.Checked; + item.SharedCalendars = cbSharedCalendars.Checked; + //item.SharedContacts = cbSharedContacts.Checked; + //item.SharedFolders = cbSharedFolders.Checked; + //item.SharedNotes = cbSharedNotes.Checked; + //item.SharedTasks = cbSharedTasks.Checked; + + } + + public void BindItem(MailDomain item) + { + cbGlobalAddressList.Checked = item.IsGlobalAddressList; + cbSharedCalendars.Checked = item.SharedCalendars; + //cbSharedContacts.Checked = item.SharedContacts; + //cbSharedFolders.Checked = item.SharedFolders; + //cbSharedNotes.Checked = item.SharedNotes; + //cbSharedTasks.Checked = item.SharedTasks; + } + + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx.designer.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx.designer.cs new file mode 100644 index 000000000..1833bf73a --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Sharing.ascx.designer.cs @@ -0,0 +1,53 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SolidCP.Portal.ProviderControls +{ + + + public partial class SmarterMail100x_EditDomain_Sharing + { + + /// + /// Label1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label Label1; + + /// + /// cbGlobalAddressList control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbGlobalAddressList; + + /// + /// Label2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label Label2; + + /// + /// cbSharedCalendars control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbSharedCalendars; + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx new file mode 100644 index 000000000..85df40b16 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx @@ -0,0 +1,45 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100x_EditDomain_Throttling.ascx.cs" Inherits="SolidCP.Portal.ProviderControls.SmarterMail100x_EditDomain_Throttling" %> + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
\ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx.cs new file mode 100644 index 000000000..3ee84b0b2 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx.cs @@ -0,0 +1,83 @@ +// Copyright (c) 2016, SolidCP +// SolidCP is distributed under the Creative Commons Share-alike license +// +// SolidCP is a fork of WebsitePanel: +// Copyright (c) 2015, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using SolidCP.Providers.Mail; + +namespace SolidCP.Portal.ProviderControls +{ + public partial class SmarterMail100x_EditDomain_Throttling : SolidCPControlBase + { + protected void Page_Load(object sender, EventArgs e) + { + InitValidators(); + } + + public void SaveItem(MailDomain item) + { + item[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR] = txtMessagesPerHour.Text; + item[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR_ENABLED] = cbMessagesPerHour.Checked.ToString(); + item[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR] = txtBandwidthPerHour.Text; + item[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR_ENABLED] = cbBandwidthPerHour.Checked.ToString(); + item[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR] = txtBouncesPerHour.Text; + item[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR_ENABLED] = cbBouncesPerHour.Checked.ToString(); + } + + public void BindItem(MailDomain item) + { + txtMessagesPerHour.Text = item[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR]; + cbMessagesPerHour.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR_ENABLED]); + txtBandwidthPerHour.Text = item[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR]; + cbBandwidthPerHour.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR_ENABLED]); + txtBouncesPerHour.Text = item[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR]; + cbBouncesPerHour.Checked = Convert.ToBoolean(item[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR_ENABLED]); + } + + public void InitValidators() + { + string message = "*"; + + reqValMessagesPerHour.ErrorMessage = message; + valMessagesPerHour.ErrorMessage = message; + valMessagesPerHour.MaximumValue = int.MaxValue.ToString(); + + reqValBandwidth.ErrorMessage = message; + valBandwidthPerHour.ErrorMessage = message; + valBandwidthPerHour.MaximumValue = int.MaxValue.ToString(); + + reqValBouncesPerHour.ErrorMessage = message; + valBouncesPerHour.ErrorMessage = message; + valBouncesPerHour.MaximumValue = int.MaxValue.ToString(); + } + } + +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx.designer.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx.designer.cs new file mode 100644 index 000000000..c8f2197d0 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditDomain_Throttling.ascx.designer.cs @@ -0,0 +1,177 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SolidCP.Portal.ProviderControls { + + + public partial class SmarterMail100x_EditDomain_Throttling { + + /// + /// lbMessagesPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lbMessagesPerHour; + + /// + /// txtMessagesPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtMessagesPerHour; + + /// + /// valMessagesPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valMessagesPerHour; + + /// + /// reqValMessagesPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValMessagesPerHour; + + /// + /// cbMessagesPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbMessagesPerHour; + + /// + /// lbMessagesPerHourEnabled control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lbMessagesPerHourEnabled; + + /// + /// lbBandwidthPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lbBandwidthPerHour; + + /// + /// txtBandwidthPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtBandwidthPerHour; + + /// + /// valBandwidthPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valBandwidthPerHour; + + /// + /// reqValBandwidth control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValBandwidth; + + /// + /// cbBandwidthPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbBandwidthPerHour; + + /// + /// lbBandwidthPerHourEnabled control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lbBandwidthPerHourEnabled; + + /// + /// lbBouncesPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lbBouncesPerHour; + + /// + /// txtBouncesPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtBouncesPerHour; + + /// + /// valBouncesPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator valBouncesPerHour; + + /// + /// reqValBouncesPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValBouncesPerHour; + + /// + /// cbBouncesPerHour control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbBouncesPerHour; + + /// + /// lbBouncesPerHourEnabled control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lbBouncesPerHourEnabled; + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx new file mode 100644 index 000000000..2c63cc748 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx @@ -0,0 +1 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100x_EditForwarding.ascx.cs" Inherits="SolidCP.Portal.ProviderControls.SmarterMail100x_EditForwarding" %> diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx.cs new file mode 100644 index 000000000..c5bcdf90e --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx.cs @@ -0,0 +1,55 @@ +// Copyright (c) 2016, SolidCP +// SolidCP is distributed under the Creative Commons Share-alike license +// +// SolidCP is a fork of WebsitePanel: +// Copyright (c) 2015, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using SolidCP.Providers.Mail; + +namespace SolidCP.Portal.ProviderControls +{ + public partial class SmarterMail100x_EditForwarding : SolidCPControlBase, IMailEditForwardingControl + { + protected void Page_Load(object sender, EventArgs e) + { + + } + + public void BindItem(MailAlias item) + { + + } + + public void SaveItem(MailAlias item) + { + + } + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx.designer.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx.designer.cs new file mode 100644 index 000000000..97fae7d81 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditForwarding.ascx.designer.cs @@ -0,0 +1,15 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SolidCP.Portal.ProviderControls { + + + public partial class SmarterMail100x_EditForwarding { + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx new file mode 100644 index 000000000..686556e11 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx @@ -0,0 +1,8 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100x_EditGroup.ascx.cs" Inherits="SolidCP.Portal.ProviderControls.SmarterMail100x_EditGroup" %> +<%@ Register TagPrefix="dnc" TagName="EditItemsList" Src="../MailEditItems.ascx" %> +
+ +
+ +
+
\ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx.cs new file mode 100644 index 000000000..18ea21591 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx.cs @@ -0,0 +1,55 @@ +// Copyright (c) 2016, SolidCP +// SolidCP is distributed under the Creative Commons Share-alike license +// +// SolidCP is a fork of WebsitePanel: +// Copyright (c) 2015, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using SolidCP.Providers.Mail; + +namespace SolidCP.Portal.ProviderControls +{ + public partial class SmarterMail100x_EditGroup : SolidCPControlBase, IMailEditGroupControl + { + protected void Page_Load(object sender, EventArgs e) + { + } + + public void BindItem(MailGroup item) + { + mailEditItems.Items = item.Members; + } + + public void SaveItem(MailGroup item) + { + item.Members = mailEditItems.Items; + } + } + +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx.designer.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx.designer.cs new file mode 100644 index 000000000..d3057f3d7 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditGroup.ascx.designer.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SolidCP.Portal.ProviderControls { + + + public partial class SmarterMail100x_EditGroup { + + /// + /// lblGroupMembers control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblGroupMembers; + + /// + /// mailEditItems control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.MailEditItems mailEditItems; + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx new file mode 100644 index 000000000..fe4b3fb82 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx @@ -0,0 +1,175 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100x_EditList.ascx.cs" Inherits="SolidCP.Portal.ProviderControls.SmarterMail100x_EditList" %> +<%@ Register TagPrefix="dnc" TagName="EditItemsList" Src="../MailEditItems.ascx" %> +<%@ Register TagPrefix="scp" Namespace="SolidCP.WebPortal.Code.Controls" Assembly="SolidCP.WebPortal" %> +<%@ Register TagPrefix="scp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %> + + + + + + + + + + + + + + + + + + + + + + +<%-- + + + --%> +<%-- + + + --%> + + + +<%-- + + + + --%> + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + +
+ + + + +
+ + + + Anyone + MembersOnly + ModeratorOnly + +
+ + + + +
+ + + 0 +
+ + + 10 +
 
+ + +
+ + + + Default + List Address + Subscriber Address + +
+ + + + List Address + Poster Address + +
+ + + + List Address + Poster Address + +
 
+ + + +
+  + + + + + + + + + + + + + + + +<%-- + + + --%> + + + + +<%-- + + + --%> +
+ +
+ +
+ +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx.cs new file mode 100644 index 000000000..8ef290a8f --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx.cs @@ -0,0 +1,214 @@ +// Copyright (c) 2016, SolidCP +// SolidCP is distributed under the Creative Commons Share-alike license +// +// SolidCP is a fork of WebsitePanel: +// Copyright (c) 2015, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using System.Web.UI.WebControls; +using SolidCP.Providers.Mail; +using SolidCP.WebPortal.Code.Controls; + +namespace SolidCP.Portal.ProviderControls +{ + public partial class SmarterMail100x_EditList : SolidCPControlBase, IMailEditListControl + { + private string selectedModerator = null; + private string selectedListToAddress = null; + private string selectedListFromAddress = null; + private string selectedListReplyToAddress = null; + private string itemName = null; + private MailEditAddress ctrl = null; + + protected void Page_Load(object sender, EventArgs e) + { + txtPassword.Attributes["value"] = txtPassword.Text; + BindListModerators(); + } + + public void BindItem(MailList item) + { + itemName = item.Name; + txtDescription.Text = item.Description; + if (String.IsNullOrEmpty(item.ModeratorAddress)) + { + Utils.SelectListItem(ddlListModerators, GetLocalizedString("Text.SelectModerator")); + selectedModerator = GetLocalizedString("Text.SelectModerator"); + } + else + { + Utils.SelectListItem(ddlListModerators, item.ModeratorAddress); + selectedModerator = item.ModeratorAddress; + } + + // chkReplyToList.Checked = (item.ReplyToMode == ReplyTo.RepliesToList); + Utils.SelectListItem(ddlPostingMode, item.PostingMode); + Utils.SelectListItem(ddlListToAddress, item.ListToAddress); + selectedListToAddress = item.ListToAddress; + Utils.SelectListItem(ddlListFromAddress, item.ListFromAddress); + selectedListFromAddress = item.ListFromAddress; + Utils.SelectListItem(ddlListReplyToAddress, item.ListReplyToAddress); + selectedListReplyToAddress = item.ListReplyToAddress; + txtPassword.Text = item.Password; + chkPasswordEnabled.Checked = item.RequirePassword; + cbDigestMode.Checked = item.DigestMode; + cbSendSubcsribe.Checked = item.SendSubscribe; + cbSendUnsubscribe.Checked = item.SendUnsubscribe; + //cbAllowUnsubscribe.Checked = item.AllowUnsubscribe; + cbDisableListcommand.Checked = !item.DisableListcommand; + //cbDisableSubscribecommand.Checked = !item.DisableSubscribecommand; + txtSubjectPrefix.Text = item.SubjectPrefix; + chkSubjectPrefixEnabled.Checked = item.EnableSubjectPrefix; + //txtMaxMessageSize.Text = item.MaxMessageSize.ToString(); + //txtMaxRecipients.Text = item.MaxRecipientsPerMessage.ToString(); + + // members + mailEditItems.Items = item.Members; + } + + public void SaveItem(MailList item) + { + item.Description = txtDescription.Text; + if (ddlListModerators.SelectedValue == GetLocalizedString("Text.SelectModerator")) + { + item.ModeratorAddress = null; + } + else + { + item.ModeratorAddress = ddlListModerators.SelectedValue; + } + + //item.ReplyToMode = chkReplyToList.Checked ? ReplyTo.RepliesToList : ReplyTo.RepliesToSender; + item.PostingMode = (PostingMode)Enum.Parse(typeof(PostingMode), ddlPostingMode.SelectedValue, true); + item.ListToAddress = ddlListToAddress.SelectedValue; + item.ListFromAddress = ddlListFromAddress.SelectedValue; + item.ListReplyToAddress = ddlListReplyToAddress.SelectedValue; + item.Password = txtPassword.Text; + item.RequirePassword = chkPasswordEnabled.Checked; + item.SubjectPrefix = txtSubjectPrefix.Text; + item.EnableSubjectPrefix = chkSubjectPrefixEnabled.Checked; + item.DigestMode = cbDigestMode.Checked; + item.SendSubscribe = cbSendSubcsribe.Checked; + item.SendUnsubscribe = cbSendUnsubscribe.Checked; + //item.AllowUnsubscribe = cbAllowUnsubscribe.Checked; + item.DisableListcommand = !cbDisableListcommand.Checked; + //item.DisableSubscribecommand = !cbDisableSubscribecommand.Checked; + + //item.MaxMessageSize = Int32.Parse(txtMaxMessageSize.Text); + //item.MaxRecipientsPerMessage = Int32.Parse(txtMaxRecipients.Text); + item.Members = mailEditItems.Items; + ctrl = null; + } + + public void BindListModerators() + { + + string domainName = null; + if (!String.IsNullOrEmpty(itemName)) + { + domainName = GetDomainName(itemName); + + + MailAccount[] moderators = ES.Services.MailServers.GetMailAccounts(PanelSecurity.PackageId, true); + ddlListModerators.Items.Clear(); + ddlListModerators.Items.Insert(0, new ListItem(GetLocalizedString("Text.SelectModerator"), "")); + + if (moderators != null) + foreach (MailAccount account in moderators) + { + if (GetDomainName(account.Name) == domainName) + { + if (ddlListModerators != null) + { + ddlListModerators.Items.Add(new ListItem(account.Name)); + ddlListToAddress.Items.Add(new ListItem(account.Name)); + ddlListFromAddress.Items.Add(new ListItem(account.Name)); + ddlListReplyToAddress.Items.Add(new ListItem(account.Name)); + } + } + } + + Utils.SelectListItem(ddlListModerators, selectedModerator); + Utils.SelectListItem(ddlListToAddress, selectedListToAddress); + Utils.SelectListItem(ddlListFromAddress, selectedListFromAddress); + Utils.SelectListItem(ddlListReplyToAddress, selectedListReplyToAddress); + + } + else + { + + MailAccount[] moderators = ES.Services.MailServers.GetMailAccounts(PanelSecurity.PackageId, true); + ddlListModerators.Items.Clear(); + ddlListModerators.Items.Insert(0, new ListItem(GetLocalizedString("Text.SelectModerator"), "")); + + if (moderators != null) + foreach (MailAccount account in moderators) + { + if (ddlListModerators != null) + { + ddlListModerators.Items.Add(new ListItem(account.Name)); + ddlListToAddress.Items.Add(new ListItem(account.Name)); + ddlListFromAddress.Items.Add(new ListItem(account.Name)); + ddlListReplyToAddress.Items.Add(new ListItem(account.Name)); + } + } + + Utils.SelectListItem(ddlListModerators, selectedModerator); + Utils.SelectListItem(ddlListToAddress, selectedListToAddress); + Utils.SelectListItem(ddlListFromAddress, selectedListFromAddress); + Utils.SelectListItem(ddlListReplyToAddress, selectedListReplyToAddress); + } + } + + private string GetDomainName(string email) + { + return email.Substring(email.IndexOf("@") + 1); + } + + protected void ctxValDomain_EvaluatingContext(object sender, DesktopValidationEventArgs e) + { + if (Parent != null) ctrl = (MailEditAddress)Parent.Parent.FindControl("emailAddress"); + + string moderator = ddlListModerators.SelectedValue; + + if (ctrl != null) + { + if (String.Equals(GetDomainName(moderator), GetDomainName(ctrl.Email), StringComparison.InvariantCultureIgnoreCase)) + { + e.ContextIsValid = true; + return; + } + } + e.ContextIsValid = false; + } + + } + +} + diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx.designer.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx.designer.cs new file mode 100644 index 000000000..439cac63e --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_EditList.ascx.designer.cs @@ -0,0 +1,305 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SolidCP.Portal.ProviderControls +{ + + + public partial class SmarterMail100x_EditList + { + + /// + /// lblDescription control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblDescription; + + /// + /// txtDescription control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtDescription; + + /// + /// lblModeratorAddress control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblModeratorAddress; + + /// + /// ddlListModerators control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlListModerators; + + /// + /// reqValModerator control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator reqValModerator; + + /// + /// ctxValDomain control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.WebPortal.Code.Controls.DesktopContextValidator ctxValDomain; + + /// + /// lblPostingPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblPostingPassword; + + /// + /// txtPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtPassword; + + /// + /// chkPasswordEnabled control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkPasswordEnabled; + + /// + /// lblPostingMode control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblPostingMode; + + /// + /// ddlPostingMode control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlPostingMode; + + /// + /// lblSubjectPrefix control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblSubjectPrefix; + + /// + /// txtSubjectPrefix control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtSubjectPrefix; + + /// + /// chkSubjectPrefixEnabled control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkSubjectPrefixEnabled; + + /// + /// lblListToAddress control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblListToAddress; + + /// + /// ddlListToAddress control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlListToAddress; + + /// + /// lblListFromAddress control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblListFromAddress; + + /// + /// ddlListFromAddress control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlListFromAddress; + + /// + /// lblListReplyToAddress control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblListReplyToAddress; + + /// + /// ddlListReplyToAddress control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlListReplyToAddress; + + /// + /// lblMembers control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblMembers; + + /// + /// mailEditItems control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.MailEditItems mailEditItems; + + /// + /// AdditionalOptions control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.CollapsiblePanel AdditionalOptions; + + /// + /// pAdditionalOptions control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel pAdditionalOptions; + + /// + /// lbDigestMode control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lbDigestMode; + + /// + /// cbDigestMode control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbDigestMode; + + /// + /// lbSendSubscribe control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lbSendSubscribe; + + /// + /// cbSendSubcsribe control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbSendSubcsribe; + + /// + /// lbSendUnsubscribe control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lbSendUnsubscribe; + + /// + /// cbSendUnsubscribe control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbSendUnsubscribe; + + /// + /// lbDisableListcommand control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lbDisableListcommand; + + /// + /// cbDisableListcommand control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbDisableListcommand; + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx new file mode 100644 index 000000000..3623bd9c0 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx @@ -0,0 +1,108 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SmarterMail100x_Settings.ascx.cs" Inherits="SolidCP.Portal.ProviderControls.SmarterMail100x_Settings" %> +<%@ Register Src="../UserControls/SelectIPAddress.ascx" TagName="SelectIPAddress" TagPrefix="uc1" %> +<%@ Import Namespace="SolidCP.Portal" %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + +
+ + + +
+ + ******* +
+ + + +
+ +
+
+ +   + + + + + + + + + + <%# PortalAntiXSS.Encode((string)Container.DataItem)%> + + + + + + +    + + + + + +
+
+ + + +    + + +
+
+
+
+
+
+
+
diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx.cs new file mode 100644 index 000000000..41440ec80 --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx.cs @@ -0,0 +1,163 @@ +// Copyright (c) 2016, SolidCP +// SolidCP is distributed under the Creative Commons Share-alike license +// +// SolidCP is a fork of WebsitePanel: +// Copyright (c) 2015, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Web.UI.WebControls; +using SolidCP.Providers.Common; + +namespace SolidCP.Portal.ProviderControls +{ + public partial class SmarterMail100x_Settings : SolidCPControlBase, IHostingServiceProviderSettings + { + public const string MailFilterDestinations = "MailFilterDestinations"; + + private string[] ConvertDictionaryToArray(StringDictionary settings) + { + List list = new List(); + foreach (string key in settings.Keys) + list.Add(key + "=" + settings[key]); + return list.ToArray(); + } + + private StringDictionary ConvertArrayToDictionary(string[] settings) + { + StringDictionary list = new StringDictionary(); + foreach (string setting in settings) + { + int idx = setting.IndexOf('='); + list.Add(setting.Substring(0, idx), setting.Substring(idx + 1)); + } + return list; + } + + protected void Page_Load(object sender, EventArgs e) + { + List sed = ViewState[MailFilterDestinations] as List; + if (sed == null) + { + sed = new List(); + + StringDictionary settings = ConvertArrayToDictionary(ES.Services.Servers.GetServiceSettings(PanelRequest.ServiceId)); + string strList = settings[MailFilterDestinations]; + if (strList != null) + { + string[] list = strList.Split(','); + sed.AddRange(list); + } + ViewState[MailFilterDestinations] = sed; + gvSEDestinations.DataSource = sed; + gvSEDestinations.DataBind(); + } + } + + public void BindSettings(StringDictionary settings) + { + txtServiceUrl.Text = settings["ServiceUrl"]; + ipAddress.AddressValue = settings["ServerIPAddress"]; + txtDomainsFolder.Text = settings["DomainsPath"]; + txtUsername.Text = settings["AdminUsername"]; + ViewState["PWD"] = settings["AdminPassword"]; + rowPassword.Visible = ((string)ViewState["PWD"]) != ""; + cbImportDomainAdmin.Checked = Utils.ParseBool(settings[Constants.ImportDomainAdmin], false); + cbInheritDefaultLimits.Checked = Utils.ParseBool(settings[Constants.InheritDomainDefaultLimits], false); + cbEnableDomainAdmin.Checked = Utils.ParseBool(settings[Constants.EnableDomainAdministrators], false); + chkSEEnable.Checked = Utils.ParseBool(settings["EnableMailFilter"], false); + } + + public void SaveSettings(StringDictionary settings) + { + settings["ServiceUrl"] = txtServiceUrl.Text.Trim(); + settings["ServerIPAddress"] = ipAddress.AddressValue; + settings["DomainsPath"] = txtDomainsFolder.Text.Trim(); + settings["AdminUsername"] = txtUsername.Text.Trim(); + settings["AdminPassword"] = (txtPassword.Text.Length > 0) ? txtPassword.Text : (string)ViewState["PWD"]; + settings[Constants.ImportDomainAdmin] = cbImportDomainAdmin.Checked.ToString(); + settings[Constants.InheritDomainDefaultLimits] = cbInheritDefaultLimits.Checked.ToString(); + settings[Constants.EnableDomainAdministrators] = cbEnableDomainAdmin.Checked.ToString(); + settings["EnableMailFilter"] = chkSEEnable.Checked.ToString(); + } + + protected void gvSEDestinations_RowCommand(object sender, GridViewCommandEventArgs e) + { + switch (e.CommandName) + { + case "DeleteItem": + try + { + string item = e.CommandArgument.ToString(); + + List itemList = ViewState[MailFilterDestinations] as List; + if (itemList == null) return; + + int i = itemList.FindIndex(x => x == item); + if (i >= 0) itemList.RemoveAt(i); + + ViewState[MailFilterDestinations] = itemList; + gvSEDestinations.DataSource = itemList; + gvSEDestinations.DataBind(); + SaveSEDestinations(); + } + catch (Exception) + { + } + + break; + } + } + + protected void bntAddSEDestination_Click(object sender, EventArgs e) + { + List res = ViewState[MailFilterDestinations] as List; + if (res == null) res = new List(); + + res.Add(tbSEDestinations.Text); + ViewState[MailFilterDestinations] = res; + gvSEDestinations.DataSource = res; + gvSEDestinations.DataBind(); + SaveSEDestinations(); + } + + protected void SaveSEDestinations() + { + List res = ViewState[MailFilterDestinations] as List; + if (res == null) return; + + StringDictionary settings = new StringDictionary(); + settings.Add(MailFilterDestinations, string.Join(",", res.ToArray())); + + int result = ES.Services.Servers.UpdateServiceSettings(PanelRequest.ServiceId, + ConvertDictionaryToArray(settings)); + } + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx.designer.cs b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx.designer.cs new file mode 100644 index 000000000..b5ac061ff --- /dev/null +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/ProviderControls/SmarterMail100x_Settings.ascx.designer.cs @@ -0,0 +1,213 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SolidCP.Portal.ProviderControls { + + + public partial class SmarterMail100x_Settings { + + /// + /// lblServiceUrl control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblServiceUrl; + + /// + /// txtServiceUrl control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtServiceUrl; + + /// + /// lblPublicIP control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblPublicIP; + + /// + /// ipAddress control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::SolidCP.Portal.SelectIPAddress ipAddress; + + /// + /// lblDomainsPath control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblDomainsPath; + + /// + /// txtDomainsFolder control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtDomainsFolder; + + /// + /// lblAdminLogin control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblAdminLogin; + + /// + /// txtUsername control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtUsername; + + /// + /// rowPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlTableRow rowPassword; + + /// + /// lblCurrPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblCurrPassword; + + /// + /// lblAdminPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblAdminPassword; + + /// + /// txtPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtPassword; + + /// + /// cbImportDomainAdmin control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbImportDomainAdmin; + + /// + /// cbInheritDefaultLimits control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbInheritDefaultLimits; + + /// + /// cbEnableDomainAdmin control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbEnableDomainAdmin; + + /// + /// SeDiv control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl SeDiv; + + /// + /// lblRouteFromSE control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblRouteFromSE; + + /// + /// chkSEEnable control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkSEEnable; + + /// + /// GeneralUpdatePanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.UpdatePanel GeneralUpdatePanel; + + /// + /// gvSEDestinations control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView gvSEDestinations; + + /// + /// tbSEDestinations control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox tbSEDestinations; + + /// + /// bntAddSEDestination control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::CPCC.StyleButton bntAddSEDestination; + } +} diff --git a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/SolidCP.Portal.Modules.csproj b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/SolidCP.Portal.Modules.csproj index d3f0cfeba..162d5ca89 100644 --- a/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/SolidCP.Portal.Modules.csproj +++ b/SolidCP/Sources/SolidCP.WebPortal/DesktopModules/SolidCP/SolidCP.Portal.Modules.csproj @@ -276,6 +276,69 @@ CerberusFTP6_EditAccount.ascx + + SmarterMail100x_EditAccount.ascx + ASPXCodeBehind + + + SmarterMail100x_EditAccount.ascx + + + SmarterMail100x_EditDomain.ascx + ASPXCodeBehind + + + SmarterMail100x_EditDomain.ascx + + + SmarterMail100x_EditDomain_Features.ascx + ASPXCodeBehind + + + SmarterMail100x_EditDomain_Features.ascx + + + SmarterMail100x_EditDomain_Sharing.ascx + ASPXCodeBehind + + + SmarterMail100x_EditDomain_Sharing.ascx + + + SmarterMail100x_EditDomain_Throttling.ascx + ASPXCodeBehind + + + SmarterMail100x_EditDomain_Throttling.ascx + + + SmarterMail100x_EditForwarding.ascx + ASPXCodeBehind + + + SmarterMail100x_EditForwarding.ascx + + + SmarterMail100x_EditGroup.ascx + ASPXCodeBehind + + + SmarterMail100x_EditGroup.ascx + + + SmarterMail100x_EditList.ascx + ASPXCodeBehind + + + SmarterMail100x_EditList.ascx + + + SmarterMail100x_Settings.ascx + ASPXCodeBehind + + + SmarterMail100x_Settings.ascx + SpamExperts_Settings.ascx ASPXCodeBehind @@ -5546,6 +5609,15 @@ + + + + + + + + + @@ -6508,6 +6580,23 @@ + + + + + + + + + + + + + + + + +