private void SetNumberSwiss(MatchCollection matches) { GroupCollection groups = matches[0].Groups; var phoneNumber = groups[0].Value; if (phoneNumber.StartsWith("00") || phoneNumber.StartsWith("+")) { InternationAreaCode = groups[1].Value; AreaCode = groups[2].Value; if (!groups[2].Value.Contains("(")) { AreaCode = AreaCode.Insert(0, "0"); } var numberWithoutAreaCodes = MyRegex.IsSwissAreaCode.Replace(phoneNumber, ""); CallNumber = numberWithoutAreaCodes.Trim(); if (CallNumber.Contains("-")) { SplitCallNumberAndDirectialingIn(CallNumber); } } else { InternationAreaCode = ConstantValue.InternationAreCodeSwiss; AreaCode = phoneNumber.Substring(0, 3); CallNumber = phoneNumber.Substring(3); CallNumber = CallNumber.Trim(); if (CallNumber.Contains("-")) { SplitCallNumberAndDirectialingIn(CallNumber); } } }
// "Simulates" that the data comes from the DB, having no connection to the data store private CallNumber CloneCallNumber(CallNumber source) => new CallNumber() { Owner = source.Owner, PhoneNumber = source.PhoneNumber, TransferRequestedTo = source.TransferRequestedTo, TransferRequestStarted = source.TransferRequestStarted };
private void CallNumber_Click(object sender, RoutedEventArgs e) { CallNumber callNumber = new CallNumber { DataContext = ViewModels.ViewModelLoctor.CallNumberViewModel }; callNumber.Show(); }
private void InitializeIoC() { if (SimpleIoc.Default.IsRegistered <bleissem.babyphone.Settings>()) { return; } SimpleIoc.Default.Register <ICreateTimer>(() => new MyTimerCreator(), true); var dbPath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "Babyphone.Settings.db3"); Settings settings = new Settings(dbPath); SimpleIoc.Default.Register <bleissem.babyphone.Settings>(() => settings, true); AudioManager audioManager = (AudioManager)this.GetSystemService(Context.AudioService); Speaker speaker = new Speaker(audioManager); SimpleIoc.Default.Register <ISpeaker>(() => speaker, true); MuteUnmutePhone mum = new MuteUnmutePhone(audioManager); SimpleIoc.Default.Register <IUnMutePhone>(() => mum, true); SimpleIoc.Default.Register <IMutePhone>(() => mum, true); WindowManagerFlags screenFlags = WindowManagerFlags.ShowWhenLocked | WindowManagerFlags.TurnScreenOn | WindowManagerFlags.KeepScreenOn | WindowManagerFlags.DismissKeyguard; TurnOnOffScreenViewModel turnOnOffScreen = new TurnOnOffScreenViewModel( new ExecuteAction(() => { try { this.Window.AddFlags(screenFlags); var attributes = new WindowManagerLayoutParams(); attributes.CopyFrom(this.Window.Attributes); attributes.ScreenBrightness = 0f; this.Window.Attributes = attributes; } catch { } }), new ExecuteAction(() => { try { this.Window.ClearFlags(screenFlags); var attributes = new WindowManagerLayoutParams(); attributes.CopyFrom(this.Window.Attributes); attributes.ScreenBrightness = -1f; this.Window.Attributes = attributes; } catch { } })); SimpleIoc.Default.Register <ITurnOnOffScreen>(() => turnOnOffScreen, true); PhoneCallTimer pct = new PhoneCallTimer(this.ApplicationContext); SimpleIoc.Default.Register <IReactOnCall>(() => pct, true); SimpleIoc.Default.Register <INotifiedOnCalling>(() => pct, true); ForceHangup fh = new ForceHangup(); fh.Register(this.ForceHangup); SimpleIoc.Default.Register <IForceHangup>(() => fh, true); ReadContacts rc = new ReadContacts(); rc.OnFinished += ReadContactsFinished; rc.Execute(this); SimpleIoc.Default.Register <ReadContacts>(() => rc, true); CallNumber callNumber = new CallNumber(); callNumber.Register(this.Dial, this.CanDial); SimpleIoc.Default.Register <ICallNumber>(() => callNumber, true); SimpleIoc.Default.Register <IAudioRecorder>(() => new AudioRecorderViewModel(), true); SimpleIoc.Default.Register <MainViewModel>(true); pct.Register(OnHangUp); }
public Task <CallNumber> Update(CallNumber callNumber) { _callNumbers.Remove(callNumber.PhoneNumber); _callNumbers.Add(callNumber.PhoneNumber, callNumber); return(Task.Run(() => callNumber)); }
public Task <CallNumber> Add(CallNumber callNumber) => Task.Run(() => { _callNumbers.Add(callNumber.PhoneNumber, callNumber); return(callNumber); });
public string Initialise() { // Get data from file CallNumberJSONModel fileJSON = GetTreeJson(); var callNumberTree = fileJSON.CallNumberTree; var level1CallNumbers = fileJSON.Level1CallNumbers; var level2CallNumbers = fileJSON.Level2CallNumbers; var level3CallNumbers = fileJSON.Level3CallNumbers; // Set Parents of nodes manually to avoid circular reference in JSON callNumberTree.RecursivelySetParents(); // Randomly select level 3 call number Random random = new Random(); int index = random.Next(level3CallNumbers.Count); CallNumber randomCallNumber = level3CallNumbers[index]; // Get correct nodes at each level Node <CallNumber> level3CallNumberNode = callNumberTree.FindNodeBreadthFirst(randomCallNumber); Node <CallNumber> level2CallNumberNode = level3CallNumberNode.Parent; Node <CallNumber> level1CallNumberNode = level2CallNumberNode.Parent; int i = 0; //Shuffle lists of call numbers and take 3 level1CallNumbers = level1CallNumbers.OrderBy(x => random.Next()).ToList(); List <CallNumber> level1Answers = new List <CallNumber>(); level1Answers.Add(level1CallNumberNode.Data); // Ensure that there are no duplicates in list while (level1Answers.Count < 4) { var level1Number = level1CallNumbers[i]; if (!level1Answers.Contains(level1Number)) { level1Answers.Add(level1Number); } i++; } i = 0; level2CallNumbers = level2CallNumbers.OrderBy(x => random.Next()).ToList(); List <CallNumber> level2Answers = new List <CallNumber>(); level2Answers.Add(level2CallNumberNode.Data); // Ensure that there are no duplicates in list and that the level 2 call numbers are within the bounds of level 1 // If level 1 is 200, level 2 can't be outside of 200-300 while (level2Answers.Count < 4) { var level2Number = level2CallNumbers[i]; if (!level2Answers.Contains(level2Number) && Convert.ToInt32(level2Number.Number) / 100 == Convert.ToInt32(level2CallNumberNode.Data.Number) / 100) { level2Answers.Add(level2Number); } i++; } i = 0; level3CallNumbers = level3CallNumbers.OrderBy(x => random.Next()).ToList(); List <CallNumber> level3Answers = new List <CallNumber>(); level3Answers.Add(level3CallNumberNode.Data); string callNumber = level3CallNumberNode.Data.Number.Substring(0, 2); // Randomly generate call numbers according to what the level 3 actual answer is while (level3Answers.Count < 4) { int lastDigit = random.Next(0, 10); CallNumber test = new CallNumber() { Number = callNumber + lastDigit.ToString(), Name = level3CallNumberNode.Data.Name }; if (!level3Answers.Any(cn => cn.Number.Equals(test.Number))) { level3Answers.Add(test); } i++; } // Order lists properly level1Answers = level1Answers.OrderBy(c => c.Number).ToList(); level2Answers = level2Answers.OrderBy(c => c.Number).ToList(); level3Answers = level3Answers.OrderBy(c => c.Number).ToList(); List <CallNumber> correctAnswers = new List <CallNumber>() { level1CallNumberNode.Data, level2CallNumberNode.Data, level3CallNumberNode.Data }; //Session variable name string lastUsedName = HttpContext.Session.GetString("Name"); return(JsonConvert.SerializeObject(new { lastName = lastUsedName, randomCallNumber, level1Answers, level2Answers, level3Answers, correctAnswers })); }
//Precondition: None //Postcondition: A string is returned showing the book's details public override string ToString() { return("Title: " + Title.ToString() + "\n" + "Author: " + Author.ToString() + "\n" + "Publisher: " + Publisher.ToString() + "\n" + "Copyright Year: " + CopyrightYear.ToString() + "\n" + "Call Number: " + CallNumber.ToString() + "\n" + "Checked Out Status: " + CheckedOutStatus.ToString()); }
public void LoginToForm() { URLTEXT.Text = "開始...."; webBrowser1.DocumentCompleted += browser_DocumentCompleted; VerifyWeb = ""; try { if (richTextBox1.Text != "") { CallNumber = textBox3.Text; using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\state.txt")) { writetext.WriteLine("0"); } String[] lines = richTextBox1.Text.Split('\n'); String[] AcPw = lines[0].Split(new string[] { "\t" }, StringSplitOptions.None); String Account = AcPw[0]; String Password = ""; String Phone = ""; if (AcPw.Length < 2) { Password = "******"; } else { Password = AcPw[1]; Phone = AcPw[2]; } URLTEXT.Text = Account + "取得Session...."; BeanfunClient = new BeanfunClient(); String sKey = GetSessionkey(); String aKey = RegularLogin(Account, Password, sKey); URLTEXT.Text = Account + "登入中...."; NameValueCollection payload = new NameValueCollection(); payload.Add("SessionKey", sKey); payload.Add("AuthKey", aKey); Debug.WriteLine(sKey); Debug.WriteLine(aKey); Debug.WriteLine(BeanfunClient.ResponseHeaders); BFToken = BeanfunClient.GetCookie("bfWebToken"); if (BeanfunClient.webtoken == "") { MessageBox.Show("NoWebToken"); myThread.Abort(); } NewUrl = "https://tw.beanfun.com/beanfun_block/auth.aspx?channel=game_zone&page_and_query=game_start.aspx%3Fservice_code_and_region%3D610096_TE&web_token=" + BFToken; webBrowser1.Navigate(NewUrl); URLTEXT.Text = Account + "轉跳中...."; Thread.Sleep(1000); ASPCookie = GetCookies(NewUrl).Split(new string[] { "ASP.NET_SessionId=" }, StringSplitOptions.None)[1].Split(';')[0];; RunTime = RunTime + 1; label9.Text = (ErrorTime).ToString() + "/" + RunTime.ToString(); if (!IsBeanfun) { String URL = "https://www.fakemyphone.com.tw/ajax.php?task=call"; NameValueCollection myParameters = new NameValueCollection(); //myParameters.Add("anonym", ""); myParameters.Add("checkcountry", "true"); myParameters.Add("from", CallNumber); myParameters.Add("fromcountry", "886"); //myParameters.Add("ischecked", ""); myParameters.Add("lang", "zh"); myParameters.Add("my", textBox1.Text); myParameters.Add("mycountry", "1"); //myParameters.Add("soundcatid", ""); myParameters.Add("soundloop", "true"); //myParameters.Add("spam", ""); //myParameters.Add("speak", ""); //myParameters.Add("speaklang", ""); myParameters.Add("speakloop", "false"); myParameters.Add("terms", "true"); myParameters.Add("to", "+886985646637"); myParameters.Add("tocountry", "886"); //myParameters.Add("to2", ""); myParameters.Add("to2country", "886"); //myParameters.Add("to3", ""); myParameters.Add("to3country", "886"); //myParameters.Add("to4", ""); myParameters.Add("to4country", "886"); myParameters.Add("usemyorweb", "my"); //myParameters.Add("voice", ""); try { URLTEXT.Text = Encoding.UTF8.GetString(FakeMyPhone.UploadValues(URL, myParameters)); if (URLTEXT.Text.Split(new string[] { "你没有足够的积分呼叫所有接收者" }, StringSplitOptions.None).Length > 1) { URLTEXT.Text = "沒錢了........"; button1.Enabled = true; button2.Enabled = false; using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\state.txt")) { writetext.WriteLine("3"); } return; } } catch (Exception Exc) { URLTEXT.Text = "等待重新開始...撥電話" + Exc.Message; Thread.Sleep(300000); rsThread(); Thread.Sleep(1000); } webBrowser1.Navigate("https://tw.beanfun.com/TW/auth.aspx?channel=member&page_and_query=default.aspx%3Fservice_code%3D999999%26service_region%3DT0&web_token=" + BFToken); Thread.Sleep(1000); webBrowser1.Navigate("https://tw.beanfun.com/TW/locales/zh-TW/contents/member/verify_phone.aspx"); while (VerifyWeb == "") { } String[] Veifys = VerifyWeb.Split(new string[] { " font-weight: bold;\">" }, StringSplitOptions.None); String[] Veifysn = VerifyWeb.Split(new string[] { "var verify_sn = " }, StringSplitOptions.None); String Verify = ""; String verify_sn = ""; if (Veifys.Length > 2 && Veifysn.Length > 1) { Verify = Veifys[2].Split('<')[0]; verify_sn = Veifysn[1].Split(';')[0]; } else { Veifys = VerifyWeb.Split(new string[] { "id=\"ctl00_ContentPlaceHolder1_lblPassword\">" }, StringSplitOptions.None); Verify = Veifys[1].Split('<')[0]; verify_sn = Veifysn[1].Split(';')[0]; } using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\verify.txt")) { writetext.WriteLine(Verify); } using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\state.txt")) { writetext.WriteLine("1"); } URLTEXT.Text = "驗證碼:" + Verify + " 撥號中..."; int Error = 0; CheckStatus: try { Error++; string response = FakeMyPhone.DownloadString("https://www.fakemyphone.com.tw/fake-call/history"); String[] FakeNumber = response.Split(new string[] { "<td>" + CallNumber.Split('+')[1] }, StringSplitOptions.None); while (FakeNumber.Length <= 1) { Thread.Sleep(500); response = FakeMyPhone.DownloadString("https://www.fakemyphone.com.tw/fake-call/history"); FakeNumber = response.Split(new string[] { "<td>" + CallNumber.Split('+')[1] }, StringSplitOptions.None); } String BFNumber = FakeNumber[1].Split(new string[] { "</font><br>886985646637" }, StringSplitOptions.None)[0]; if (BFNumber.Split(new string[] { "green" }, StringSplitOptions.None).Length <= 1 && Error <= 130) { goto CheckStatus; } else { Error = 0; URLTEXT.Text = "橘子已接電話...."; using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\state.txt")) { writetext.WriteLine("2"); } } } catch (Exception ex) { URLTEXT.Text = "等待重新開始...讀電話" + ex.Message; Thread.Sleep(300000); rsThread(); Thread.Sleep(1000); } while (Error <= 15) { Thread.Sleep(2000); c = new RestClient("https://tw.beanfun.com/TW/locales/zh-TW/contents/member/verify_phone_check.ashx?sn=" + verify_sn + "&step=296"); r = new RestRequest(Method.GET); c.CookieContainer = new CookieContainer(); c.CookieContainer.Add(new Cookie("ASP.NET_SessionId", ASPCookie, "", "tw.beanfun.com")); d = c.Execute(r); String[] success = d.Content.Split(new string[] { "<result><code>1</code><desc>" }, StringSplitOptions.None); if (success.Length > 1) { richTextBox2.AppendText(Account + "\t" + Password + "\t" + success[1].Split(new string[] { "</desc></result>" }, StringSplitOptions.None)[0] + "\n"); Path = @"" + textBox2.Text + "\\驗證成功.txt"; YourString = Account + "\t" + Password + "\t" + success[1].Split(new string[] { "</desc></result>" }, StringSplitOptions.None)[0] + Environment.NewLine; File.AppendAllText(Path, YourString); URLTEXT.Text = "驗證成功"; goto NewAc; } else { Error = Error + 1; } } string ErroMSG = d.Content.Split(new string[] { "<desc>" }, StringSplitOptions.None)[1].Split(new string[] { "</desc>" }, StringSplitOptions.None)[0]; URLTEXT.Text = ErroMSG; String Fake09Phone = CallNumber.Split(new string[] { "886" }, StringSplitOptions.None)[1]; richTextBox3.AppendText(Account + "\t" + Password + "\t0" + Fake09Phone + "\t" + ErroMSG + "\n"); Path = @"" + textBox2.Text + "\\驗證失敗.txt"; YourString = Account + "\t" + Password + Environment.NewLine; File.AppendAllText(Path, YourString); ErrorTime += 1; label9.Text = (ErrorTime).ToString() + "/" + RunTime.ToString(); NewAc: using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\state.txt")) { writetext.WriteLine("3"); } int j = 0; using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\驗證列表.txt")) { foreach (var line in lines) { if (j == 0) { richTextBox1.Text = ""; } else { richTextBox1.Text += line; writetext.WriteLine(line); if (j != lines.Count() - 1) { richTextBox1.Text += '\n'; } } j++; } } richTextBox3.SelectionStart = richTextBox3.Text.Length; richTextBox3.ScrollToCaret(); richTextBox2.SelectionStart = richTextBox2.Text.Length; richTextBox2.ScrollToCaret(); textBox3.Text = "+886" + (Int64.Parse(CallNumber.Split(new string[] { "+886" }, StringSplitOptions.None)[1]) + 1).ToString(); SetSetting("Wait", richTextBox1.Text); SetSetting("Success", richTextBox2.Text); SetSetting("Error", richTextBox3.Text); SetSetting("Faker", textBox3.Text); string[] state = System.IO.File.ReadAllLines(@"" + textBox2.Text + "\\state.txt"); while (state[0] != "0") { Thread.Sleep(500); state = System.IO.File.ReadAllLines(@"" + textBox2.Text + "\\state.txt"); } if (RunTime <= 10) { if (ErrorTime >= 3) { using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\state.txt")) { writetext.WriteLine("3"); } URLTEXT.Text = "因10隻內3隻失敗,故停止。"; return; } } else { if ((ErrorTime * 100 / RunTime) >= 30) { using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\state.txt")) { writetext.WriteLine("3"); } URLTEXT.Text = "成功率低於3成,故停止。"; return; } } URLTEXT.Text = "等待中..."; Thread.Sleep(30000); LoginToForm(); } else { if (success == false) { int sTime = 0; for (var i = 1; i <= 5; i++) { var success = false; while (success == false) { URLTEXT.Text = Account + "-" + i.ToString() + "創建中...."; var client = new RestClient("https://tw.beanfun.com/generic_handlers/gamezone.ashx"); var request = new RestRequest(Method.POST); client.CookieContainer = new CookieContainer(); client.CookieContainer.Add(new Cookie("ASP.NET_SessionId", ASPCookie, "", "tw.beanfun.com")); request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"npsc\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"npsr\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"sadn\"\r\n\r\n" + i.ToString() + "\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"sag\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"sc\"\r\n\r\n610096\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"sr\"\r\n\r\nTE\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"strFunction\"\r\n\r\nAddServiceAccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody); IRestResponse responses = client.Execute(request); try { JObject obj = JsonConvert.DeserializeObject <JObject>(responses.Content); if (Convert.ToInt32(obj["intResult"].ToString()) == 1) { URLTEXT.Text = Account + "_" + i.ToString() + "新增成功"; success = true; richTextBox2.AppendText(Account + "_" + i.ToString() + "\t" + Password + "\n"); sTime++; } else { if (obj["strOutstring"].ToString() == "Game account already exists") { success = true; URLTEXT.Text = Account + "_" + i.ToString() + "此帳號已經創建"; richTextBox3.AppendText(Account + "_" + i.ToString() + "\t" + Password + "\t此帳號已經創建\n"); ErrorTime++; break; } if (obj["strOutstring"].ToString() == "Maximum application reached") { success = true; URLTEXT.Text = Account + "_" + i.ToString() + "此帳號已經滿了"; richTextBox3.AppendText(Account + "_" + i.ToString() + "\t" + Password + "\t此帳號已經滿了\n"); ErrorTime++; break; } } } catch (Exception ex) { //richTextBox3.Text += (Account + "_" + i.ToString() + " " + ex.Message + "\n"); } richTextBox3.SelectionStart = richTextBox3.Text.Length; richTextBox3.ScrollToCaret(); richTextBox2.SelectionStart = richTextBox2.Text.Length; richTextBox2.ScrollToCaret(); SetSetting("Success", richTextBox2.Text); SetSetting("Error", richTextBox3.Text); } } success = false; if (sTime == 5) { Path = @"" + textBox2.Text + "\\子號成功.txt"; } else { Path = @"" + textBox2.Text + "\\子號失敗.txt"; } YourString = Account + "\t" + Password + "\t" + Phone + Environment.NewLine; File.AppendAllText(Path, YourString); webBrowser1.Navigate(NewUrl); int j = 0; using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\子號列表.txt")) { foreach (var line in lines) { if (j == 0) { richTextBox1.Text = ""; } else { richTextBox1.Text += line; writetext.WriteLine(line); if (j != lines.Count() - 1) { richTextBox1.Text += '\n'; } } j++; } } SetSetting("Wait", richTextBox1.Text); URLTEXT.Text = "等待中..."; Thread.Sleep(10000); LoginToForm(); } } } else { URLTEXT.Text = "完成"; button1.Enabled = true; button2.Enabled = false; using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\state.txt")) { writetext.WriteLine("3"); } return; } } catch (Exception exception) { if (exception.Message != "執行緒已經中止。") { URLTEXT.Text = "Crash了..." + exception.Message; using (StreamWriter writetext = new StreamWriter(@"" + textBox2.Text + "\\state.txt")) { writetext.WriteLine("3"); } button1.Enabled = true; button2.Enabled = false; } } }