public byte[] MakeSendData(UserInfo user)
 {
     string username = user.username;
     string password = user.password;
     string realm = "BudNet-Prod";
     string postData = "username="******"&password="******"&realm=" + realm;
     ASCIIEncoding ascii = new ASCIIEncoding();
     byte[] data = ascii.GetBytes(postData);
     return data;
 }
 public static void WriteLog(string logMessage, UserInfo user)
 {
     var sw = new StreamWriter("log.txt", true);
     var log = DateTime.Today.ToShortDateString() + "\r\n";
     log += user.company + "  " + logMessage + "\r\n";
     log += "CustomerID:   \t" + user.customerID + "\r\n";
     log += "username:      \t" + user.username + "\r\n";
     log += "oldpassword: \t" + user.password + "\r\n";
     log += "\r\n";
     sw.Write(log);
     sw.Close();
 }
 public static void ReadFileToUsers(List<UserInfo> toUsers)
 {
     var sr = new StreamReader("bud.txt");
     while (!sr.EndOfStream)
     {
         var user = new UserInfo();
         user.customerID = sr.ReadLine().Trim();
         user.company = sr.ReadLine();
         user.username = sr.ReadLine().Trim();
         user.password = sr.ReadLine().Trim();
         user.locations = new List<location>();
         while (true)
         {
             var location = new location();
             location.name = sr.ReadLine();
             if (location.name == "" || location.name == null)
                 break;
             location.number = sr.ReadLine();
             user.locations.Add(location);
         }
         toUsers.Add(user);
     }
     sr.Close();
 }
 public BudNetRequest(UserInfo user)
 {
     this.user = user;
 }
        public bool RequestToChangePassword(UserInfo user, string newPassword)
        {
            byte[] data = MakeSendData(user);
            SetPost(data);
            var respone = request.GetResponse();
            if (respone.ResponseUri.ToString().ToLower().Contains("sso=p+login.aspx"))
            {
                var sr = new StreamReader(respone.GetResponseStream());
                var html = sr.ReadToEnd();
                sr.Close();

                string viewstate = Program.getInputValueByName("__VIEWSTATE", html);
                string eventvalidation = Program.getInputValueByName("__EVENTVALIDATION", html);
                viewstate = System.Web.HttpUtility.UrlEncode(viewstate);
                eventvalidation = System.Web.HttpUtility.UrlEncode(eventvalidation);

                if (html.Contains("Your password has expired!") || html.Contains("Your password expires in 2 days!") || html.Contains("Your password expires in 3 days!"))
                {
                    Program.WriteLog("'s password has expired and will be set a new as '" + newPassword + "'.", user);

                    var cookie = request.CookieContainer.GetCookies(new Uri("https://www.budnet.com/"));
                    string sendData = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=" + viewstate + "&__EVENTVALIDATION=" + eventvalidation + "&txtCurrentPassword="******"&txtNewPassword="******"&txtConfirmNewPassword="******"&cmdSubmit=Submit";
                    var ascii = new ASCIIEncoding();
                    data = ascii.GetBytes(sendData);
                    try
                    {
                        SetPost(data, "https://www.budnet.com/DSLogin/,DanaInfo=.a184C65F999JAF,SSO=P+ChangePassword.aspx", cookie);
                        var response = (HttpWebResponse)request.GetResponse();
                        respone.Close();
                        request = null;
                        var newUser = user;
                        newUser.password = newPassword;
                        Program.waitForConfirmed.Add(newUser);
                        return true;//true or false is meaningless
                    }
                    catch
                    {
                        Program.WriteLog(" sending new password has some errors,but not sure what it's. ", user);
                    }
                    return false;
                }
                else
                    Program.WriteLog(" should be expired,but re-inspect wrongly.", user);

            }
            else
            {
                Program.WriteLog(" should be expired,but re-inspect wrongly.", user);
            }
            respone.Close();
            return false;
        }