Beispiel #1
0
        public static async Task <Result> TextFromUrlAsync(string apikey, Uri url, string client, int priority,
                                                           MiningIntensity intensity, string origFilename = null, TimeSpan?maxWaitingTime = null,
                                                           TimeSpan?restartTaskAfterTime = null /*, Api.CallbackData callBackData = null*/)
        {
            string fullUrl = null;
            string taskId  = null;

            var tmpFile = TempIO.GetTemporaryFilename();

            try
            {
                using (Devmasters.Net.HttpClient.URLContent net = new Devmasters.Net.HttpClient.URLContent(url.AbsoluteUri))
                {
                    net.TimeInMsBetweenTries = 2000;
                    net.Timeout          = 60000;
                    net.Tries            = 5;
                    net.IgnoreHttpErrors = true;
                    System.IO.File.WriteAllBytes(tmpFile, net.GetBinary().Binary);
                }
                return(await TextFromFileAsync(apikey, tmpFile, client, priority,
                                               intensity, origFilename, maxWaitingTime, restartTaskAfterTime));
            }
            catch (Exception e)
            {
                throw new ApiException("exception API TextFromFileAsync  ", e);
                //return new Result() { Id = taskId, IsValid = Result.ResultStatus.Invalid, Error = json["error"].Value<string>() };
            }
            finally
            {
                TempIO.DeleteFile(tmpFile);
            }
        }
Beispiel #2
0
        /// <summary>
        ///  已連線連線並有資料傳入時叫用
        /// </summary>
        /// <param name="asyn"></param>
        public void OnDataReceived(IAsyncResult asyn)
        {
            try
            {
                SocketPacket socketData = (SocketPacket)asyn.AsyncState;//取得接受的資料
                //宣告及定義訊息長度
                int iRx = socketData.m_currentSocket.EndReceive(asyn);

                var clientIP = socketData.m_currentSocket.RemoteEndPoint; //客戶端IP

                byte[] databuff = socketData.dataBuffer;

                //回應丟去Helper來判斷原因,把原因切割成許多內容

                //開頭是55AAFE才收,但是第四五碼是A3B6(163、182)時不收
                if (databuff[0] == 85 && databuff[1] == 170 && databuff[2] == 254 && databuff[3] != 163 && databuff[4] != 182)
                {
                    var response = ServerResponseHelper.cutData(databuff);


                    var timeNow  = DateTime.Now;
                    var timeNowS = timeNow;

                    response.ip         = Convert.ToString(clientIP).Split(':')[0]; //只取IP
                    response.InsertDate = timeNow;

                    //IP-完整內容-類型1-類型2-說明
                    var msg = $"[{timeNowS}]-{response.ip}-{response.Cate}-{response.replayString}";


                    try
                    {
                        //通報別的執行緒上的控制象進行顯示
                        Print(tb_result, msg);

                        //存入資料庫
                        db.Events.Add(response);
                        db.SaveChanges();

                        //發信
                        MailHelper.SentMail(response.Cate,
                                            "[" + response.InsertDate + "] " + response.ip + " " + response.replayString);
                    }
                    catch (Exception e)
                    {
                    }
                }

                //如果是回55AAFE A3B6就代表設備還在線上
                if (databuff[0] == 85 && databuff[1] == 170 && databuff[2] == 254 && databuff[3] == 163 &&
                    databuff[4] == 182)
                {
                    try
                    {
                        //收到資料先檢查暫存檔有沒有資料
                        var clientIPString = Convert.ToString(clientIP).Split(':')[0];
                        var tempRepeat     = db.TempIO.Where(o => o.IP == clientIPString);

                        if (!tempRepeat.Any()) //如果沒資料的話
                        {
                            //加入資料庫
                            var tempdata = new TempIO
                            {
                                IP         = Convert.ToString(clientIP).Split(':')[0],
                                InsertTime = DateTime.UtcNow,
                                DueTime    = DateTime.UtcNow.AddSeconds(70),
                            };
                            db.TempIO.Add(tempdata);
                            db.SaveChanges();

                            //產生一個事件
                            var fullResponse = TransferHelper.ToHexString(databuff).Replace(" ", "").Substring(0, 20);

                            var tempEvent = new Events
                            {
                                ip           = Convert.ToString(clientIP).Split(':')[0],
                                replay       = fullResponse,
                                Cate         = rm.GetString("CMD_Scanner"),
                                cate1        = "A3B6",
                                cate2        = "00",
                                replayString = rm.GetString("CMD_A3B6I"),
                                InsertDate   = DateTime.Now
                            };
                            db.Events.Add(tempEvent);
                            db.SaveChanges();

                            //發信
                            MailHelper.SentMail(rm.GetString("CMD_A3B6I"),
                                                "[" + tempEvent.InsertDate + "] " + tempEvent.ip + " " + rm.GetString("CMD_A3B6I"));

                            //IP-完整內容-類型1-類型2-說明
                            var msg = $"[{tempEvent.InsertDate}]-{tempEvent.ip}-{tempEvent.Cate}-{tempEvent.replayString}";

                            //通報別的執行緒上的控制象進行顯示
                            Print(tb_result, msg);
                        }
                        else
                        //如果暫存檔有的話,就更新時間
                        {
                            var saveTemp = tempRepeat.SingleOrDefault();
                            saveTemp.DueTime = DateTime.UtcNow.AddSeconds(70);
                            db.SaveChanges();
                        }
                    }
                    catch (Exception e)
                    {
                    }
                }

                WaitForData(socketData.m_currentSocket);
            }
            catch (SocketException) { }
        }