Logger hinzugefügt
This commit is contained in:
parent
1ef978a3d0
commit
62359d6d91
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
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>
|
||||
<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>
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user