using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using MySql.Data.MySqlClient; using System.IO; namespace WmHmailserverExporterWeb { public partial class _Default : System.Web.UI.Page { protected string logPath = @"C:\Users\Willem L. Middelkoop\Documents\Visual Studio 2005\Projects\WmHmailserverExporter\WmHmailserverExporter\log"; protected string userStart = "\"RECEIVED: USER "; protected string userEnd = "\""; protected string passStart = "\"RECEIVED: PASS "; protected string passEnd = "\""; protected WmData.WmData data; protected void Page_Load(object sender, EventArgs e) { data = new WmData.WmData("root","YOUR_DB_PASSWORD", "localhost", 3306, "hmailexport"); string domainSelect = "SELECT domainid, domainname FROM hm_domains"; MySqlConnection domainConnection = getMySqlConnection(); MySqlCommand domainCommand = new MySqlCommand(domainSelect, domainConnection); try { domainConnection.Open(); MySqlDataReader domainReader = domainCommand.ExecuteReader(); while (domainReader.Read()) { string domainName = (string)domainReader["domainname"]; int domainId = (int)domainReader["domainid"]; Response.Write("

" + domainName+"

"); string domainAliasSelect = "SELECT dadomainid, daalias FROM hm_domain_aliases WHERE dadomainid="+domainId; MySqlConnection domainAliasConnection = getMySqlConnection(); MySqlCommand domainAliasCommand = new MySqlCommand(domainAliasSelect, domainAliasConnection); try { domainAliasConnection.Open(); Response.Write("
Domain aliases"); MySqlDataReader domainAliasReader = domainAliasCommand.ExecuteReader(); while (domainAliasReader.Read()) { string aliasDomain = (string)domainAliasReader["daalias"]; Response.Write("
"+aliasDomain); } } finally { domainAliasConnection.Close(); } Response.Write("
"); string accountSelect = "SELECT accountaddress, accountforwardenabled, accountforwardaddress FROM hm_accounts WHERE accountdomainid=" + domainId+" ORDER BY accountaddress"; MySqlConnection accountConnection = getMySqlConnection(); MySqlCommand accountCommand = new MySqlCommand(accountSelect, accountConnection); try { accountConnection.Open(); Response.Write("
Accounts"); MySqlDataReader accountReader = accountCommand.ExecuteReader(); while(accountReader.Read()){ string accountName = (string)accountReader["accountaddress"]; string forwardAddress = (string)accountReader["accountforwardaddress"]; bool forwardEnabled = Convert.ToBoolean(accountReader["accountforwardenabled"]); MailAccount account = getMailAccountIfExists(accountName); if (account != null) { Response.Write("
" + account.AccountName + " // " + account.Password); } else { if (forwardEnabled ) { Response.Write("
" + accountName + " // !! forward to "+forwardAddress+" "); } else { Response.Write("
" + accountName + " // !!??: ______________________________"); } } string aliasSelect = "SELECT aliasname, aliasvalue FROM hm_aliases WHERE aliasvalue='" + accountName+"'"; MySqlConnection aliasConnection = getMySqlConnection(); MySqlCommand aliasCommand = new MySqlCommand(aliasSelect, aliasConnection); try { aliasConnection.Open(); MySqlDataReader aliasReader = aliasCommand.ExecuteReader(); while (aliasReader.Read()) { string aliasName = (string)aliasReader["aliasname"]; Response.Write("
  " + aliasName + ""); } } finally { aliasConnection.Close(); } } } finally { accountConnection.Close(); } } } finally { domainConnection.Close(); } } protected MailAccount getMailAccountIfExists(string accountName) { string select = "accountname='" + accountName + "'"; ArrayList tmpRes = data.getObjects(typeof(MailAccount), select); if (tmpRes.Count > 0) { MailAccount first = (MailAccount)tmpRes[0]; return first; } else { return null; } } protected void importUsersFromLogfiles() { string falseUserString = userStart + "\""; foreach (string logFile in Directory.GetFiles(logPath, "*.log")) { TextReader reader = (TextReader)File.OpenText(logFile); string logFileText = reader.ReadToEnd(); int iterator = 0; while (iterator >= 0) { iterator = logFileText.IndexOf(userStart, iterator); if (iterator >= 0) { string username = null; string domainName = null; string password = null; string usernameString = logFileText.Substring(iterator, 20); if (!usernameString.StartsWith(falseUserString)) { try { getCredentials(logFileText, ref iterator, ref username, ref domainName, ref password); addCredentialsIfNew(domainName, username, password); } catch (Exception error) { System.Diagnostics.Trace.WriteLine("Error occured file " + Path.GetFileName(logFile) + " character " + iterator + " USERNAMETXT: " + usernameString); } } else { System.Diagnostics.Trace.WriteLine("Prevented failure on log scan: " + usernameString); iterator += falseUserString.Length; } } } reader.Close(); //break; // one file for now } } protected void addCredentialsIfNew(string domainName, string accountName, string password) { string select = "accountname='" + accountName.ToLower() + "'"; if (data.getObjects(typeof(MailAccount), select).Count == 0) { MailAccount newAccount = new MailAccount(); newAccount.DomainName = domainName.ToLower(); newAccount.AccountName = accountName.ToLower(); newAccount.Password = password; data.addObject(newAccount); System.Diagnostics.Trace.WriteLine("Added account " + accountName); } } protected void getCredentials(string logFileText, ref int iterator, ref string username, ref string domainName, ref string password) { username = Tools.getStringInBetween(userStart, userEnd, logFileText, ref iterator); domainName = username.Substring(username.IndexOf("@")+1); password = Tools.getStringInBetween(passStart, passEnd, logFileText, ref iterator); } protected MySqlConnection getMySqlConnection() { #region connection string string connectionString = "server=localhost;" + "port=3306;" + "charset=utf8;" + "database=hmailserver;" + "uid=root;" + "pwd=YOUR_DB_PASSWORD;"; #endregion return new MySqlConnection(connectionString); } } }