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