Exemple #1
0
    public void UpdateWebMailDomain()
    {
        try
        {
            string domainName   = textDomainName.Value;
            string incomingMail = txtIncomingMail.Value;
            string outgoingMail = txtOutgoingMail.Value;
            int    domainID     = Int32.Parse(hidWebMailDomainID.Value);

            if (!AdminPanelUtils.IsSuperAdmin(Page.Session, (Page as DefaultPage).Settings))
            {
                if (!Subadmin.IsSubadminDomain(int.Parse(Session["AdminID"].ToString()), domainID))
                {
                    return;
                }
            }

            bool useSmtpAuth  = intReqSmtpAuthentication.Checked;
            int  incomingPort = 0;
            int.TryParse(intIncomingMailPort.Value, out incomingPort);
            int outgoingPort = 0;
            int.TryParse(intOutgoingMailPort.Value, out outgoingPort);
            IncomingMailProtocol mail_protocol = IncomingMailProtocol.Pop3;
            switch (intIncomingMailProtocol.SelectedIndex)
            {
            case 0:
                mail_protocol = IncomingMailProtocol.Pop3;
                break;

            case 1:
                mail_protocol = IncomingMailProtocol.Imap4;
                break;

            case 2:
                mail_protocol = IncomingMailProtocol.WMServer;
                break;
            }
            Domain dom = Domain.GetDomain(domainID);

            dom.Name = domainName;
            dom.MailIncomingProtocol       = mail_protocol;
            dom.MailIncomingHost           = incomingMail;
            dom.MailIncomingPort           = incomingPort;
            dom.MailOutgoingHost           = outgoingMail;
            dom.MailOutgoingPort           = outgoingPort;
            dom.MailOutgoingAuthentication = useSmtpAuth;


            dom.Global_addr_book = false;

            dom.Save();
        }
        catch (Exception error)
        {
            Log.WriteException(error);
            AdminPanelUtils.SetPageErrorMessage(this.Page, (error.InnerException != null ? error.InnerException.Message : error.Message));
        }
    }
Exemple #2
0
    public bool AddNewWebMailDomain()
    {
        bool result = false;
        // create webmail domain
        string domainName   = textDomainName.Value;
        string incomingMail = txtIncomingMail.Value;
        string outgoingMail = txtOutgoingMail.Value;
        bool   useSmtpAuth  = intReqSmtpAuthentication.Checked;
        int    incomingPort = 0;

        int.TryParse(intIncomingMailPort.Value, out incomingPort);
        int outgoingPort = 0;

        int.TryParse(intOutgoingMailPort.Value, out outgoingPort);
        IncomingMailProtocol mail_protocol = IncomingMailProtocol.Pop3;

        switch (intIncomingMailProtocol.SelectedIndex)
        {
        case 0:
            mail_protocol = IncomingMailProtocol.Pop3;
            break;

        case 1:
            mail_protocol = IncomingMailProtocol.Imap4;
            break;

        case 2:
            mail_protocol = IncomingMailProtocol.WMServer;
            break;
        }

        try
        {
            Domain dom = Domain.GetDomain(domainName);
            if (dom == null)
            {
                Domain new_dom = new Domain(0, domainName, mail_protocol, incomingMail, incomingPort, outgoingMail, outgoingPort, useSmtpAuth);


                new_dom.Global_addr_book = false;

                new_dom.Save();
                result = true;
            }
            else
            {
                result = false;
                AdminPanelUtils.SaveState("SessPageErrorMessage", "Such domain already exists.", Page.Session);
            }
        }
        catch (Exception error)
        {
            result = false;
            Log.WriteException(error);
            AdminPanelUtils.SetPageErrorMessage(this.Page, (error.InnerException != null ? error.InnerException.Message : error.Message));
        }
        return(result);
    }
    private void Save()
    {
        Session["TrySqlPassword"] = null;
        try
        {
            WebmailSettings settings = new WebMailSettingsCreator().CreateWebMailSettings(AdminPanelUtils.GetWebMailDataFolder());

            if (intDbTypeMsAccess.Checked)
            {
                settings.DbType = SupportedDatabase.MsAccess;
            }
            else if (intDbTypeMySql.Checked)
            {
                settings.DbType = SupportedDatabase.MySql;
            }
            else
            {
                settings.DbType = SupportedDatabase.MsSqlServer;
            }

            string rrr = Request[txtSqlLogin.ClientID];

            if (useDSN.Checked)
            {
                settings.DbDsn = txtSqlDsn.Value;
            }
            else if (useCS.Checked)
            {
                settings.DbCustomConnectionString = odbcConnectionString.Value;
            }
            else
            {
                if (settings.DbType == SupportedDatabase.MsAccess)
                {
                    settings.DbPathToMdb = txtAccessFile.Value;
                }
                else
                {
                    settings.DbLogin    = txtSqlLogin.Value;
                    settings.DbPassword = txtSqlPassword.Text;
                    settings.DbName     = txtSqlName.Value;
                    settings.DbHost     = txtSqlSrc.Value;
                }
            }
            settings.UseCustomConnectionString = useCS.Checked;
            settings.UseDSN = useDSN.Checked;

            settings.SaveWebmailSettings(AdminPanelUtils.GetWebMailDataFolder());
            this.Session.Remove(Constants.sessionDbManager);
            this.Context.Application.Remove(Constants.sessionSettings);
        }
        catch (Exception error)
        {
            Log.WriteException(error);
            AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmSaveUnsuccess);
        }
    }
    protected void SaveButton_Click(object sender, System.EventArgs e)
    {
        try
        {
            WebmailSettings settings = new WebMailSettingsCreator().CreateWebMailSettings(AdminPanelUtils.GetWebMailDataFolder());

            if (standartLoginRadio.Checked)
            {
                settings.HideLoginMode = LoginMode.Default;
            }
            else if (hideLoginRadio.Checked)
            {
                if (hideLoginSelect.SelectedIndex == 0)
                {
                    settings.HideLoginMode = LoginMode.HideLoginFieldLoginIsEmail;
                }
                else
                {
                    settings.HideLoginMode = LoginMode.HideLoginFieldLoginIsAccount;
                }
            }
            else
            {
                if ((intDisplayDomainAfterLoginField.Checked) && (intLoginAsConcatination.Checked))
                {
                    settings.HideLoginMode = LoginMode.HideEmailFieldDisplayDomainAfterLoginAndLoginIsLoginAndDomain;
                }
                else if (intDisplayDomainAfterLoginField.Checked)
                {
                    settings.HideLoginMode = LoginMode.HideEmailFieldDisplayDomainAfterLogin;
                }
                else if (intLoginAsConcatination.Checked)
                {
                    settings.HideLoginMode = LoginMode.HideEmailFieldLoginIsLoginAndDomain;
                }
                else
                {
                    settings.HideLoginMode = LoginMode.HideEmailField;
                }
            }
            settings.DefaultDomainOptional = txtUseDomain.Value;

            settings.AllowAdvancedLogin            = intAllowAdvancedLogin.Checked;
            settings.AutomaticCorrectLoginSettings = intAutomaticCorrectLogin.Checked;
            settings.AllowLanguageOnLogin          = intAllowLangOnLogin.Checked;

            settings.SaveWebmailSettings(AdminPanelUtils.GetWebMailDataFolder());
            Context.Application.Remove(Constants.sessionSettings);
            AdminPanelUtils.SetPageReportMessage(Page, Constants.mailAdmSaveSuccess);
        }
        catch (Exception error)
        {
            Log.WriteException(error);
            AdminPanelUtils.SetPageErrorMessage(Page, Constants.mailAdmSaveUnsuccess);
        }
    }
Exemple #5
0
 protected void ClearLogButton_ServerClick(object sender, System.EventArgs e)
 {
     try
     {
         Utils.ClearLog();
         AdminPanelUtils.SetPageReportMessage(this.Page, Constants.mailAdmLogClearSuccess);
     }
     catch (Exception error)
     {
         Log.WriteException(error);
         AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmLogClearUnsuccess);
     }
 }
    protected void SubmitButton_Click(object sender, System.EventArgs e)
    {
        try
        {
            WebmailSettings settings = new WebMailSettingsCreator().CreateWebMailSettings(AdminPanelUtils.GetWebMailDataFolder());

            try
            {
                settings.MailsPerPage = short.Parse(intMailsPerPage.Value, CultureInfo.InvariantCulture);
                if (settings.MailsPerPage < 0)
                {
                    settings.MailsPerPage = Math.Abs(settings.MailsPerPage);
                }
            }
            catch (Exception error)
            {
                Log.WriteException(error);
            }

            settings.DefaultSkin              = txtDefaultSkin.Value;
            settings.DefaultLanguage          = txtDefaultLanguage.Value;
            settings.AllowUsersChangeSkin     = intAllowUsersChangeSkin.Checked;
            settings.AllowUsersChangeLanguage = intAllowUsersChangeLanguage.Checked;
            settings.ShowTextLabels           = intShowTextLabels.Checked;
            settings.AllowDhtmlEditor         = intAllowDHTMLEditor.Checked;
            settings.AllowContacts            = intAllowContacts.Checked;
            settings.AllowCalendar            = intAllowCalendar.Checked;

            ViewMode mode = ViewMode.WithoutPreviewPane;
            if (intRightMessagePane.Checked)
            {
                mode |= ViewMode.WithPreviewPane;
            }
            if (intAlwaysShowPictures.Checked)
            {
                mode |= ViewMode.AlwaysShowPictures;
            }
            settings.ViewMode = mode;

            settings.SaveWebmailSettings(AdminPanelUtils.GetWebMailDataFolder());
            this.Context.Application.Remove(Constants.sessionSettings);

            AdminPanelUtils.SetPageReportMessage(this.Page, Constants.mailAdmSaveSuccess);
        }
        catch (Exception error)
        {
            Log.WriteException(error);
            AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmSaveUnsuccess);
        }
    }
Exemple #7
0
    public static void ShowReportAndReportMessages(Page page)
    {
        string _PageReportMessage = (AdminPanelUtils.LoadState("SessPageReportMessage", page.Session) != null) ? AdminPanelUtils.LoadState("SessPageReportMessage", page.Session).ToString() : null;
        string _PageErrorMessage  = (AdminPanelUtils.LoadState("SessPageErrorMessage", page.Session) != null) ? AdminPanelUtils.LoadState("SessPageErrorMessage", page.Session).ToString() : null;

        if (_PageReportMessage != null)
        {
            AdminPanelUtils.SetPageReportMessage(page, _PageReportMessage);
            AdminPanelUtils.SaveState("SessPageReportMessage", null, page.Session);
        }

        if (_PageErrorMessage != null)
        {
            AdminPanelUtils.SetPageErrorMessage(page, _PageErrorMessage);
            AdminPanelUtils.SaveState("SessPageErrorMessage", null, page.Session);
        }
    }
 public void SaveSettings(object sender, System.EventArgs e)
 {
     if (txtPassword.Text.Trim() != AdminPanelConstants.DummyPassword)
     {
         apSettings.Pass = txtPassword.Text;
     }
     try
     {
         apSettings.Save();
         AdminPanelUtils.SetPageReportMessage(Page, "Settings are successfully saved!");
         Response.Redirect("install.aspx?mode=connection", true);
     }
     catch (Exception ex)
     {
         Log.WriteException(ex);
         AdminPanelUtils.SetPageErrorMessage(Page, (ex.InnerException != null ? ex.InnerException.Message : ex.Message));
     }
 }
Exemple #9
0
    protected void SaveButton_Click(object sender, System.EventArgs e)
    {
        try
        {
            WebmailSettings settings = new WebMailSettingsCreator().CreateWebMailSettings(AdminPanelUtils.GetWebMailDataFolder());

            settings.EnableLogging = intEnableLogging.Checked;
            settings.SaveWebmailSettings(AdminPanelUtils.GetWebMailDataFolder());
            this.Context.Application.Remove(Constants.sessionSettings);

            AdminPanelUtils.SetPageReportMessage(this.Page, Constants.mailAdmSaveSuccess);
        }
        catch (Exception error)
        {
            Log.WriteException(error);
            AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmSaveUnsuccess);
        }
    }
    protected void save_ServerClick(object sender, EventArgs e)
    {
        try
        {
            Context.Application.Remove(Constants.sessionSettings);
            WebmailSettings settings = new WebmailSettings().CreateInstance(AdminPanelUtils.GetWebMailDataFolder());

            settings.WmServerRootPath           = txtWmServerRootPath.Value;
            settings.WmServerHost               = txtWmServerHostName.Value;
            settings.WmAllowManageXMailAccounts = intWmAllowManageXMailAccounts.Checked;

            if (!settings.EnableWmServer)
            {
                settings.SaveWebmailSettings(AdminPanelUtils.GetWebMailDataFolder());
                AdminPanelUtils.SetPageReportMessage(this.Page, Constants.mailAdmSaveSuccess);
            }
            else if (txtWmServerRootPath.Value.Length > 0)
            {
                string fullPath = Path.Combine(txtWmServerRootPath.Value, "domains");
                if (!Directory.Exists(fullPath))
                {
                    throw new WebMailIOException(string.Format(@"Server Root Path '{0}' incorrect.", AdminPanelUtils.EncodeHtml(fullPath)));
                }

                Utils.SettingsPath = AdminPanelUtils.GetWebMailFolder();
                WMServerStorage storage = new WMServerStorage(txtWmServerHostName.Value, null);
                storage.GetDomainList(); // test command

                settings.SaveWebmailSettings(AdminPanelUtils.GetWebMailDataFolder());
                this.Context.Application.Remove(Constants.sessionSettings);

                AdminPanelUtils.SetPageReportMessage(this.Page, Constants.mailAdmSaveSuccess);
            }
            else
            {
                throw new WebMailIOException(@"Server Root Path not set.");
            }
        }
        catch (Exception ex)
        {
            Log.WriteException(ex);
            AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmSaveUnsuccess + "<br /> Error:" + ex.Message);
        }
    }
Exemple #11
0
    public void UpdateXMailDomain()
    {
        try
        {
            XMLayer xmLayer = XMServer.CreateXMLayer();
            xmLayer.Login();

            if (Int32.Parse(hidCustomDomain.Value) == 1)
            {
                // edit custom domain
                StringBuilder redirect = new StringBuilder("redirect");

/*
 *              if (Request.Params[RedirectionsListDDL.UniqueID] != null)
 *              {
 *                  string[] RedirectionsList = Request.Params[RedirectionsListDDL.UniqueID].ToString().Split(',');
 *                  for (int i = 0; i < RedirectionsList.Length; i++)
 *                      redirect.AppendFormat("\t\"{0}\"", RedirectionsList[i]);
 *              }
 */
                StringBuilder lredirect = new StringBuilder("lredirect");
                if (Request.Params[LRedirectionsListDDL.UniqueID] != null)
                {
                    string[] LRedirectionsList = Request.Params[LRedirectionsListDDL.UniqueID].ToString().Split(',');
                    for (int i = 0; i < LRedirectionsList.Length; i++)
                    {
                        lredirect.AppendFormat("\t\"{0}\"", LRedirectionsList[i]);
                    }
                }
                string data = string.Format("{0}\r\n{1}\r\n{2}\r\n.\r\n", redirect.ToString(), lredirect.ToString(), AdvancedID.Text);
                xmLayer.SetCustomDomainTab(textDomainName.Value.Trim(), data);
            }

            xmLayer.Logout();
        }
        catch (Exception ex)
        {
            Log.WriteException(ex);
            AdminPanelUtils.SetPageErrorMessage(this.Page, ex.Message);
        }
    }
Exemple #12
0
    public void DeleteWebMailDomain(string name)
    {
        Domain dom = new Domain();

        if (!string.IsNullOrEmpty(name))
        {
            try
            {
                dom = Domain.LoadFromDb(name);
                if (dom != null)
                {
                    dom.Delete();
                    Account.UpdateAccountsByDomain(dom.Name, dom.ID, 0, -1);
                }
            }
            catch (WebMailException ex)
            {
                Log.WriteException(ex);
                AdminPanelUtils.SetPageErrorMessage(Page, ex.Message);
            }
        }
    }
Exemple #13
0
    protected void Page_Load(object sender, EventArgs e)
    {
        Session.Timeout = AdminPanelConstants.SessionTimeout;

        string mode = (!string.IsNullOrEmpty(Request.QueryString["mode"]) ? Request.QueryString["mode"] : string.Empty);

        if (!Page.IsPostBack)
        {
            switch (mode)
            {
            case "logout":
                Session.Clear();
                Session.Abandon();
                break;
            }
        }

        if (Session["AUTH"] == null)
        {
            Control ctrl = LoadControl("core/Login.ascx");
            if (ctrl != null)
            {
                mainPlaceHolder.Controls.Add(ctrl);
            }
        }
        else
        {
            if (File.Exists(Path.Combine(Page.MapPath(""), "install.htm")))
            {
                AdminPanelUtils.SetPageErrorMessage(Page, @"Please delete install.htm file.");
            }

            Control ctrl = LoadControl("core/AdminPanel.ascx");
            if (ctrl != null)
            {
                mainPlaceHolder.Controls.Add(ctrl);
            }
        }
    }
        protected void Page_Load(object sender, EventArgs e)
        {
            pluginID = LoadPluginID();

            rootFolder = Page.MapPath("");

            if (!Page.IsPostBack)
            {
                pluginID = (!string.IsNullOrEmpty(Request.QueryString["plugin"]) ? Request.QueryString["plugin"] : pluginID);
            }
            try
            {
                PluginCollection Plugins = Plugin.GetPlugins(rootFolder, Page.Session, (Page as DefaultPage).Settings);

                installedPlugins.Clear();
                foreach (Plugin pl in Plugins)
                {
                    AdminPanelMainPlugin pctrl = (AdminPanelMainPlugin)LoadControl("../plugins/" + pl.FolderName + "/main.ascx");
                    pctrl.InitPlugin();
                    if (pctrl.CanLoadPlugin())
                    {
                        installedPlugins.Add(pl);
                    }
                }

                string mode = (!string.IsNullOrEmpty(Request.QueryString["mode"]) ? Request.QueryString["mode"] : string.Empty);
                if (!Page.IsPostBack)
                {
                    switch (mode)
                    {
                    case "help":
                        Response.Redirect((Page as DefaultPage).HelpUrl, false);
                        break;
                    }
                }

                if (string.IsNullOrEmpty(pluginID) && installedPlugins.Count > 0)
                {
                    pluginID = installedPlugins[0].ID;
                }
                Plugin plugin = LoadPlugin(pluginID);
                if (plugin != null)
                {
                    SavePluginID(plugin);
                }
                else
                {
                    AdminPanelUtils.SetPageErrorMessage(Page, "Plugin not found!");
                }

                WebMail.adminpanel.core.Menu ctrl = (WebMail.adminpanel.core.Menu)LoadControl("Menu.ascx");
                if (ctrl != null)
                {
                    ctrl.Plugins  = installedPlugins;
                    ctrl.pluginID = pluginID;
                    menuPlaceHolder.Controls.Add(ctrl);
                }
            }
            catch (Exception ex)
            {
                Log.WriteException(ex);
                AdminPanelUtils.SetPageErrorMessage(Page, ex.Message + ": " + (ex.InnerException != null ? ex.InnerException.Message : ex.Message));
            }
        }
    protected void create_tables_Click(object sender, System.EventArgs e)
    {
        bool errorFlag = false;

        Save();

        Session["TrySqlPassword"] = txtSqlPassword.Text;
        txtSqlPassword.Attributes.Add("Value", txtSqlPassword.Text);

        WebmailSettings settings = new WebMailSettingsCreator().CreateWebMailSettings(AdminPanelUtils.GetWebMailDataFolder());

        string prefix = settings.DbPrefix;

        string[] dbTablesName = new string[] { };

        string[] tablesNames = new string[]
        {
            /* WebMail Tables */
            Constants.TablesNames.a_users,
            Constants.TablesNames.awm_accounts,
            Constants.TablesNames.awm_addr_book,
            Constants.TablesNames.awm_addr_groups,
            Constants.TablesNames.awm_addr_groups_contacts,
            Constants.TablesNames.awm_columns,
            Constants.TablesNames.awm_filters,
            Constants.TablesNames.awm_folders,
            Constants.TablesNames.awm_folders_tree,
            Constants.TablesNames.awm_messages,
            Constants.TablesNames.awm_messages_body,
            Constants.TablesNames.awm_reads,
            Constants.TablesNames.awm_senders,
            Constants.TablesNames.awm_settings,
            Constants.TablesNames.awm_domains,
            Constants.TablesNames.awm_temp
        };
        bool isTableExist = false;

        Utils.SettingsPath = AdminPanelUtils.GetWebMailFolder();

        DbStorage storage = DbStorageCreator.CreateDatabaseStorage(null, AdminPanelUtils.GetWebMailDataFolder());

        try
        {
            storage.Connect();
            dbTablesName = storage.GetTablesNames();
        }
        catch (WebMailDatabaseException error)
        {
            Log.WriteException(error);
            AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmTablesNotCreated);
            errorFlag = true;
        }
        finally
        {
            storage.Disconnect();
        }
        for (int i = 0; i < dbTablesName.Length; i++)
        {
            string dbTable = dbTablesName[i];
            foreach (string name in tablesNames)
            {
                if (string.Compare(dbTable, string.Format("{0}{1}", prefix, name), true, CultureInfo.InvariantCulture) == 0)
                {
                    isTableExist = true;
                    break;
                }
            }
            if (isTableExist)
            {
                break;
            }
        }
        if (isTableExist)
        {
            AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmTablesExists);
            errorFlag = true;
        }
        else
        {
            try
            {
                storage.Connect();
                foreach (string name in tablesNames)
                {
                    try
                    {
                        storage.CreateTable(name, prefix);
                    }
                    catch (WebMailDatabaseException error)
                    {
                        Log.WriteException(error);
                        AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmTablesNotCreated);
                        errorFlag = true;
                    }
                }
            }
            catch (WebMailDatabaseException error)
            {
                Log.WriteException(error);
                AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmTablesNotCreated);
                errorFlag = true;
            }
            finally
            {
                storage.Disconnect();
            }
            if (!errorFlag)
            {
                AdminPanelUtils.SetPageReportMessage(this.Page, Constants.mailAdmTablesCreated);
            }
        }
        InitControl();
    }
    protected void test_connection_Click(object sender, System.EventArgs e)
    {
        Utils.SettingsPath = AdminPanelUtils.GetWebMailFolder();

        DbManager         dbMan            = null;
        string            connectionString = string.Empty;
        SupportedDatabase dbType           = SupportedDatabase.MsSqlServer;

        if (intDbTypeMsAccess.Checked)
        {
            dbMan  = new MsAccessDbManager();
            dbType = SupportedDatabase.MsAccess;
        }
        else if (intDbTypeMySql.Checked)
        {
            dbMan  = new MySqlDbManager();
            dbType = SupportedDatabase.MySql;
        }
        else
        {
            dbMan  = new MsSqlDbManager();
            dbType = SupportedDatabase.MsSqlServer;
        }

        WebmailSettings settings = new WebMailSettingsCreator().CreateWebMailSettings(AdminPanelUtils.GetWebMailDataFolder());

        txtSqlPassword.Text        = Request[txtSqlPassword.UniqueID] ?? settings.DbPassword;
        txtSqlLogin.Value          = Request[txtSqlLogin.UniqueID] ?? settings.DbLogin;
        txtSqlName.Value           = Request[txtSqlName.UniqueID] ?? settings.DbName;
        txtSqlDsn.Value            = Request[txtSqlDsn.UniqueID] ?? settings.DbDsn;
        txtSqlSrc.Value            = Request[txtSqlSrc.UniqueID] ?? settings.DbHost;
        txtAccessFile.Value        = Request[txtAccessFile.UniqueID] ?? settings.DbPathToMdb;
        odbcConnectionString.Value = Request[odbcConnectionString.UniqueID] ?? settings.DbCustomConnectionString;
        useCS.Checked  = (Request[useCS.UniqueID] != null) ? true : settings.UseCustomConnectionString;
        useDSN.Checked = (Request[useDSN.UniqueID] != null) ? true : settings.UseDSN;

        Session["TrySqlPassword"] = txtSqlPassword.Text;
        txtSqlPassword.Attributes.Add("Value", txtSqlPassword.Text);

        string dsn = txtSqlDsn.Value;

        if (!useDSN.Checked)
        {
            dsn = string.Empty;
        }

        connectionString = DbManager.CreateConnectionString(useCS.Checked, odbcConnectionString.Value,
                                                            dsn, dbType, txtAccessFile.Value, txtSqlLogin.Value,
                                                            txtSqlPassword.Text, txtSqlName.Value, txtSqlSrc.Value);
        try
        {
            dbMan.Connect(connectionString);

            AdminPanelUtils.SetPageReportMessage(this.Page, Constants.mailAdmConnectSuccess);
        }
        catch (WebMailDatabaseException error)
        {
            Log.WriteException(error);
            AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmConnectUnsuccess);
        }
        finally
        {
            dbMan.Disconnect();
        }
    }
Exemple #17
0
    protected void Page_Load(object sender, EventArgs e)
    {
        (Page as DefaultPage).Body = " onresize=\"ResizeElements('all');\"";

        AdminPanelUtils.ShowReportAndReportMessages(Page);
        bool result = CheckDB();

        if (result)
        {
            string             mode           = (!string.IsNullOrEmpty(Request.QueryString["mode"]) ? Request.QueryString["mode"] : "domains");
            domains_management domainsControl = (domains_management)LoadControl(@"domains.ascx");

            if (domainsControl != null)
            {
                if (!string.IsNullOrEmpty(Request.QueryString["asc"]))
                {
                    domainsControl.Asc = (string.Compare(Request.QueryString["asc"], "true", true, CultureInfo.InvariantCulture) == 0) ? true : false;
                }
                if (!string.IsNullOrEmpty(Request.QueryString["order"]))
                {
                    domainsControl.OrderBy = Request.QueryString["order"];
                }
                ContentPlaceHolder.Controls.Add(domainsControl);
            }

            try
            {
                switch (mode)
                {
                case "new":
                    if (AdminPanelUtils.IsSuperAdmin(Page.Session, (Page as DefaultPage).Settings))
                    {
                        Control ctrl = LoadControl(@"domain-edit.ascx");
                        if (ctrl != null)
                        {
                            domainsControl.FindControl("PlaceHolderDomain").Controls.Add(ctrl);
                        }
                    }
                    break;

                case "edit":
                {
                    if ((!string.IsNullOrEmpty(Request.QueryString["name"])) || (!string.IsNullOrEmpty(Request.QueryString["uid"])))
                    {
                        Control ctrl = LoadControl(@"domain-edit.ascx");
                        if (ctrl != null)
                        {
                            domainsControl.FindControl("PlaceHolderDomain").Controls.Add(ctrl);
                        }
                    }
                }
                break;

                case "close_search":
                {
                    AdminPanelUtils.SaveState("wm_adm_dm_condition", null, Page.Session);
                    Response.Redirect(string.Format(@"default.aspx?mode=domains"), false);
                }
                break;
                }
                if (Page.IsPostBack)
                {
                    AdminPanelUtils.SaveState("Page", Request[domainsControl.FindControl("HFPageInfo").UniqueID].ToString(), Page.Session);
                    string action = Request[domainsControl.FindControl("HFAction").UniqueID].ToString();
                    string value  = Request[domainsControl.FindControl("HFValue").UniqueID].ToString();

                    switch (action)
                    {
                    case "sort":
                        if (value != "")
                        {
                            bool sortOrder = true;
                            AdminPanelUtils.SaveState("wm_adm_dm_order", value, Page.Session);
                            if (Session["wm_adm_dmAsc"] != null)
                            {
                                sortOrder = bool.Parse(Session["wm_adm_dmAsc"].ToString());
                            }
                            Session["wm_adm_dmAsc"] = !sortOrder;
                        }
                        Response.Redirect(Request.RawUrl, false);
                        break;

                    case "search":
                        AdminPanelUtils.SaveState("wm_adm_dm_condition", value, Page.Session);
                        Response.Redirect(string.Format(@"default.aspx?mode=domains"), false);
                        break;

                    case "delete":
                        if (AdminPanelUtils.IsSuperAdmin(Page.Session, (Page as DefaultPage).Settings))
                        {
                            try
                            {
                                string[] values = value.Split(',');
                                foreach (string val in values)
                                {
                                    SelectedValueStruct sds = AdminPanelUtils.ParseSelectedValue(HttpUtility.UrlDecode(val));
                                    DeleteDomain(sds.Name, sds.Type);
                                    if (AdminPanelUtils.LoadState("selectedDomain", Page.Session) != null &&
                                        AdminPanelUtils.LoadState("selectedDomain", Page.Session).ToString() == val)
                                    {
                                        AdminPanelUtils.SaveState("selectedDomain", null, Page.Session);
                                    }
                                }
                                AdminPanelUtils.SaveState("SessPageReportMessage", WebMail.Constants.mailAdmUpdateAccountSuccess, Page.Session);
                            }
                            catch
                            {
                                AdminPanelUtils.SaveState("SessPageErrorMessage", WebMail.Constants.mailAdmUpdateAccountUnsuccess, Page.Session);
                            }
                            Response.Redirect(string.Format(@"default.aspx?mode=domains"), false);
                        }
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Log.WriteException(ex);
                AdminPanelUtils.SetPageErrorMessage(this.Page, (ex.InnerException != null ? ex.InnerException.Message : ex.Message));
            }
            if (AdminPanelUtils.LoadState("Page", Page.Session) != null)
            {
                domainsControl.PageNumber = Int32.Parse(AdminPanelUtils.LoadState("Page", Page.Session).ToString());
            }
        }
        else
        {
            AdminPanelUtils.SetPageErrorMessage(this.Page, "<b>Database is not configured</b>. <br />Before creating domains and users, you need to configure database connection first. <br />Please navigate WebMail / Database Settings and configure database connection there.");
        }
    }
Exemple #18
0
    public DataTable LoadDomains()
    {
        DomainCollection   domColl   = null;
        XMDomainCollection xmDomains = new XMDomainCollection();

        DataTable domTable = new DataTable();

        domTable.Columns.Add("id", typeof(string));
        domTable.Columns.Add("name", typeof(string));
        domTable.Columns.Add("type", typeof(string));

        // xmail
        if (_isServerExist && AdminPanelUtils.IsSuperAdmin(Page.Session, (Page as DefaultPage).Settings))
        {
            xmDomains = XMDomain.GetDomains();
            XMDomainCollection xmDomsCust = XMDomain.GetCustomDomainins();
            xmDomains.Add(xmDomsCust);
        }

        // webmail
        if (_isWebMailExist)
        {
            try
            {
                if (AdminPanelUtils.IsSuperAdmin(Page.Session, (Page as DefaultPage).Settings))
                {
                    if (_isServerExist)
                    {
                        domColl = Domain.GetDomains();
                    }
                    else
                    {
                        domColl = Domain.GetDomains(new short[] { (short)IncomingMailProtocol.Pop3, (short)IncomingMailProtocol.Imap4 });
                    }
                }
                else
                {
                    domColl = Subadmin.GetDomains(adminID);
                }

                foreach (XMDomain xmDom in xmDomains)
                {
                    Domain dom = domColl.GetItem(xmDom.Name);
                    if (dom == null)
                    {
                        WebmailSettings settings = new WebMailSettingsCreator().CreateWebMailSettings();
                        Domain          new_dom  = new Domain(0, xmDom.Name, IncomingMailProtocol.WMServer, settings.WmServerHost, 143, settings.WmServerHost, settings.XMailSmtpPort, false);
                        new_dom.Save();
                        xmDom.Type = AdminPanelConstants.UserType.xma;
                    }
                }

                foreach (Domain dom in domColl)
                {
                    XMDomain xmDomain = xmDomains.GetItem(dom.Name);
                    if (xmDomain != null)
                    {
                        xmDomains.Remove(xmDomain);
                        xmDomains.Add(new XMDomain(dom.Name, dom.Name, dom.MailIncomingProtocol == IncomingMailProtocol.WMServer ? AdminPanelConstants.UserType.xma : AdminPanelConstants.UserType.wm));
                    }
                    else
                    {
                        xmDomains.Add(new XMDomain(dom.Name, dom.Name, dom.MailIncomingProtocol == IncomingMailProtocol.WMServer ? AdminPanelConstants.UserType.xma : AdminPanelConstants.UserType.wm));
                        if (_isServerExist && dom.MailIncomingProtocol == IncomingMailProtocol.WMServer)
                        {
                            XMDomain.AddDomain(dom.Name);
                        }
                    }
                }

                foreach (XMDomain xmDomain in xmDomains)
                {
                    domTable.Rows.Add(xmDomain.Name, xmDomain.Name, xmDomain.Type);
                }
            }
            catch (Exception ex)
            {
                AdminPanelUtils.SetPageErrorMessage(this.Page, (ex.InnerException != null ? ex.InnerException.Message : ex.Message));
                Log.WriteException(ex);
            }
        }
        return(domTable);
    }
    public void SaveSettings(object sender, System.EventArgs e)
    {
        bool flag = false;

        this.Context.Application.Remove(AdminPanelConstants.serverSettings);
        this.Context.Application.Remove(Constants.sessionSettings);

        string     adminpanelxml        = Path.Combine(AdminPanelUtils.GetAdminPanelDataFolderPath(), @"adminpanel.xml");
        bool       isAdminpanelxmlWrite = false;
        FileStream fs;

        try
        {
            fs = File.Open(adminpanelxml, FileMode.Open, FileAccess.Write);
            fs.Close();
            isAdminpanelxmlWrite = true;
        }
        catch (UnauthorizedAccessException)
        {
            isAdminpanelxmlWrite = false;
        }

        if (isAdminpanelxmlWrite)
        {
            if (txtSecurityPassword.Text.Trim() != AdminPanelConstants.DummyPassword)
            {
                if (_isServerExist)
                {
                    try
                    {
                        if (AdminPanelControlAccounts.IsControlAccountExist(UserName))
                        {
                            AdminPanelControlAccounts.SetControlAccountPassword(UserName, txtSecurityPassword.Text);
                        }
                        else
                        {
                            AdminPanelControlAccounts.AdminPanelControlAccount ca = new AdminPanelControlAccounts.AdminPanelControlAccount();
                            ca.Name     = UserName;
                            ca.Password = txtSecurityPassword.Text;
                            AdminPanelControlAccounts.AddControlAccount(ca);
                        }
                        flag = true;
                    }
                    catch (Exception ex)
                    {
                        flag = false;
                        AdminPanelUtils.SetPageErrorMessage(Page, ex.Message);
                    }
                    if (flag)
                    {
                        apSettings.Pass = txtSecurityPassword.Text;
                    }
                }
                else
                {
                    apSettings.Pass = txtSecurityPassword.Text;
                }
            }
            if (_isServerExist)
            {
                apSettings.Host = txtHost.Value;
                apSettings.Port = txtPort.Value;
            }
            try
            {
                apSettings.Save();
                AdminPanelUtils.SetPageReportMessage(Page, "Settings are successfully saved!");
            }
            catch (Exception ex)
            {
                AdminPanelUtils.SetPageErrorMessage(Page, ex.Message);
            }
        }
        else
        {
            AdminPanelUtils.SetPageErrorMessage(Page, "Failed to access \"adminpanel.xml\" config file.");
        }
    }
Exemple #20
0
    public bool AddNewXMailDomain()
    {
        string domainName = textDomainName.Value;
        bool   result     = false;

        AdminPanelUtils.SaveState("selectedDomain", null, Page.Session);
        XMLayer xmLayer = XMServer.CreateXMLayer();

        if (_domainType == "vir")
        {
            try
            {
                xmLayer.Login();
                // create custom domain
                StringBuilder redirect = new StringBuilder("redirect");
                if (Request.Params[RedirectionsListDDL.UniqueID] != null)
                {
                    string[] RedirectionsList = Request.Params[RedirectionsListDDL.UniqueID].ToString().Split(',');
                    for (int i = 0; i < RedirectionsList.Length; i++)
                    {
                        redirect.AppendFormat("\t\"{0}\"", RedirectionsList[i]);
                    }
                }

                StringBuilder lredirect = new StringBuilder("lredirect");
                if (Request.Params[LRedirectionsListDDL.UniqueID] != null)
                {
                    string[] LRedirectionsList = Request.Params[LRedirectionsListDDL.UniqueID].ToString().Split(',');
                    for (int i = 0; i < LRedirectionsList.Length; i++)
                    {
                        lredirect.AppendFormat("\t\"{0}\"", LRedirectionsList[i]);
                    }
                }
                string data = string.Format("{0}\r\n{1}\r\n{2}\r\n.\r\n", redirect.ToString(), lredirect.ToString(), AdvancedID.Text);
                xmLayer.SetCustomDomainTab(domainName, data);
                xmLayer.Logout();
                result = true;
            }
            catch (XMailException error)
            {
                Log.WriteException(error);
                AdminPanelUtils.SetPageErrorMessage(this.Page, (error.InnerException != null ? error.InnerException.Message : error.Message));
            }
        }
        else
        {
            try
            {
                xmLayer.Login();
                if (!xmLayer.DomainExist(domainName))
                {
                    xmLayer.AddDomain(domainName);
                }
                xmLayer.Logout();
                result = true;
            }
            catch (XMailException error)
            {
                Log.WriteException(error);
                AdminPanelUtils.SetPageErrorMessage(this.Page, error.Message);
            }

            // create webmail domain
            if (_isWebMailExist && result)
            {
                WebmailSettings wmSettings = (new WebMailSettingsCreator()).CreateWebMailSettings(AdminPanelUtils.GetWebMailDataFolder());

                try
                {
                    Domain dom = Domain.GetDomain(domainName);
                    if (dom == null)
                    {
                        int    SmtpPort = wmSettings.XMailSmtpPort;
                        string SmtpHost = wmSettings.WmServerHost;
                        int    ImapPort = 143;
                        string ImapHost = wmSettings.WmServerHost;
                        Domain new_dom  = new Domain(0, domainName, IncomingMailProtocol.WMServer, ImapHost, ImapPort, SmtpHost, SmtpPort, false);


                        new_dom.Global_addr_book = false;

                        new_dom.Save();
                        result = true;
                    }
                    else
                    {
                        result = false;
                        AdminPanelUtils.SaveState("SessPageErrorMessage", "Such domain already exists.", Page.Session);
                    }
                }
                catch (Exception error)
                {
                    result = false;
                    Log.WriteException(error);
                    AdminPanelUtils.SetPageErrorMessage(this.Page, (error.InnerException != null ? error.InnerException.Message : error.Message));
                }
            }
        }
        if (result == false)
        {
            try
            {
                xmLayer.Login();
                xmLayer.DeleteDomain(domainName);
                xmLayer.Logout();
            }
            catch (Exception error)
            {
                Log.WriteException(error);
            }
        }
        return(result);
    }
Exemple #21
0
    void ShowDomains(DataTable domTable, int page, int pageSize, string orderBy, bool asc, string condition)
    {
        string HTMLDomains = string.Empty;
        string sortASC     = (asc == true) ? "ASC" : "DESC";

        try
        {
            DataView view = domTable.DefaultView;
            view.Sort = OrderBy + " " + sortASC;
            if (condition.Trim() != string.Empty)
            {
                view.RowFilter = "name LIKE '%" + condition.Trim() + "%'";
            }
            domTable = view.ToTable();

            _domainsCount = domTable.Rows.Count;
            if ((page > (_domainsCount / _pageSize)) && SearchCondition.Trim() != string.Empty)
            {
                page = 1;
                AdminPanelUtils.SaveState("Page", page, Page.Session);
            }

            HFMaxSize.Value = _domainsCount.ToString();

            int maxSize = (_domainsCount - ((page - 1) * pageSize + pageSize) > 0) ? (page - 1) * pageSize + pageSize : _domainsCount;
            for (int i = (page - 1) * pageSize; i < maxSize; i++)
            {
                HTMLDomains += string.Format(@"
				<tr class=""wm_inbox_read_item"" id=""{0}_{1}"">
					<td style=""padding-left: 2px; padding-right: 2px;"" id=""none"">
						<input type=""checkbox"" />
					</td>
                    <td />
					<td class=""wm_inbox_from_subject"" style=""padding-left: 2px; padding-right: 2px;"">
                        {2}
					</td>
                    <td />
					<td class=""wm_inbox_from_subject"" style=""padding-left: 2px; padding-right: 2px;"">
						{3}
					</td>
				</tr>"                ,
                                             domTable.Rows[i]["type"].ToString(),
                                             HttpUtility.UrlEncode(domTable.Rows[i]["id"].ToString()),
                                             domTable.Rows[i]["type"].ToString() == AdminPanelConstants.UserType.wm ? @"<img src=""images/wm-domain-icon-big.png"" />" : @"<img src=""images/xmail-domain-icon-big.png"" />",
                                             domTable.Rows[i]["name"].ToString());
            }
            if (HTMLDomains == string.Empty)
            {
                HTMLDomains = @"
                <tr>
                    <td colspan=""5"">
                        <div class=""wm_inbox_info_message"">The result is empty</div>
                    </td>
                </tr>";
            }

            LiteralContactsGroups.Text = HTMLDomains;
        }
        catch (Exception error)
        {
            Log.WriteException(error);
            AdminPanelUtils.SetPageErrorMessage(this.Page, (error.InnerException != null ? error.InnerException.Message : error.Message));
        }
    }
Exemple #22
0
    protected void InitDomain()
    {
        string[] dName      = new string[1];
        string   domainName = "";

        if (_isUpdate)
        {
            _actionDomain = "Edit Domain";
            intIncomingMailProtocol.Attributes["class"] = "wm_hide";
            ButtonSave.Visible = false;
            trForHr.Visible    = false;
            textDomainName.Attributes.Add("class", "wm_hide");

            string uid = HttpUtility.UrlDecode(this.Request.QueryString["uid"].ToString());
            SelectedValueStruct sds = AdminPanelUtils.ParseSelectedValue(uid);
            hidCustomDomain.Value = "0";
            dName[0] = sds.Name;
            string domains;

            XMLayer xmLayer = XMServer.CreateXMLayer();
            switch (sds.Type)
            {
            case AdminPanelConstants.UserType.xm:
            case AdminPanelConstants.UserType.xma:
                try
                {
                    xmLayer.Login();
                    domains = xmLayer.ListDomains(dName);
                    using (StringReader sr = new StringReader(domains))
                    {
                        string line = string.Empty;
                        while ((line = sr.ReadLine()) != null)
                        {
                            line = line.Trim();
                            if (line == ".")
                            {
                                break;
                            }
                            domainName = line.Trim(new char[] { '"' });
                        }
                    }
                    textDomainName.Value = domainName;
                }
                catch (Exception error)
                {
                    Log.WriteException(error);
                    AdminPanelUtils.SetPageErrorMessage(this.Page, error.Message);
                }
                finally
                {
                    xmLayer.Logout();
                }
                break;

            case AdminPanelConstants.UserType.xmc:

                _domainType = "vir";
                try
                {
                    xmLayer.Login();
                    domainName            = dName[0];
                    hidCustomDomain.Value = "1";
                    ButtonSave.Visible    = true;
                    trForHr.Visible       = true;
                    string DomainStringArray = XMDomain.GetCustomDomainTab(sds.Name)[0];

                    using (StringReader sr = new StringReader(DomainStringArray))
                    {
                        string[] data;
                        string   line;
//                            RedirectionsListDDL.Items.Clear();
                        LRedirectionsListDDL.Items.Clear();

                        while ((line = sr.ReadLine()) != null)
                        {
                            line = line.Trim();
                            data = XMDomain.extractCustomDomainData(line);
                            int i;
                            switch (data[0])
                            {
                            case "mailbox":
                                break;

/*
 *                                  case "redirect":
 *                                      for (i = 1; i < data.Length; i++)
 *                                          RedirectionsListDDL.Items.Add(data[i]);
 *                                      break;
 */
                            case "lredirect":
                                for (i = 1; i < data.Length; i++)
                                {
                                    LRedirectionsListDDL.Items.Add(data[i]);
                                }
                                break;
                            }
                        }
                        AdvancedID.Text      = XMDomain.GetCustomDomainTab(domainName)[1];
                        textDomainName.Value = domainName;
                    }
                }
                catch (Exception error)
                {
                    Log.WriteException(error);
                    AdminPanelUtils.SetPageErrorMessage(this.Page, error.Message);
                }
                finally
                {
                    xmLayer.Logout();
                }
                break;

            case AdminPanelConstants.UserType.wm:
                //Webmail Domains
                _domainType        = "rem";
                ButtonSave.Visible = true;
                trForHr.Visible    = true;
                try
                {
                    Domain dom = Domain.LoadFromDb(sds.Name.Trim());
                    textDomainName.Value             = dom.Name;
                    domainName                       = dom.Name;
                    txtIncomingMail.Value            = dom.MailIncomingHost;
                    intIncomingMailPort.Value        = dom.MailIncomingPort.ToString();
                    txtOutgoingMail.Value            = dom.MailOutgoingHost;
                    intOutgoingMailPort.Value        = dom.MailOutgoingPort.ToString();
                    intReqSmtpAuthentication.Checked = dom.MailOutgoingAuthentication;
                    hidWebMailDomainID.Value         = dom.ID.ToString();


                    switch (dom.MailIncomingProtocol)
                    {
                    case IncomingMailProtocol.Pop3:
                        intIncomingMailProtocol.SelectedIndex = 0;
                        break;

                    case IncomingMailProtocol.Imap4:
                        intIncomingMailProtocol.SelectedIndex = 1;
                        break;

                    default:
                        intIncomingMailProtocol.SelectedIndex = 0;
                        break;
                    }
                }
                catch (Exception error)
                {
                    Log.WriteException(error);
                    AdminPanelUtils.SaveState("SessPageErrorMessage", WebMail.Constants.mailAdmUpdateAccountUnsuccess, Page.Session);
                }
                break;
            }
            UID = HttpUtility.UrlEncode(sds.Type + "_" + domainName);

            if (AdminPanelUtils.IsSuperAdmin(Page.Session, (Page as DefaultPage).Settings))
            {
                Domain dom = new Domain();

                if (UID.Length > 0)
                {
                    try
                    {
                        SelectedValueStruct sus = AdminPanelUtils.ParseSelectedValue(uid);

                        if (sus.Type != AdminPanelConstants.UserType.xm)
                        {
                            try
                            {
                                dom = Domain.LoadFromDb(sus.Name);
                            }
                            catch { }
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.WriteException(ex);
                        AdminPanelUtils.SetPageErrorMessage(this.Page, (ex.InnerException != null ? ex.InnerException.Message : ex.Message));
                    }
                }

                if (dom != null)
                {
                    domain_filter = dom.ID.ToString();
                }
            }

            litDomainName.Text = @"<span style=""font-size: large;"">" + domainName + "</span>";

            switch (_domainType)
            {
            case "vir":
                litDomainDescription.Text = "Defines rules for forwarding mail from this domain to other addresses.";
                break;

            case "rem":
                litDomainDescription.Text = "Contains users hosted by other mail services (e.g. gmx.com).";
                break;

            default:
                litDomainDescription.Text = "Contains users hosted by this server.";
                break;
            }
        }
        else
        {
            _actionDomain = "Create Domain";

            divDomainName.Attributes["class"] = "wm_hide";

            intIncomingMailPort.Value = "110";
            intOutgoingMailPort.Value = "25";

            switch (_domainType)
            {
            case "vir":
                litDomainDescriptionView.Text = "Defines rules for forwarding mail from this domain to other addresses.";
                break;

            case "rem":
                litDomainDescriptionView.Text = "Contains users hosted by other mail services (e.g. gmx.com).";
                break;

            default:
                litDomainDescriptionView.Text = "Contains users hosted by this server.";
                break;
            }
        }
        switch (_domainType)
        {
        case "vir":
            tr_custom_options.Attributes["class"] = "";
            break;

        case "rem":
            tr_webmail_options.Attributes["class"] = "";
            break;

        default:
            tr_custom_options.Attributes["class"]  = "wm_hide";
            tr_webmail_options.Attributes["class"] = "wm_hide";
            break;
        }

        if (!AdminPanelUtils.IsSuperAdmin(Page.Session, (Page as DefaultPage).Settings))
        {
            tr_see_webmail.Attributes["class"] = "wm_hide";
        }
    }
    protected void SaveButton_Click(object sender, System.EventArgs e)
    {
        try
        {
            WebmailSettings settings = new WebMailSettingsCreator().CreateWebMailSettings(AdminPanelUtils.GetWebMailDataFolder());

            settings.SiteName = txtSiteName.Value;

            settings.IncomingMailServer = txtIncomingMail.Value;
            try
            {
                settings.IncomingMailPort = int.Parse(intIncomingMailPort.Value, CultureInfo.InvariantCulture);
            }
            catch (Exception ex)
            {
                Log.WriteException(ex);
                AdminPanelUtils.SetPageReportMessage(this.Page, ex.Message);
            }

            switch (intIncomingMailProtocol.Value.ToLower(CultureInfo.InvariantCulture))
            {
            case "pop3":
                settings.IncomingMailProtocol = IncomingMailProtocol.Pop3;
                break;

            case "imap4":
                settings.IncomingMailProtocol = IncomingMailProtocol.Imap4;
                break;

            case "xmail":
                settings.IncomingMailProtocol = IncomingMailProtocol.WMServer;
                break;
            }

            settings.OutgoingMailServer = txtOutgoingMail.Value;
            try
            {
                settings.OutgoingMailPort = int.Parse(intOutgoingMailPort.Value, CultureInfo.InvariantCulture);
            }
            catch (Exception ex)
            {
                Log.WriteException(ex);
                AdminPanelUtils.SetPageReportMessage(this.Page, ex.Message);
            }

            settings.ReqSmtpAuth         = intReqSmtpAuthentication.Checked;
            settings.AllowDirectMode     = intAllowDirectMode.Checked;
            settings.DirectModeIsDefault = intDirectModeIsDefault.Checked;

            try
            {
                settings.AttachmentSizeLimit = long.Parse(intAttachmentSizeLimit.Value, CultureInfo.InvariantCulture) * 1024;
            }
            catch (Exception ex)
            {
                Log.WriteException(ex);
                AdminPanelUtils.SetPageReportMessage(this.Page, ex.Message);
            }
            settings.EnableAttachmentSizeLimit = intEnableAttachmentSizeLimit.Checked;
            try
            {
                settings.MailboxSizeLimit = long.Parse(intMailboxSizeLimit.Value, CultureInfo.InvariantCulture) * 1024;
            }
            catch (Exception ex)
            {
                Log.WriteException(ex);
                AdminPanelUtils.SetPageReportMessage(this.Page, ex.Message);
            }
            settings.EnableMailboxSizeLimit = intEnableMailboxSizeLimit.Checked;

            settings.AllowUsersChangeEmailSettings = intAllowUsersChangeEmailSettings.Checked;
            settings.AllowUsersAddNewAccounts      = intAllowUsersAddNewAccounts.Checked;
            settings.AllowUsersChangeAccountsDef   = intAllowUsersChangeAccountsDef.Checked;

            try
            {
                settings.DefaultUserCharset = int.Parse(txtDefaultUserCharset.Value, CultureInfo.InvariantCulture);
            }
            catch (Exception ex)
            {
                Log.WriteException(ex);
                AdminPanelUtils.SetPageReportMessage(this.Page, ex.Message);
            }
            settings.AllowUsersChangeCharset = intAllowUsersChangeCharset.Checked;

            settings.DefaultTimeZone          = (short)txtDefaultTimeZone.SelectedIndex;
            settings.AllowUsersChangeTimeZone = intAllowUsersChangeTimeOffset.Checked;
            settings.TakeImapQuota            = intTakeImapQuota.Checked;

            settings.SaveWebmailSettings(AdminPanelUtils.GetWebMailDataFolder());
            this.Context.Application.Remove(Constants.sessionSettings);

            AdminPanelUtils.SetPageReportMessage(this.Page, Constants.mailAdmSaveSuccess);
        }
        catch (Exception error)
        {
            Log.WriteException(error);
            AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmSaveUnsuccess);
        }
    }