Logger hinzugefügt
This commit is contained in:
parent
1ef978a3d0
commit
62359d6d91
@ -1,5 +1,6 @@
|
|||||||
/*using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Threading;
|
||||||
|
/*using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;*/
|
using System.Text;*/
|
||||||
using MySql.Data.MySqlClient;
|
using MySql.Data.MySqlClient;
|
||||||
@ -9,7 +10,7 @@ namespace MailServer.DataBase
|
|||||||
class MysqlConnector
|
class MysqlConnector
|
||||||
{
|
{
|
||||||
private string server = "localhost";
|
private string server = "localhost";
|
||||||
private string db = "";
|
private string db = "mailserver";
|
||||||
private string user = "root";
|
private string user = "root";
|
||||||
private string pass = "mafia";
|
private string pass = "mafia";
|
||||||
private MySqlConnection connection;
|
private MySqlConnection connection;
|
||||||
@ -20,6 +21,13 @@ namespace MailServer.DataBase
|
|||||||
"UID=" + user + ";" +
|
"UID=" + user + ";" +
|
||||||
"PASSWORD=" + pass + ";";
|
"PASSWORD=" + pass + ";";
|
||||||
connection = new MySqlConnection(myConnectionString);
|
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()
|
~MysqlConnector()
|
||||||
{
|
{
|
||||||
@ -27,11 +35,10 @@ namespace MailServer.DataBase
|
|||||||
}
|
}
|
||||||
public MySqlDataReader read(string sql)
|
public MySqlDataReader read(string sql)
|
||||||
{
|
{
|
||||||
|
Console.WriteLine(sql);
|
||||||
MySqlCommand command = connection.CreateCommand();
|
MySqlCommand command = connection.CreateCommand();
|
||||||
command.CommandText = sql;
|
command.CommandText = sql;
|
||||||
connection.Open();
|
|
||||||
MySqlDataReader reader = command.ExecuteReader();
|
MySqlDataReader reader = command.ExecuteReader();
|
||||||
connection.Close();
|
|
||||||
return reader;
|
return reader;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
/*using System.Collections.Generic;
|
/*using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;*/
|
using System.Text;*/
|
||||||
@ -17,13 +19,21 @@ namespace MailServer.DataBase
|
|||||||
}
|
}
|
||||||
public bool checkUser(string user, string pass)
|
public bool checkUser(string user, string pass)
|
||||||
{
|
{
|
||||||
MySqlDataReader reader = mysql.read("SELECT `pass` FROM `users` WHERE `user` = '"+escape(user)+"';");
|
pass = getMd5Hash(pass);
|
||||||
if(!reader.HasRows)
|
MySqlDataReader reader = mysql.read("SELECT `pass` FROM `users` WHERE `user` = '"+escape(user)+"'");
|
||||||
|
if (!reader.HasRows)
|
||||||
|
{
|
||||||
|
reader.Close();
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
while(reader.Read()) {
|
while(reader.Read()) {
|
||||||
if(reader.GetString(0) == pass)
|
if (reader.GetString(0).ToLower() == pass.ToLower())
|
||||||
|
{
|
||||||
|
reader.Close();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
reader.Close();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,5 +48,17 @@ namespace MailServer.DataBase
|
|||||||
return "";
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
90
MailServer/Logger/EventLogger.cs
Normal file
90
MailServer/Logger/EventLogger.cs
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -50,6 +50,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="DataBase\MysqlConnector.cs" />
|
<Compile Include="DataBase\MysqlConnector.cs" />
|
||||||
<Compile Include="DataBase\MysqlImap.cs" />
|
<Compile Include="DataBase\MysqlImap.cs" />
|
||||||
|
<Compile Include="Logger\EventLogger.cs" />
|
||||||
<Compile Include="LumiSoft\IMAP\IMAP_ACL_Flags.cs">
|
<Compile Include="LumiSoft\IMAP\IMAP_ACL_Flags.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -5,6 +5,7 @@ using System.ServiceProcess;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
using MailServer.Services;
|
using MailServer.Services;
|
||||||
|
using MailServer.Logger;
|
||||||
|
|
||||||
namespace MailServer
|
namespace MailServer
|
||||||
{
|
{
|
||||||
@ -15,18 +16,19 @@ namespace MailServer
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
EventLogger logger = new EventLogger();
|
||||||
if (args.Length == 0)
|
if (args.Length == 0)
|
||||||
{
|
{
|
||||||
ServiceBase[] ServicesToRun;
|
ServiceBase[] ServicesToRun;
|
||||||
ServicesToRun = new ServiceBase[]
|
ServicesToRun = new ServiceBase[]
|
||||||
{
|
{
|
||||||
new IMAP_Service()
|
new IMAP_Service(logger)
|
||||||
};
|
};
|
||||||
ServiceBase.Run(ServicesToRun);
|
ServiceBase.Run(ServicesToRun);
|
||||||
}
|
}
|
||||||
else if (args.Length == 1 || args[0] == "-r")
|
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);
|
imap_s.Start(args);
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
@ -6,6 +6,7 @@ using System.Text;
|
|||||||
using LumiSoft.Misc;
|
using LumiSoft.Misc;
|
||||||
using LumiSoft.Misc.SocketServer;
|
using LumiSoft.Misc.SocketServer;
|
||||||
using LumiSoft.IMAP.Server;
|
using LumiSoft.IMAP.Server;
|
||||||
|
using MailServer.Logger;
|
||||||
|
|
||||||
namespace MailServer.Services
|
namespace MailServer.Services
|
||||||
{
|
{
|
||||||
@ -13,8 +14,11 @@ namespace MailServer.Services
|
|||||||
{
|
{
|
||||||
void server_AuthUser(object sender, AuthUser_EventArgs e)
|
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);
|
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)
|
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)
|
void server_UnSubscribeFolder(object sender, Mailbox_EventArgs e)
|
||||||
@ -125,7 +130,8 @@ namespace MailServer.Services
|
|||||||
|
|
||||||
void server_ValidateIPAddress(object sender, ValidateIP_EventArgs e)
|
void server_ValidateIPAddress(object sender, ValidateIP_EventArgs e)
|
||||||
{
|
{
|
||||||
Console.WriteLine(e.ToString());
|
logger.add(EventType.Info, "IMAP", "ValidateIP: " + e.ConnectedIP);
|
||||||
|
//Console.WriteLine(e.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ using System.Text;
|
|||||||
|
|
||||||
using LumiSoft.IMAP.Server;
|
using LumiSoft.IMAP.Server;
|
||||||
using MailServer.DataBase;
|
using MailServer.DataBase;
|
||||||
|
using MailServer.Logger;
|
||||||
|
|
||||||
namespace MailServer.Services
|
namespace MailServer.Services
|
||||||
{
|
{
|
||||||
@ -16,9 +17,11 @@ namespace MailServer.Services
|
|||||||
{
|
{
|
||||||
private IMAP_Server server;
|
private IMAP_Server server;
|
||||||
private MysqlImap database;
|
private MysqlImap database;
|
||||||
|
private EventLogger logger;
|
||||||
|
|
||||||
public IMAP_Service()
|
public IMAP_Service(EventLogger log)
|
||||||
{
|
{
|
||||||
|
this.logger = log;
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
database = new MysqlImap();
|
database = new MysqlImap();
|
||||||
putEvents();
|
putEvents();
|
||||||
|
Loading…
Reference in New Issue
Block a user