/// <summary> /// 从配置文件中读取上次登录信息 /// </summary> public void FromFile(string file) { string pre = "LastLoginItem"; Hashtable ht = EagleFileIO.ReadEagleDotTxtFileToHashTable(); m_username = EagleString.egString.Null2S(ht[pre + "UserName"]); m_password = EagleString.egString.Null2S(ht[pre + "PassWord"]); m_password = EagleString.BaseFunc.Crypt.CryptString.DeCode(m_password); m_remember = (EagleString.egString.Null2S(ht[pre + "Remember"]) == "1"); m_autologin = (EagleString.egString.Null2S(ht[pre + "AutoLogin"]) == "1"); try { m_provider = (LineProvider)byte.Parse(EagleString.egString.Null2S(ht[pre + "Provider"])); } catch { m_provider = LineProvider.DianXin; } m_server_login = EagleString.egString.Null2S(ht[pre + "ServerLogin"]); m_server_update = EagleString.egString.Null2S(ht[pre + "ServerUpdate"]); m_btocuser = (EagleString.egString.Null2S(ht[pre + "BtocUser"]) == "1"); m_subnumber = EagleString.egString.Null2S(ht[pre + "SubNumber"]); //m_b2cipservice = EagleString.egString.Null2S(ht[pre + "b2cIPservice"]); m_b2cipservice = EagleString.egString.Null2S(ht[pre + "b2cIPservice"]); if (m_b2cipservice.ToUpper().StartsWith("HTTP://")) { m_b2cipservice = m_b2cipservice.Substring(7); } m_b2cipsite = EagleString.egString.Null2S(ht[pre + "b2cIPsite"]); }
private void downloadXML() { try { string strTemp = DateTime.Now.Ticks.ToString(); string file = Application.StartupPath + "\\updateServerSide.xml"; string fileTemp = file + "." + strTemp + ".tmp"; string fileBak = file + "." + strTemp + ".bak"; HttpDownloader httpDown = new HttpDownloader(downTimeout); httpDown.Download(GetURL() + "/" + strUpdateXmlFile, fileTemp); if (File.Exists(file)) { Directory.Move(file, fileBak); } Directory.Move(fileTemp, file); try { File.Delete(fileBak); } catch { } } catch (Exception ee) { EagleFileIO.LogWrite(ee.ToString()); EagleFileIO.LogWrite("下载升级列表失败!请重试或者取消更新。"); //tryCount = 2; return; } System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(downloadFiles)); th.Start(); }
public void Recv(RtResult rtres) { bool flag = false; switch (rtres.FLAG_OF_PNR) { case PNR_FLAG.CANCELLED: fc.SubmitEticketInfomation(rtres, 0, 1, 0, 0, int.Parse(m_li.b2b.lr.IpidUsing[0]), ref flag); return; break; case PNR_FLAG.ETICKET: break; case PNR_FLAG.MARRIED: File.AppendAllText(file, "\r\n" + rtres.PNR); break; case PNR_FLAG.NORMAL: File.AppendAllText(file, "\r\n" + rtres.PNR); break; } int total = 0; int count = rtres.SEGMENG.Length; int[] sFare = new int[count]; int[] sBuild = new int[count]; int[] sFuel = new int[count]; int[] sFareY = new int[count]; global::EagleExtension.EagleExtension.CalPnrsTotalPrice( rtres, m_li.b2b.webservice, ref total, ref sFare, ref sBuild, ref sFuel, ref sFareY ); int builda = 0; int buildc = 0; int fuela = 0; int fuelc = 0; foreach (int i in sBuild) { builda += i; } foreach (int i in sFuel) { fuela += i; fuelc += EagleString.egString.TicketPrice(i, 50); } int build = rtres.CHILDRENCOUNT * buildc + rtres.ADULTCOUNT * builda; int fuel = rtres.CHILDRENCOUNT * fuelc + rtres.ADULTCOUNT * fuela; fc.SubmitEticketInfomation(rtres, total, 1, build, fuel, int.Parse(m_li.b2b.lr.IpidUsing[0]), ref flag); if (flag) { EagleFileIO.LogWrite("电子客票提交成功:" + rtres.PNR); } start(); }
/// <summary> /// public 调用 /// </summary> public void Start() { if (m_date.AddMinutes(m_interval) > DateTime.Now) { return; } m_date = DateTime.Now; EagleFileIO.LogWrite("启动后台上传电子客票信息"); start(); }
public void ToFile(bool SavePassword) { ToFile(""); if (!SavePassword) { Hashtable ht = new Hashtable(); string pre = "LastLoginItem"; ht.Add(pre + "PassWord", EagleString.BaseFunc.Crypt.CryptString.EnCode("")); EagleFileIO.WiteHashTableToEagleDotTxt(ht); } }
private void HandlePassport() { m_passport = false; if (m_buf[12] == 0x01 && m_buf[13] == 0x00)//Passed { m_passport = true; m_txt = m_in_username + ": 欢迎使用[易格航空订票系统2.0],已经通过您的认证!\r\n>"; m_txt += "您的帐户余额为:¥" + m_in_money + "\r\n>"; if (m_ipid_dest == null) { m_ipid_dest = m_in_lr.b2b.lr.IpidsWhenLogin(ref m_in_specoffice).ToArray(); } try { EagleFileIO.LogWrite("通过认证,将注册目标配置" + string.Join(",", m_ipid_dest)); } catch { EagleFileIO.LogWrite("m_ipid_dest为null!"); } if (m_ipid_dest == null || m_ipid_dest.Length == 0) { m_txt += "您没有可用配置……\r\n>"; } else { PACKET_IP_REGISTER packet = new PACKET_IP_REGISTER((uint)m_in_MsgNo, (ushort)m_ipid_dest.Length, m_ipid_dest); m_sendbyte = packet.ToBytes(); } } else if (m_buf[12] == 0x04 && m_buf[13] == 0x10) //UnPassed { m_txt = "未能通过您的身份验证……\r\n"; //Reasons:1,Client and Server not connect the same WebServer 2,Server Error Occer } else//Error { m_txt = "身份验证发生错误……\r\n>"; } }
/// <summary> /// 将当前登录信息写入配置文件 /// </summary> private void ToFile(string file) { Hashtable ht = new Hashtable(); string pre = "LastLoginItem"; ht.Add(pre + "UserName", m_username); ht.Add(pre + "PassWord", EagleString.BaseFunc.Crypt.CryptString.EnCode(m_password)); ht.Add(pre + "Remember", m_remember ? "1" : "0"); ht.Add(pre + "AutoLogin", m_autologin ? "1" : "0"); ht.Add(pre + "Provider", Convert.ToString((byte)m_provider)); ht.Add(pre + "ServerLogin", m_server_login); ht.Add(pre + "ServerUpdate", m_server_update); ht.Add(pre + "BtocUser", m_btocuser ? "1" : "0"); ht.Add(pre + "SubNumber", m_subnumber); ht.Add(pre + "b2cIPservice", m_b2cipservice); ht.Add(pre + "b2cIPsite", m_b2cipsite); EagleFileIO.WiteHashTableToEagleDotTxt(ht); }
private void GetNewFileList(string p_strFileName) { try { docOld.Load(Path.Combine(Application.StartupPath, strUpdateXmlFile)); } catch (Exception ee)//若本地xml文件不存在将直接更新 { EagleFileIO.LogWrite(strUpdateXmlFile); EagleFileIO.LogWrite(ee.ToString()); } try { arrayFiles.Clear(); XmlDocument docTmp = new XmlDocument(); docTmp.Load(p_strFileName); XmlNode root = docTmp.DocumentElement; for (int i = 0; i < root.ChildNodes.Count; i++) { XmlNode rec = root.ChildNodes[i]; //rec.Attributes["eid"].Value; string strFileName = rec.ChildNodes[0].ChildNodes[0].Value; string strFileDate = rec.ChildNodes[1].ChildNodes[0].Value; if (needUpdate(strFileName, strFileDate)) { string[] strAry = new string[2]; strAry[0] = strFileName; strAry[1] = strFileDate; Console.WriteLine("filename: {0}", strFileName); arrayFiles.Add(strAry); } } } catch (Exception ee) { EagleFileIO.LogWrite(p_strFileName); EagleFileIO.LogWrite(ee.ToString()); //MessageBox.Show("解析 XML 信息失败,退出更新!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); //tryCount = 2; return; } }
private void Primary_Load(object sender, EventArgs e) { InitPrimaryAuthority(); wserviceKernal = new kernalFunc(loginInfo.b2b.webservice); (new Thread(new ThreadStart(load))).Start(); InitBlackWindow(); InitSocket(loginInfo.b2b.lr.SERVER_IP, loginInfo.b2b.lr.SERVER_PORT); InitRightPanel(); InitMainMenu(); InitTimer(); InitMainToolBar(); InitMainStatusBar(); InitScrollNotice(); (new Thread(new ThreadStart(AddPopupNotice))).Start(); this.label4.Visible = false; ls_city = EagleString.EagleFileIO.WhiteWindowCity(0, true, false); try { InitExpireTicketFinder(); } catch (Exception ex) { EagleFileIO.LogWrite("InitExpireTicketFinder : " + ex.Message); } if (!OuterCall) { this.Size = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height); } this.Location = new Point(Screen.PrimaryScreen.WorkingArea.X, Screen.PrimaryScreen.WorkingArea.Y); }
/// <summary> /// 启动,在计时器里定时调用 /// </summary> private void start() { m_running = true; string pnr = fc.PnrUnchecked(m_li.b2b.username).Trim(); if (pnr != "") { EagleFileIO.LogWrite("PNR=" + pnr); if (BaseFunc.PnrValidate(pnr)) { m_pool.Clear(); string cmd = m_pool.HandleCommand("rt:n/" + pnr + "/eg"); m_socket.SendCommandBack(cmd, EagleProtocal.TypeOfCommand.AutoPnBack); } else { bool flag = false; fc.SubmitEticketInfomation("INVALID PNR", "", ' ', "", DateTime.Now, "", ' ', "", DateTime.Now, 0, 1, "", "", 0, 0, 0, ref flag); } } else if (ls_pnr.Count > 0) { pnr = ls_pnr[0]; EagleFileIO.LogWrite("PNR=" + pnr); ls_pnr.RemoveAt(0); m_pool.Clear(); string cmd = m_pool.HandleCommand("rt:n/" + pnr + "/eg"); m_socket.SendCommandBack(cmd, EagleProtocal.TypeOfCommand.AutoPnBack); } else { EagleFileIO.LogWrite("There are no eticket infomation to upload!"); m_running = false; } }
private void downloadFiles() { GetNewFileList(Path.Combine(Application.StartupPath, "updateServerSide.xml")); if (arrayFiles.Count > 0) { //if (DialogResult.Yes == MessageBox.Show(this, "有" + m_ary.Count + "个文件可以更新!是否立即更新?", "提示", MessageBoxButtons.YesNo)) { string locationPath = GetURL(); string strTemp = DateTime.Now.Ticks.ToString();//临时文件名 string tempName = ""; string bakName = ""; bool bUpdateSucc = true; //pBar.Minimum = 0; //pBar.Maximum = 100;// m_ary.Count + 1; for (int i = 0; i < arrayFiles.Count; i++) { //pBar.Value = 0; string[] strAry = (string[])arrayFiles[i]; string strFileName = strAry[0].Trim(); //labMes.Text = strFileName;//该语句会导致子线程更新主界面卡死!应使用Invoke操作 try { string location = locationPath + "/" + strFileName; tempName = strFileName + strTemp + ".tmp"; bakName = strFileName + strTemp + ".bak"; HttpDownloader ht = new HttpDownloader(downTimeout); ht.Download(location, tempName, null, null); //btnCancel.Enabled = false; try { File.Move(strFileName, bakName);//改名原文件 } catch (Exception ee) { EagleFileIO.LogWrite(ee.ToString() + strFileName); } File.Move(tempName, strFileName);//启用新文件 try { File.Delete(bakName);//删除原文件(测试发现:运行中的文件,可以被修改名字!但是不能被删除!) } catch { } //btnCancel.Enabled = true; } catch (Exception e) { EagleFileIO.LogWrite("更新失败:" + strFileName); EagleFileIO.LogWrite(e.ToString()); //if (!isCanceled) // MessageBox.Show(this, "更新失败!请重试或者取消更新。" // + System.Environment.NewLine + System.Environment.NewLine + "文件名:" + strFileName, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); bUpdateSucc = false; //tryCount = 2; } finally { try { File.Delete(tempName); } catch { } } if (!bUpdateSucc) { //btnUpdate.Enabled = true; //picLoading.Visible = false; break; } //System.Threading.Thread.Sleep(5000); } if (bUpdateSucc) { System.IO.File.Copy(Application.StartupPath + "\\updateServerSide.xml", Path.Combine(Application.StartupPath, strUpdateXmlFile), true); System.IO.File.Delete(Application.StartupPath + "\\updateServerSide.xml"); EagleFileIO.LogWrite("自动更新成功!文件数:" + arrayFiles.Count); //tryCount = 2; return; } else { //MessageBox.Show("更新失败"); } } //else //{ // tryCount = 2; // Application.Exit(); //} } else { //MessageBox.Show("没有代码需要更新"); //tryCount = 2; return;; } }
/// <summary> /// 优化指令组 /// </summary> public static string[] EtermCommandGroupOptimize(string cmds) { EagleFileIO.LogWrite("指令优化前:" + cmds); string[] a = cmds.ToLower().Split('~'); List <string> ls = new List <string>(); for (int i = 0; i < a.Length; i++) { try { //case 1:前后指令相同(xe5,xe5以及pn,pn等) //if (a[i] == a[i + 1]) continue; //case 2:前后指令都是av if (a[i].StartsWith("av") && a[i + 1].StartsWith("av")) { continue; } //case 3:前后指令都是rtxxxxx if (a[i].StartsWith("rt") && a[i].Length >= 7 && a[i + 1].StartsWith("rt") && a[i + 1].Length >= 7) { continue; } #region//case 4:av,pn,pn,...pn,av//已包含在case 6中 /*if (a[i].StartsWith("av")) * { * * for (int j = i + 1; j < a.Length; j++) * { * if (a[j].StartsWith("pn")) continue; * else if (a[j].StartsWith("av")) * { * i = j - 1;//下一次循环,i自增,故要减1,回到外层,并从该av重新检测 * break; * } * else * { * ls.Add(a[i]);//非pn情况下,加入该指令,循环结束后回到外层循环continue * break; * } * } * continue; * }*/ #endregion #region//case 5:rtxxxxx,pn,pn,...pn,rtxxxxx if (a[i].StartsWith("rt") && a[i].Length >= 7) { for (int j = i + 1; j < a.Length; j++) { if (a[j].StartsWith("pn")) { continue; } else if (a[i].StartsWith("rt") && a[i].Length >= 7) { i = j - 1;//下一次循环,i自增,故要减1 break; } else { ls.Add(a[i]); break; } } continue; } #endregion //case 6:av,非sd,非ss,非s开头...,av if (a[i].StartsWith("av")) { bool b = false; for (int j = i + 1; j < a.Length; j++) { if (a[j].StartsWith("av")) { int index; for (index = i + 1; index < j; index++) { if (a[index].StartsWith("s")) { break; } } if (index == j) { b = true; i = j - 1; } break; } } if (b) { continue; } } ////////////////////////// ls.Add(a[i]); } catch { ls.Add(a[i]); } } OptimizeRule(ls); EagleFileIO.LogWrite("指令优化后:" + string.Join(",", ls.ToArray())); return(ls.ToArray()); }
/// <summary> /// SOCKET接收事件 /// </summary> void socket_Incept(object sender, InceptEventArgs e) { lock (o) { try { byte[] buffer = new byte[e.Astream.Length]; e.Astream.Position = 0; e.Astream.Read(buffer, 0, (int)e.Astream.Length); dataHandler.InitInputArgs(buffer, loginInfo, EagleProtocal.EagleProtocal.MsgNo++); dataHandler.MONEY = userBalance.ToString("f2"); dataHandler.recvHandle(); EagleFileIO.LogWrite(dataHandler.TYPE350 ? "RECV:来自350配置" : "RECV:来自443配置"); string tails = ""; if (!dataHandler.TYPE350) { tails = "\r\n>"; } if (!dataHandler.BackGroundCommand) { switch (commandPool.TYPE) { case ETERM_COMMAND_TYPE.TRFD: break; default: if (OuterCall && (dataHandler.typeOfRecv == DataHandler.TypeOfRecv.Passport)) { } else { if (loginInfo.b2b.lr.AuthorityOfFunction("0FN") && commandPool.TYPE == ETERM_COMMAND_TYPE.RT) //关闭了FN项的显示 { string fn = EagleString.egString.Between2String(dataHandler.Text, "FN/", "\n"); if (fn != "") { commandResult = (dataHandler.Text.Replace(fn, "")); } else { commandResult = dataHandler.Text; } fn = EagleString.egString.Between2String(dataHandler.Text, "FC/", "\n"); if (fn != "") { commandResult = (commandResult.Replace(fn, "")); } AppendBlackWindow(commandResult); } else { AppendBlackWindow(commandResult = (dataHandler.Text + tails)); } } break; } } if (dataHandler.BUFFER != null) { socket.Send(dataHandler.BUFFER); } EagleFileIO.LogWrite(commandResult);//dataHandler.Text switch (dataHandler.PROMOPTTYPE) { case PromoptType.NewApply: string s = ""; m_notifyIcon.start("9:收到申请舱位消息\r\n" + s); break; case PromoptType.ApplyHandled: EagleProtocal.PACKET_PROMOPT_FINISH_APPLY_RESULT packet = new EagleProtocal.PACKET_PROMOPT_FINISH_APPLY_RESULT(); packet.FromBytes(buffer); m_notifyIcon.start("A:收到申请舱位被处理消息\r\n" + packet.content); break; case PromoptType.NewOrder: m_notifyIcon.start("6:有新订单\r\n"); break; } } catch (Exception ex) { EagleFileIO.LogWrite("SOCKET接收处理时发生错误:" + ex.Message); } } try { if (!string.IsNullOrEmpty(dataHandler.Text) && !dataHandler.BackGroundCommand) { HandleResult(); } } catch (Exception ex) { EagleString.EagleFileIO.LogWrite("Primary.HandleResult" + ex.Message); } try { //if (dataHandler.BackGroundCommand) dataHandler.COMMANDRESULT_BACK = dataHandler.Text; if (!string.IsNullOrEmpty(dataHandler.COMMANDRESULT_BACK)) { string t = dataHandler.COMMANDRESULT_BACK; dataHandler.COMMANDRESULT_BACK = ""; HandleResult_background(t); } } catch { } }