示例#1
0
    protected void Page_Load(object sender, System.EventArgs e)
    {
        if (Session["AUTH"] == null)
        {
            return;
        }

        Utils.SettingsPath = AdminPanelUtils.GetWebMailFolder();
        #region Convert Settings in settings.xml

        WebmailSettings wmsNew = new WebmailSettings().CreateInstance(AdminPanelUtils.GetWebMailDataFolder());

        sb.AppendFormat("<font color='black' sise='3' face='verdana'><b>{1}</b>. Start convert settings.xml</font><BR />", "settings.xml", _allOps + 1);
        _allOps++;

        try
        {
            wmsNew.SaveWebmailSettings(AdminPanelUtils.GetWebMailDataFolder());
            sb.AppendFormat("<font color='grey' sise='3' face='verdana'>- Convert settings successful.</font><BR /><BR />");
        }
        catch (Exception ex)
        {
            sb.AppendFormat("<font color='grey' sise='3' face='verdana'>- {0}</font><BR /><BR />", ex.Message);
            _errorCounter++;
        }
        # endregion
示例#2
0
    protected void create_database_Click(object sender, System.EventArgs e)
    {
        Session["TrySqlPassword"] = txtSqlPassword.Text;
        txtSqlPassword.Attributes.Add("Value", txtSqlPassword.Text);

        if (intDbTypeMsAccess.Checked)
        {
            return;
        }

        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;
        }

        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, null, txtSqlSrc.Value);
        try
        {
            dbMan.Connect(connectionString);
            dbMan.CreateDatabase(txtSqlName.Value);
            _errorMessageCreateDB = @"<br /><font color=""green"">Database create successfily.</font>";
        }
        catch (WebMailDatabaseException error)
        {
            Log.WriteException(error);
            _errorMessageCreateDB = @"<br /><font color=""red"">" + error.Message + "</font>";
        }
        finally
        {
            dbMan.Disconnect();
        }
    }
示例#3
0
    protected void Page_Load(object sender, EventArgs e)
    {
        WebmailSettings settings = new WebMailSettingsCreator().CreateWebMailSettings(AdminPanelUtils.GetWebMailDataFolder());

        if (!Page.IsPostBack)
        {
            Utils.SettingsPath = AdminPanelUtils.GetWebMailFolder();
            string logPath = Utils.GetLogFilePath();
            intEnableLogging.Checked = settings.EnableLogging;
            txtPathForLog.Value      = logPath;
        }
    }
        protected void ShowLog()
        {
            Response.Clear();
            Response.AddHeader("Content-Type", "text/html");
            Response.Write(@"<html><body><pre class=""wm_print_content"">");
            Utils.SettingsPath = AdminPanelUtils.GetWebMailFolder();
            string logPath = Utils.GetLogFilePath();

            Response.Write(HttpUtility.HtmlEncode(Utils.LoadFromFile(logPath, Encoding.Default)));
            Response.Write("</pre></body></html>");
            Response.Flush();
            Response.Close();
        }
    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);
        }
    }
示例#6
0
        public HMailServer()
        {
            string AssemblyPath = Path.Combine(AdminPanelUtils.GetWebMailFolder(), @"bin\Interop.hMailServer.dll");

            if (File.Exists(AssemblyPath))
            {
                try
                {
                    _assembly    = System.Reflection.Assembly.LoadFrom(AssemblyPath);
                    _application = assembly.CreateInstance("hMailServer.ApplicationClass");
                }
                catch (Exception ex)
                {
                    _assembly = null;
                    Log.WriteException(ex);
                    throw;
                }
            }
        }
        protected void ShowLogPartial()
        {
            Response.Clear();
            Response.AddHeader("Content-Type", "text/html");
            Response.Write(@"<html><body><pre class=""wm_print_content"">");
            Utils.SettingsPath = AdminPanelUtils.GetWebMailFolder();
            string    logPath      = Utils.GetLogFilePath();
            FileInfo  fi           = new FileInfo(logPath);
            string    log          = string.Empty;
            const int lastPartSize = 20000;

            if (fi.Exists)
            {
                log = fi.Length > lastPartSize ? (string)Utils.LoadFromFile(logPath, Encoding.Default, (int)fi.Length - lastPartSize, lastPartSize) : Utils.LoadFromFile(logPath, Encoding.Default, 0, lastPartSize);
            }

            Response.Write(log);
            Response.Write("</pre></body></html>");
            Response.Flush();
            Response.Close();
        }
    protected void InitData()
    {
        WebmailSettings settings = new WebMailSettingsCreator().CreateWebMailSettings(AdminPanelUtils.GetWebMailDataFolder());

        intMailsPerPage.Value = settings.MailsPerPage.ToString(CultureInfo.InvariantCulture);

        string[] supportedSkins = AdminPanelUtils.GetSupportedSkins(AdminPanelUtils.GetWebMailFolder());
        for (int i = 0; i < supportedSkins.Length; i++)
        {
            txtDefaultSkin.Items.Add(supportedSkins[i]);
            if (string.Compare(supportedSkins[i], settings.DefaultSkin, true, CultureInfo.InvariantCulture) == 0)
            {
                txtDefaultSkin.SelectedIndex = i;
            }
        }

        string[] supportedLangs = AdminPanelUtils.GetSupportedLangs(AdminPanelUtils.GetWebMailDataFolder());
        for (int i = 0; i < supportedLangs.Length; i++)
        {
            txtDefaultLanguage.Items.Add(supportedLangs[i]);
            if (string.Compare(supportedLangs[i], settings.DefaultLanguage, true, CultureInfo.InvariantCulture) == 0)
            {
                txtDefaultLanguage.SelectedIndex = i;
            }
        }

        intAllowUsersChangeSkin.Checked     = settings.AllowUsersChangeSkin;
        intAllowUsersChangeLanguage.Checked = settings.AllowUsersChangeLanguage;
        intShowTextLabels.Checked           = settings.ShowTextLabels;
        intAllowDHTMLEditor.Checked         = settings.AllowDhtmlEditor;
        intAllowContacts.Checked            = settings.AllowContacts;
        intAllowCalendar.Checked            = settings.AllowCalendar;

        intRightMessagePane.Checked   = ((settings.ViewMode & ViewMode.WithPreviewPane) > 0) ? true : false;
        intAlwaysShowPictures.Checked = ((settings.ViewMode & ViewMode.AlwaysShowPictures) > 0) ? true : false;
    }
    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();
    }
示例#10
0
    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();
        }
    }
示例#11
0
    protected bool create_tables()
    {
        bool            errorFlag = false;
        WebmailSettings settings  = new WebmailSettings().CreateInstance(AdminPanelUtils.GetWebMailDataFolder());

        if (settings.DbType == SupportedDatabase.MsAccess)
        {
            return(false);
        }

        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,
            Constants.TablesNames.awm_subadmin_domains,
            Constants.TablesNames.awm_subadmins,
            /* Calendar Tables */
            Constants.TablesNames.acal_calendars,
            Constants.TablesNames.acal_events,
            Constants.TablesNames.acal_users_data,
            Constants.TablesNames.acal_publications,
            Constants.TablesNames.acal_sharing,
            Constants.TablesNames.acal_eventrepeats,
            Constants.TablesNames.acal_exclusions,
            Constants.TablesNames.acal_appointments,
            Constants.TablesNames.acal_cron_runs,
            Constants.TablesNames.acal_reminders
        };
        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);
            _errorMessage = @"<font color=""red"">" + Constants.mailAdmTablesNotCreated + ": " + error.Message + "</font>";
            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)
        {
            _errorMessage = @"<font color=""red"">The data tables with """ + prefix + @""" prefix already exist. To proceed, specify another prefix or delete the existing tables.</font>";
            errorFlag     = true;
        }
        else
        {
            try
            {
                storage.Connect();
                foreach (string name in tablesNames)
                {
                    try
                    {
                        storage.CreateTable(name, prefix);
                    }
                    catch (WebMailDatabaseException error)
                    {
                        Log.WriteException(error);
                        _errorMessage = @"<font color=""red"">" + Constants.mailAdmTablesNotCreated + ": " + error.Message + "</font>";
                        errorFlag     = true;
                    }
                }
            }
            catch (WebMailDatabaseException error)
            {
                Log.WriteException(error);
                _errorMessage = @"<font color=""red"">" + Constants.mailAdmTablesNotCreated + ": " + error.Message + "</font>";
                errorFlag     = true;
            }
            finally
            {
                storage.Disconnect();
            }
            if (!errorFlag)
            {
                _errorMessage = @"<font color=""green"">" + Constants.mailAdmTablesCreated + "</font>";
            }
        }
        return(errorFlag);
    }
示例#12
0
    protected void test_connection_Click(object sender, System.EventArgs e)
    {
        Session["TrySqlPassword"] = txtSqlPassword.Text;
        txtSqlPassword.Attributes.Add("Value", txtSqlPassword.Text);

        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;
        }

        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);

            if (!intDbTypeMsAccess.Checked)
            {
                try
                {
                    dbMan.DropTable("a_test", DbPrefix.Value);
                }
                catch { }

                dbMan.CreateTable("a_test", DbPrefix.Value);
                dbMan.DropTable("a_test", DbPrefix.Value);
            }

            _errorMessageConnection = @"<font color=""green"">" + Constants.mailAdmConnectSuccess + "</font>";
        }
        catch (WebMailDatabaseException error)
        {
            Log.WriteException(error);
            _errorMessageConnection = @"<font color=""red"">" + Constants.mailAdmConnectUnsuccess + ": " + error.Message + "</font>";
        }
        finally
        {
            dbMan.Disconnect();
        }
    }