Esempio n. 1
0
        public int Add()
        {
            int result = 0;

            if (User.Current != null)
            {
                Security security = new Security();

                bool check = CheckExists(Name);

                if (check)
                {
                    result = -2;
                }
                else
                {
                    int Num;
                    bool isNum = int.TryParse(Port.ToString(), out Num);

                    if (isNum)
                    {
                        XmlDocument mails = security.ReadMailConfiguration(User.Current.Path);

                        XmlNode node = mails.SelectSingleNode("/root/mails");
                        XmlNode mailNode = mails.CreateElement("mail");

                        node.AppendChild(mailNode);

                        XmlNode nameNode = mails.CreateElement("name");
                        nameNode.AppendChild(mails.CreateTextNode(Name));
                        mailNode.AppendChild(nameNode);

                        XmlNode serverNode = mails.CreateElement("server");
                        serverNode.AppendChild(mails.CreateTextNode(Server));
                        mailNode.AppendChild(serverNode);

                        XmlNode userNode = mails.CreateElement("user");
                        userNode.AppendChild(mails.CreateTextNode(Username));
                        mailNode.AppendChild(userNode);

                        XmlNode passNode = mails.CreateElement("password");
                        passNode.AppendChild(mails.CreateTextNode(Password));
                        mailNode.AppendChild(passNode);

                        XmlNode portNode = mails.CreateElement("port");
                        portNode.AppendChild(mails.CreateTextNode(Port.ToString()));
                        mailNode.AppendChild(portNode);

                        security.SaveMailConfiguration(User.Current.Path, mails.InnerXml);

                        result = 1;
                    }
                    else
                    {
                        result = -3;
                    }
                }
            }
            else
            {
                result = -1;
            }

            return result;
        }
Esempio n. 2
0
        public bool Delete()
        {
            bool result = false;

            if (User.Current != null)
            {

                Security security = new Security();
                XmlDocument mails = security.ReadMailConfiguration(User.Current.Path);

                XmlNode node = mails.SelectSingleNode("/root/mails/mail[name='" + Name + "']");
                if (node != null)
                {
                    node.ParentNode.RemoveChild(node);
                    security.SaveMailConfiguration(User.Current.Path, mails.InnerXml);
                    result = true;
                }
            }

            return result;
        }
Esempio n. 3
0
        public int Update()
        {
            int result = 0;

            if (User.Current != null)
            {
                Security security = new Security();
                XmlDocument mails = security.ReadMailConfiguration(User.Current.Path);

                XmlNode node = mails.SelectSingleNode("/root/mails/mail[name='" + Name + "']");
                if (node != null)
                {
                    node.SelectSingleNode("name").InnerText = Name;
                    node.SelectSingleNode("server").InnerText = Server;
                    node.SelectSingleNode("user").InnerText = Username;
                    node.SelectSingleNode("password").InnerText = Password;
                    node.SelectSingleNode("port").InnerText = Port.ToString();

                    security.SaveMailConfiguration(User.Current.Path, mails.InnerXml);

                    result = 1;
                }
            }
            else
            {
                result = -1;
            }

            return result;
        }
Esempio n. 4
0
        public int Register()
        {
            int result = 0;

            if (string.IsNullOrEmpty(UserName))
            {
                result = -1;
            }
            else if (string.IsNullOrEmpty(Email))
            {
                result = -2;
            }
            else if (string.IsNullOrEmpty(Password))
            {
                result = -3;
            }
            else if (string.IsNullOrEmpty(Confirm))
            {
                result = -4;
            }
            else
            {
                string MatchEmailPattern = @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@"
                                            + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\."
                                            + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
                                            + @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$";
                bool checkEmail = System.Text.RegularExpressions.Regex.IsMatch(Email, MatchEmailPattern);
                if (!checkEmail)
                {
                    result = -5;
                }
                else
                {
                    if (Password != Confirm)
                    {
                        result = -6;
                    }
                    else
                    {
                        string publicKey = "";
                        string privateKey = "";

                        CspParameters cspParams = null;
                        RSACryptoServiceProvider rsaProvider = null;

                        cspParams = new CspParameters();
                        cspParams.ProviderType = 1;
                        cspParams.Flags = CspProviderFlags.UseArchivableKey;
                        cspParams.KeyNumber = (int)KeyNumber.Exchange;
                        rsaProvider = new RSACryptoServiceProvider(cspParams);

                        publicKey = rsaProvider.ToXmlString(false);
                        privateKey = rsaProvider.ToXmlString(true);

                        User us = new User();
                        us.UserName = UserName;
                        us.Email = Email;

                        us.PrivateKey = privateKey;
                        us.PublicKey = publicKey;
                        us.Path = Path;

                        byte[] salt = new byte[16];
                        byte[] hashPassword = new byte[16];

                        Security security = new Security();
                        security.HashPassword(Password, out salt, out hashPassword);

                        string s = Convert.ToBase64String(salt);
                        string p = Convert.ToBase64String(hashPassword);

                        us.Password = p;
                        us.Salt = s;

                        if (!System.IO.File.Exists(Path))
                        {

                            security.SaveConnectionConfiguration(Path, "test", "test", "test", "test", "test", "test");
                            security.SaveMailConfiguration(Path, "test", "test", 0, "test", "test");
                            security.SaveAccountsConfiguration(Path, "test", "test", "test", "test");
                            security.SaveUserConfiguration(Path, UserName, Email, p, privateKey, publicKey, s);

                            Login();

                            result = 1;
                        }
                        else
                        {

                            XmlDocument users = security.ReadUserConfiguration(Path);

                            bool check = CheckUserAndEmailExists(UserName, Email, users);
                            if (!check)
                            {
                                XmlNode node = users.SelectSingleNode("/root/users");
                                XmlNode userNode = users.CreateElement("user");

                                node.AppendChild(userNode);

                                XmlNode usernameNode = users.CreateElement("username");
                                usernameNode.AppendChild(users.CreateTextNode(UserName));
                                userNode.AppendChild(usernameNode);

                                XmlNode emailNode = users.CreateElement("email");
                                emailNode.AppendChild(users.CreateTextNode(Email));
                                userNode.AppendChild(emailNode);

                                XmlNode passNode = users.CreateElement("password");
                                passNode.AppendChild(users.CreateTextNode(p));
                                userNode.AppendChild(passNode);

                                XmlNode publickeyNode = users.CreateElement("publickey");
                                publickeyNode.AppendChild(users.CreateCDataSection(PublicKey));
                                userNode.AppendChild(publickeyNode);

                                XmlNode privateNode = users.CreateElement("privatekey");
                                privateNode.AppendChild(users.CreateCDataSection(PrivateKey));
                                userNode.AppendChild(privateNode);

                                XmlNode saltNode = users.CreateElement("salt");
                                saltNode.AppendChild(users.CreateCDataSection(s));
                                userNode.AppendChild(saltNode);

                                security.SaveUserConfiguration(Path, users.InnerXml);

                                Login();

                                result = 1;
                            }
                            else
                            {
                                result = -7;
                            }
                        }
                    }
                }
            }

            return result;
        }