Example #1
0
            /// <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"]);
            }
Example #2
0
        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();
        }
Example #3
0
        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();
        }
Example #4
0
 /// <summary>
 /// public 调用
 /// </summary>
 public void Start()
 {
     if (m_date.AddMinutes(m_interval) > DateTime.Now)
     {
         return;
     }
     m_date = DateTime.Now;
     EagleFileIO.LogWrite("启动后台上传电子客票信息");
     start();
 }
Example #5
0
 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);
     }
 }
Example #6
0
        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>";
            }
        }
Example #7
0
            /// <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);
            }
Example #8
0
        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;
            }
        }
Example #9
0
        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);
        }
Example #10
0
        /// <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;
            }
        }
Example #11
0
        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;;
            }
        }
Example #12
0
        /// <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());
        }
Example #13
0
        /// <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
            {
            }
        }