diff --git a/MailServer/DataBase/MysqlConnector.cs b/MailServer/DataBase/MysqlConnector.cs new file mode 100644 index 0000000..840581b --- /dev/null +++ b/MailServer/DataBase/MysqlConnector.cs @@ -0,0 +1,38 @@ +/*using System; +using System.Collections.Generic; +using System.Linq; +using System.Text;*/ +using MySql.Data.MySqlClient; + +namespace MailServer.DataBase +{ + class MysqlConnector + { + private string server = "localhost"; + private string db = ""; + private string user = "root"; + private string pass = "mafia"; + private MySqlConnection connection; + public MysqlConnector() + { + string myConnectionString = "SERVER=" + server + ";" + + "DATABASE=" + db + ";" + + "UID=" + user + ";" + + "PASSWORD=" + pass + ";"; + connection = new MySqlConnection(myConnectionString); + } + ~MysqlConnector() + { + connection.Close(); + } + public MySqlDataReader read(string sql) + { + MySqlCommand command = connection.CreateCommand(); + command.CommandText = sql; + connection.Open(); + MySqlDataReader reader = command.ExecuteReader(); + connection.Close(); + return reader; + } + } +} diff --git a/MailServer/DataBase/MysqlImap.cs b/MailServer/DataBase/MysqlImap.cs new file mode 100644 index 0000000..963f983 --- /dev/null +++ b/MailServer/DataBase/MysqlImap.cs @@ -0,0 +1,42 @@ +using System; +/*using System.Collections.Generic; +using System.Linq; +using System.Text;*/ + +using System.Text.RegularExpressions; +using MySql.Data.MySqlClient; + +namespace MailServer.DataBase +{ + class MysqlImap + { + private MysqlConnector mysql; + public MysqlImap() + { + mysql = new MysqlConnector(); + } + public bool checkUser(string user, string pass) + { + MySqlDataReader reader = mysql.read("SELECT `pass` FROM `users` WHERE `user` = '"+escape(user)+"';"); + if(!reader.HasRows) + return false; + while(reader.Read()) { + if(reader.GetString(0) == pass) + return true; + } + return false; + } + + private string escape(string str) + { + try + { + return Regex.Replace(str,@"(\\)([\000\010\011\012\015\032\042\047\134\140])","$2"); + } + catch(Exception) + { + return ""; + } + } + } +} diff --git a/MailServer/MailServer.csproj b/MailServer/MailServer.csproj index d2440db..4d821d0 100644 --- a/MailServer/MailServer.csproj +++ b/MailServer/MailServer.csproj @@ -34,6 +34,10 @@ 4 + + False + E:\Programme\MySql\CS\Assemblies\MySql.Data.dll + @@ -44,6 +48,8 @@ + + Code @@ -105,10 +111,18 @@ Component - - - - + + Component + + + Component + + + Component + + + Component + Code diff --git a/MailServer/Services/IMAP/Server/IMAP_Service.Events.cs b/MailServer/Services/IMAP/Server/IMAP_Service.Events.cs index 46c4abe..e142ab3 100644 --- a/MailServer/Services/IMAP/Server/IMAP_Service.Events.cs +++ b/MailServer/Services/IMAP/Server/IMAP_Service.Events.cs @@ -13,7 +13,9 @@ namespace MailServer.Services { void server_AuthUser(object sender, AuthUser_EventArgs e) { + e.Validated = database.checkUser(e.UserName, e.PasswData); Console.WriteLine(e.ToString()); + } void server_CopyMessage(object sender, Message_EventArgs e) diff --git a/MailServer/Services/IMAP/Server/IMAP_Service.cs b/MailServer/Services/IMAP/Server/IMAP_Service.cs index 6169815..0769873 100644 --- a/MailServer/Services/IMAP/Server/IMAP_Service.cs +++ b/MailServer/Services/IMAP/Server/IMAP_Service.cs @@ -8,17 +8,20 @@ using System.ServiceProcess; using System.Text; using LumiSoft.IMAP.Server; +using MailServer.DataBase; namespace MailServer.Services { public partial class IMAP_Service : ServiceBase { private IMAP_Server server; + private MysqlImap database; public IMAP_Service() { InitializeComponent(); - putEvents(); + database = new MysqlImap(); + putEvents(); } private void putEvents()