Logger hinzugefügt

This commit is contained in:
BlubbFish 2010-07-12 22:28:29 +00:00
parent 1ef978a3d0
commit 62359d6d91
7 changed files with 147 additions and 16 deletions

View File

@ -1,5 +1,6 @@
/*using System;
using System.Collections.Generic;
using System;
using System.Threading;
/*using System.Collections.Generic;
using System.Linq;
using System.Text;*/
using MySql.Data.MySqlClient;
@ -9,7 +10,7 @@ namespace MailServer.DataBase
class MysqlConnector
{
private string server = "localhost";
private string db = "";
private string db = "mailserver";
private string user = "root";
private string pass = "mafia";
private MySqlConnection connection;
@ -20,6 +21,13 @@ namespace MailServer.DataBase
"UID=" + user + ";" +
"PASSWORD=" + pass + ";";
connection = new MySqlConnection(myConnectionString);
connection.Open();
Thread waiter = new Thread(new ThreadStart(pinging));
}
private void pinging()
{
connection.Ping();
System.Threading.Thread.Sleep(1000*60*10);
}
~MysqlConnector()
{
@ -27,11 +35,10 @@ namespace MailServer.DataBase
}
public MySqlDataReader read(string sql)
{
Console.WriteLine(sql);
MySqlCommand command = connection.CreateCommand();
command.CommandText = sql;
connection.Open();
MySqlDataReader reader = command.ExecuteReader();
connection.Close();
return reader;
}
}

View File

@ -1,4 +1,6 @@
using System;
using System.Security.Cryptography;
using System.Text;
/*using System.Collections.Generic;
using System.Linq;
using System.Text;*/
@ -17,13 +19,21 @@ namespace MailServer.DataBase
}
public bool checkUser(string user, string pass)
{
MySqlDataReader reader = mysql.read("SELECT `pass` FROM `users` WHERE `user` = '"+escape(user)+"';");
if(!reader.HasRows)
pass = getMd5Hash(pass);
MySqlDataReader reader = mysql.read("SELECT `pass` FROM `users` WHERE `user` = '"+escape(user)+"'");
if (!reader.HasRows)
{
reader.Close();
return false;
}
while(reader.Read()) {
if(reader.GetString(0) == pass)
if (reader.GetString(0).ToLower() == pass.ToLower())
{
reader.Close();
return true;
}
}
reader.Close();
return false;
}
@ -38,5 +48,17 @@ namespace MailServer.DataBase
return "";
}
}
static string getMd5Hash(string input)
{
MD5 md5Hasher = MD5.Create();
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
StringBuilder sBuilder = new StringBuilder();
foreach (byte s in data)
{
sBuilder.Append(s.ToString("x2"));
}
return sBuilder.ToString();
}
}
}

View File

@ -0,0 +1,90 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
namespace MailServer.Logger
{
public enum EventType
{
Info,
Warning,
Error
}
public class EventLogger
{
private StreamWriter infolog;
private StreamWriter warninglog;
private StreamWriter errorlog;
private StreamWriter alllog;
public EventLogger()
{
infolog = new StreamWriter("logs\\info.log", true);
warninglog = new StreamWriter("logs\\warn.log", true);
errorlog = new StreamWriter("logs\\error.log", true);
alllog = new StreamWriter("logs\\all.log", true);
}
public void add(EventType e, string service, string msg)
{
StackFrame stack = new StackTrace().GetFrame(1);
switch (e)
{
case EventType.Info:
addInfo(stack, service, msg);
break;
case EventType.Warning:
addWarning(stack, service, msg);
break;
case EventType.Error:
addError(stack, service, msg);
break;
}
}
private void addError(StackFrame stack, string service, string msg)
{
string stackstring = "";
if (stack != null)
stackstring = stack.GetMethod() + ":" + stack.GetNativeOffset();
string line = "ERROR: " + DateTime.Now.ToLocalTime().ToString() + " - [" + service + "] - " + stackstring + " - " + msg;
errorlog.WriteLine(line);
addAll(line);
}
private void addWarning(StackFrame stack, string service, string msg)
{
string stackstring = "";
if (stack != null)
stackstring = stack.GetMethod() + ":" + stack.GetNativeOffset();
string line = "WARN: " + DateTime.Now.ToLocalTime().ToString() + " - [" + service + "] - " + stackstring + " - " + msg;
warninglog.WriteLine(line);
addAll(line);
}
private void addInfo(StackFrame stack, string service, string msg)
{
string stackstring = "";
if (stack != null)
stackstring = stack.GetMethod() + ":" + stack.GetNativeOffset();
string line = "INFO: " + DateTime.Now.ToLocalTime().ToString() + " - [" + service + "] - " + stackstring + " - " + msg;
infolog.WriteLine(line);
addAll(line);
}
private void addAll(string line)
{
alllog.WriteLine(line);
flushing();
}
private void flushing()
{
alllog.Flush();
infolog.Flush();
errorlog.Flush();
warninglog.Flush();
}
}
}

View File

@ -50,6 +50,7 @@
<ItemGroup>
<Compile Include="DataBase\MysqlConnector.cs" />
<Compile Include="DataBase\MysqlImap.cs" />
<Compile Include="Logger\EventLogger.cs" />
<Compile Include="LumiSoft\IMAP\IMAP_ACL_Flags.cs">
<SubType>Code</SubType>
</Compile>

View File

@ -5,6 +5,7 @@ using System.ServiceProcess;
using System.Text;
using MailServer.Services;
using MailServer.Logger;
namespace MailServer
{
@ -15,18 +16,19 @@ namespace MailServer
/// </summary>
static void Main(string[] args)
{
EventLogger logger = new EventLogger();
if (args.Length == 0)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new IMAP_Service()
new IMAP_Service(logger)
};
ServiceBase.Run(ServicesToRun);
}
else if (args.Length == 1 || args[0] == "-r")
{
IMAP_Service imap_s = new IMAP_Service();
IMAP_Service imap_s = new IMAP_Service(logger);
imap_s.Start(args);
while (true)
{

View File

@ -6,6 +6,7 @@ using System.Text;
using LumiSoft.Misc;
using LumiSoft.Misc.SocketServer;
using LumiSoft.IMAP.Server;
using MailServer.Logger;
namespace MailServer.Services
{
@ -13,8 +14,11 @@ namespace MailServer.Services
{
void server_AuthUser(object sender, AuthUser_EventArgs e)
{
this.logger.add(EventType.Info, "IMAP", "Auth user: " + e.UserName);
e.Validated = database.checkUser(e.UserName, e.PasswData);
Console.WriteLine(e.ToString());
if (!e.Validated)
this.logger.add(EventType.Warning, "IMAP", "Auth User Failed: " + e.UserName);
//Console.WriteLine(e.ToString());
}
@ -115,7 +119,8 @@ namespace MailServer.Services
void server_SysError(object sender, Error_EventArgs e)
{
Console.WriteLine(e.ToString());
logger.add(EventType.Error, "IMAP", e.Exception.ToString());
//Console.WriteLine(e.ToString());
}
void server_UnSubscribeFolder(object sender, Mailbox_EventArgs e)
@ -125,7 +130,8 @@ namespace MailServer.Services
void server_ValidateIPAddress(object sender, ValidateIP_EventArgs e)
{
Console.WriteLine(e.ToString());
logger.add(EventType.Info, "IMAP", "ValidateIP: " + e.ConnectedIP);
//Console.WriteLine(e.ToString());
}
}
}

View File

@ -9,6 +9,7 @@ using System.Text;
using LumiSoft.IMAP.Server;
using MailServer.DataBase;
using MailServer.Logger;
namespace MailServer.Services
{
@ -16,9 +17,11 @@ namespace MailServer.Services
{
private IMAP_Server server;
private MysqlImap database;
private EventLogger logger;
public IMAP_Service()
public IMAP_Service(EventLogger log)
{
this.logger = log;
InitializeComponent();
database = new MysqlImap();
putEvents();