public string GetReaderChooseSeatRecord(string cardNum, int pageIndex, int pageSize)
 {
     request = new SocketRequest();
     request.RequestMethod = RequestMethodEnum.GetReaderChooseSeatRecord;
     request.Parameters.Add(cardNum);
     request.Parameters.Add(pageIndex);
     request.Parameters.Add(pageSize);
     return(CallService(request));
 }
 public string GetViolateDiscipline(string cardNum, int pageIndex, int pageSize)
 {
     request = new SocketRequest();
     request.RequestMethod = RequestMethodEnum.GetViolateDiscipline;
     request.Parameters.Add(cardNum);
     request.Parameters.Add(pageIndex);
     request.Parameters.Add(pageSize);
     return(CallService(request));
 }
 public string CancelBespeakLog(int bespeakId, string remark)
 {
     //初始化请求包
     request = new SocketRequest();
     request.RequestMethod = RequestMethodEnum.CancelBespeakLog;
     request.Parameters.Add(bespeakId);
     request.Parameters.Add(remark);
     return(CallService(request));
 }
 public string ChangeSeat(string cardNo, string seatNo, string readingRoom)
 {
     request = new SocketRequest();
     request.RequestMethod = RequestMethodEnum.ChangeSeat;
     request.Parameters.Add(cardNo);
     request.Parameters.Add(seatNo);
     request.Parameters.Add(readingRoom);
     return(CallService(request));
 }
Exemple #5
0
 private bool HasRequestErros(ref SocketRequest request)
 {
     if (request.HasErrors)
     {
         request.ProcessResponse(ActionResult.Json("", ResponseStatus.ERROR, request.InternalErrorMessage), clientSocket, null);
         return(true);
     }
     return(false);
 }
        /// <summary>
        /// Send the socket request
        /// </summary>
        /// <param name="transaction">index, top25securities, ticker</param>
        /// <param name="startOrStop">start or stop the transactions</param>
        public void Send(string transaction, bool startOrStop)
        {
            Start();
            Log.Information("Sending command to socket. Transaction: {0}, Start: {1}", transaction, startOrStop);
            var request = new SocketRequest(startOrStop, transaction);
            var json    = JsonConvert.SerializeObject(request);

            Log.Verbose(json);
            _websocket.Send(json);
        }
Exemple #7
0
        public ActionResult IsValidToken(string token, SocketRequest request)
        {
            bool   valid = TokenRepository.Instance.IsValid(token, ref request);
            string msg   = (valid
                ? "You have a valid token"
                : "You have a invalid token");

            return(ActionResult.Json(new OperationResult(valid, (valid ? 600 : 500), msg), (valid ? 600 : 500),
                                     msg));
        }
 public string SubmitBespeakInfo(string cardNo, string roomNum, string seatNum, string bespeakDatetime, string remark)
 {
     request = new SocketRequest();
     request.RequestMethod = RequestMethodEnum.SubmitBespeakInfo;
     request.Parameters.Add(cardNo);
     request.Parameters.Add(roomNum);
     request.Parameters.Add(seatNum);
     request.Parameters.Add(bespeakDatetime);
     request.Parameters.Add(remark);
     return(CallService(request));
 }
 /// <summary>
 /// 预约签到
 /// </summary>
 /// <param name="seatNo">座位编号(9位)</param>
 /// <param name="roomNo">阅览室编号</param>
 /// <param name="studentNo">学生学号</param>
 /// <param name="besapeakTime">预约的时间(立即预约次处值无效可为空)</param>
 /// <param name="isNowBesapeak">是否是立即预约</param>
 /// <returns></returns>
 public string SubmitBesapeskSeat(string seatNo, string roomNo, string studentNo, string besapeakTime, bool isNowBesapeak)
 {
     request = new SocketRequest();
     request.RequestMethodType = "SubmitBesapeskSeat";
     request.Parameters.Add(seatNo);
     request.Parameters.Add(roomNo);
     request.Parameters.Add(studentNo);
     request.Parameters.Add(besapeakTime);
     request.Parameters.Add(isNowBesapeak);
     return(CallService(request));
 }
    public void StartPlay()
    {
        SocketRequest req = new SocketRequest();

        req.p1 = GUIDHelper.generate();
        req.p2 = "join";
        req.p3 = DataHelper.GetInstance().LoadToken(dbManager);
        req.p4 = SystemInfo.deviceUniqueIdentifier;
        req.p5 = "10";
        SendBytes(ProtoHelper.Proto2Bytes(req));
    }
        private void OnWebSocketOpen(WebSocket webSocket)
        {
            Debug.Log("WebSocket open! now login.");
            SocketRequest req = new SocketRequest();

            req.p1 = GUIDHelper.generate();
            req.p2 = "login";
            req.p3 = DataHelper.GetInstance().LoadToken(dbManager);
            req.p4 = SystemInfo.deviceUniqueIdentifier;

            webSocket.Send(DESHelper.EncodeBytes(GZipHelper.compress(ProtoHelper.Proto2Bytes(req)), AppContext.GetInstance().getDesKey()));
        }
    /// <summary>
    /// Register Task for UI layer.
    /// </summary>
    /// <param name="task">Task.</param>
    public void RegisterSocketTask(SocketTask task)
    {
        if (task != null)
        {
            SocketRequest sockReq = task.request as SocketRequest;

            if (sockReq != null && !TaskQueue.ContainsKey(sockReq.Act))
            {
                TaskQueue[sockReq.Act] = task;
            }
        }
    }
        /// <summary>
        /// Read bytes coming in on the socket, and if it's a TCP request handle it.
        /// </summary>
        /// <param name="bytes">Byte array containing data on the socket</param>
        /// <param name="length">Content length</param>
        private void ReadBytes(byte[] bytes, int length)
        {
            using (var memoryStream = new MemoryStream(bytes, 0, length))
                using (var binaryReader = new BinaryReader(memoryStream))
                {
                    var request = new SocketRequest();

                    // First 8 bits  of the IP header contain the version and header length
                    var versionAndHeaderLength = binaryReader.ReadByte();
                    var headerLength           = (versionAndHeaderLength & 0x0F) * 4;
                    var version = versionAndHeaderLength >> 4;

                    // Next 8 bits contain the diffe-rentiated services.
                    var bDifferentiatedServices = binaryReader.ReadByte();

                    // Next 16 bits hold the total length of the datagram
                    var totalLength = (ushort)IPAddress.NetworkToHostOrder(binaryReader.ReadInt16());

                    // Next 16 bits for identification
                    var identification = (ushort)IPAddress.NetworkToHostOrder(binaryReader.ReadInt16());

                    // Next 16 bits contain flags and fragmentation offset
                    var flagsAndOffsets = (ushort)IPAddress.NetworkToHostOrder(binaryReader.ReadInt16());

                    // Next 8 bits have the TTL value
                    var ttl = binaryReader.ReadByte();

                    // Next 8 bits have the protocol
                    var protocol = binaryReader.ReadByte();

                    // Next 16 bits contain the checksum of the header
                    var checksum = IPAddress.NetworkToHostOrder(binaryReader.ReadInt16());

                    // Next 32 bits have source IP
                    var sourceIPAddress = (uint)binaryReader.ReadInt32();
                    request.IPAddress = new IPAddress(sourceIPAddress);

                    // Next 32 bits have destination IP
                    var destinationIPAddress = (uint)binaryReader.ReadInt32();
                    var dataSize             = totalLength - headerLength;
                    var data = new byte[dataSize];

                    Array.Copy(bytes, headerLength, data, 0, dataSize);

                    // currently only monitoring traffic over TCP, however
                    // this could be extended to monitor UDP as well.
                    if (protocol == 6)
                    {
                        ReadTCP(data, dataSize, request);
                    }
                }
        }
    private void DoTake(bool take)
    {
        SocketRequest sr = new SocketRequest();

        sr.p1 = GUIDHelper.generate();
        sr.p2 = "takeLandlord";
        sr.p3 = LocalToken();
        sr.p4 = SystemInfo.deviceUniqueIdentifier;
        sr.p5 = AppContext.GetInstance().Watch.gameId.ToString();
        sr.p6 = AppContext.GetInstance().Watch.seatId.ToString();
        sr.p7 = take.ToString();
        SendBytes(ProtoHelper.Proto2Bytes(sr));
    }
Exemple #15
0
 /// <summary>
 /// 读者更换座位
 /// </summary>
 /// <param name="cardNo"></param>
 /// <param name="seatNum"></param>
 /// <param name="readingRoomNum"></param>
 /// <returns></returns>
 public string ChangeSeat(string cardNo, string seatNum, string readingRoomNum)
 {
     try
     {
         lock (this.client)
         {
             client.Connect();
             request            = new SocketRequest();
             request.MethodName = "ChangeSeat";
             request.Parameters.Add(cardNo);
             request.Parameters.Add(seatNum);
             request.Parameters.Add(readingRoomNum);
             request.SubSystem = TcpSeatManageSubSystem.WeiXinSeatBespeak;
             request.Target    = schoolNum;
             request.MsgType   = TcpMsgDataType.Relay;
             if (request != null)
             {
                 client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request));
                 Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName);
             }
             autoConnectEvent.WaitOne(20000);
             if (response == null)
             {
                 throw new Exception("连接超时。");
             }
             else if (!isError && response.MethodName.Equals("ChangeSeat") && string.IsNullOrEmpty(response.ErrorMsg))
             {
                 return(response.Result.ToString());
             }
             else if (!string.IsNullOrEmpty(response.ErrorMsg))
             {
                 throw new Exception(response.ErrorMsg);
             }
             else
             {
                 return(null);
             }
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         client.Disconnect();
         request  = null;
         response = null;
     }
 }
Exemple #16
0
        void Main()
        {
            FleckLog.Level = LogLevel.Debug;

            var server = new WebSocketServer("wss://0.0.0.0:8181");
            var cert   = CertManager.GetCert("localhost", TimeSpan.FromDays(3650), "devpwd", AppDomain.CurrentDomain.BaseDirectory + "cert.dat");

            CertManager.ActivateCert(cert);
            server.Certificate         = cert;
            server.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls11 | System.Security.Authentication.SslProtocols.Tls12;
            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Open!");
                    allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("Close!");
                    allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    try
                    {
                        var rq = SocketRequest.DeserializeObject(message);
                        switch (rq.cmd.ToLower())
                        {
                        case "start":
                            StartSign(message, socket);
                            break;

                        default:
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        SocketReponse socketReponse = new SocketReponse();
                        socketReponse.Code          = 1;
                        socketReponse.Message       = ex.Message;
                        socket.Send(socketReponse.ToString());
                    }

                    Console.WriteLine(message);
                };
            });
        }
Exemple #17
0
 public bool UpdateBookLogsState(int bookNo)
 {
     // AsyncTcpClient.AsyncTcpClient client = new AsyncTcpClient.AsyncTcpClient(ip.IP, ip.Port);
     try
     {
         lock (this.client)
         {
             client.Connect();
             request            = new SocketRequest();
             request.MethodName = "UpdateBookLogsState";
             request.Parameters.Add(bookNo);
             request.SubSystem = TcpSeatManageSubSystem.WeiXinSeatBespeak;
             request.Target    = schoolNum;
             request.MsgType   = TcpMsgDataType.Relay;
             if (request != null)
             {
                 client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request));
                 Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName);
             }
             autoConnectEvent.WaitOne(20000);
             if (response == null)
             {
                 throw new Exception("连接超时。");
             }
             else if (!isError && response.MethodName.Equals("UpdateBookLogsState") && string.IsNullOrEmpty(response.ErrorMsg))
             {
                 return((bool)response.Result);
             }
             else if (!string.IsNullOrEmpty(response.ErrorMsg))
             {
                 throw new Exception(response.ErrorMsg);
             }
             else
             {
                 return(false);
             }
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         client.Disconnect();
         request  = null;
         response = null;
     }
 }
Exemple #18
0
        public InterceptorHandleResult PreHandle(SocketRequest socketRequest)
        {
            string controllerName = socketRequest.Controller.GetType().Name;
            string actionName     = socketRequest.Action;

            if (socketRequest.Controller.GetType().Name.Equals("AuthorizationController") ||
                socketRequest.Controller.GetType().Name.Equals("ServerInfoController"))
            {
                return(new InterceptorHandleResult(false, true, "", ""));
            }

            var paramToken = socketRequest.Parameters.FirstOrDefault(p => p.Name.Equals("authorization"));

            if (paramToken == null)
            {
                return(new InterceptorHandleResult(true, false, "Unauthorized. Check 'authorization' parameter in request body", false));
            }

            string token = paramToken.Value.ToString();

            if (!TokenRepository.Instance.IsValid(token))
            {
                return(new InterceptorHandleResult(true, false, "Invalid or expired token. Check 'authorization' parameter in request body", ""));
            }

            var userToken = TokenRepository.Instance.GetToken(token);
            var user      = userToken.User;

            if (user.IsRolesAccessControllerEnabled)
            {
                var role = user.Roles.FirstOrDefault(r => r.Controller.Equals(controllerName) && r.ActionName.Equals(actionName));
                if (role == null)
                {
                    return(new InterceptorHandleResult(false, true, "Access granted", ""));
                }

                if (role.EnableAccess)
                {
                    return(new InterceptorHandleResult(false, true, "Access granted", ""));
                }
                else
                {
                    return(new InterceptorHandleResult(true, false, "Access danied", ""));
                }
            }

            return(new InterceptorHandleResult(false, true, "Access granted", ""));
        }
Exemple #19
0
 public SeatManage.ClassModel.ReaderInfo CheckAndGetReaderInfo(UserInfo user)
 {
     try
     {
         lock (this.client)
         {
             client.Connect();//连接
             request            = new SocketRequest();
             request.MethodName = "CheckAndGetReaderInfo";
             request.Parameters.Add(user);
             request.SubSystem = TcpSeatManageSubSystem.WeiXinSeatBespeak;
             request.Target    = schoolNum;
             request.MsgType   = TcpMsgDataType.Relay;
             if (request != null)
             {
                 client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request));
                 Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName);
             }
             autoConnectEvent.WaitOne(20000);
             if (response == null)
             {
                 throw new Exception("连接超时。");
             }
             else if (!isError && response.MethodName.Equals("CheckAndGetReaderInfo") && string.IsNullOrEmpty(response.ErrorMsg))
             {
                 return(response.Result as ReaderInfo);
             }
             else if (!string.IsNullOrEmpty(response.ErrorMsg))
             {
                 throw new Exception(response.ErrorMsg);
             }
             else
             {
                 return(null);
             }
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         request  = null;
         response = null;
         client.Disconnect();
     }
 }
    private void HandldCommonTask(SocketTask task)
    {
        if (task.request.type == BaseSocketRequestType.Common_Socket_Request)
        {
            SocketRequest sockReq = task.request as SocketRequest;

            //记录下已经发送数据的 Task
            TaskQueue[sockReq.Act] = task;
            //send to server
            if (task.respType != TaskResponse.Donot_Send)
            {
                ConsoleEx.DebugLog("Socket to be sent : " + sockReq.toJson());
                Conn.Write(sockReq.toJson());
            }
        }
    }
        private void ResolveActionParameters(ref SocketRequest request)
        {
            foreach (ParameterInfo pi in method.GetParameters())
            {
                if (pi.ParameterType == typeof(SocketRequest))
                {
                    request.AddParameter(new RequestParameter("request", request));
                    continue;
                }

                if (!request.Parameters.Any(rp => rp.Name.Equals(pi.Name)))
                {
                    throw new Exception($"The parameter '{pi.Name}', required on {request.Controller.GetType().Name}/{request.Action}, was not received");
                }
            }
        }
Exemple #22
0
 /// <summary>
 /// 推送消息处理
 /// </summary>
 /// <param name="msg"></param>
 private void PubshMsg(SocketMsgBase msg)
 {
     try
     {
         if (msg is SocketRequest)
         {
             SocketRequest srMsg = msg as SocketRequest;
             appPush.MsgPush((string)srMsg.Parameters[0]);
             Console.WriteLine("{0:M} {1:t}:推送用户消息:{2}", DateTime.Now, DateTime.Now, (string)srMsg.Parameters[0]);
         }
     }
     catch (Exception ex)
     {
         WriteLog.Write(string.Format("PubshMsg执行遇到异常:{0},异常来自:{1}", ex.Message, ex.Source));
     }
 }
Exemple #23
0
 public Dictionary <string, ReadingRoomSeatUsedState_Ex> GetAllRoomSeatUsedState()
 {
     try
     {
         lock (this.client)
         {
             client.Connect();
             request            = new SocketRequest();
             request.MethodName = "GetAllRoomSeatUsedState";
             request.SubSystem  = TcpSeatManageSubSystem.WeiXinSeatBespeak;
             request.Target     = schoolNum;
             request.MsgType    = TcpMsgDataType.Relay;
             if (request != null)
             {
                 client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request));
                 Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName);
             }
             autoConnectEvent.WaitOne(20000);
             if (response == null)
             {
                 throw new Exception("连接超时。");
             }
             else if (!isError && response.MethodName.Equals("GetAllRoomSeatUsedState") && string.IsNullOrEmpty(response.ErrorMsg))
             {
                 return(response.Result as Dictionary <string, ReadingRoomSeatUsedState_Ex>);
             }
             else if (!string.IsNullOrEmpty(response.ErrorMsg))
             {
                 throw new Exception(response.ErrorMsg);
             }
             else
             {
                 return(null);
             }
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         client.Disconnect();
         request  = null;
         response = null;
     }
 }
Exemple #24
0
        public static byte[] Serialize <T>(this SocketRequest <T> obj)
        {
            byte[] data;

            using (var stream = new MemoryStream())
            {
                var typedata  = ASCIIEncoding.ASCII.GetBytes(obj.TypeData);
                var seporator = ASCIIEncoding.ASCII.GetBytes("|");
                stream.Write(typedata, 0, typedata.Length);
                stream.Write(seporator, 0, seporator.Length);

                Serializer.Serialize(stream, obj);
                data = stream.ToArray();
            }

            return(data);
        }
Exemple #25
0
    public void TipToDealer()
    {
        string requestStringData = "{\"userId\":\"" + ((int.Parse(PlayerManager.instance.GetPlayerGameData().userId)).ToString() + "\"," +
                                                       "\"tableId\":\"" + int.Parse(TABLE_ID)).ToString() + "\"}";

        Debug.Log("i am herejhdsf   " + requestStringData);
        object requestObjectData = Json.Decode(requestStringData);

        SocketRequest request = new SocketRequest();

        request.emitEvent = "allTipData";

        request.plainDataToBeSend    = null;
        request.jsonDataToBeSend     = requestObjectData;
        request.requestDataStructure = requestStringData;
        socketRequest.Add(request);
    }
        private SocketRequest GetRequestSocket()
        {
            if (requestBody == null)
            {
                return(null);
            }
            SocketRequest request = null;

            try
            {
                string path = requestBody.Action;
                controllerName = requestBody.Controller;
                actionName     = requestBody.Action;

                request = new SocketRequest();
                request.SetClientSocket(clientSocket);
                request.Action     = actionName;
                request.Controller = controllerManager.InstantiateController(controllerName, requestBody);

                var parameters = typedObjManager.FillParameters(requestBody.Parameters,
                                                                actionName, request.Controller);

                if (parameters != null)
                {
                    for (int i = 0; i < parameters.Count; i++)
                    {
                        request.AddParameter(parameters[i]);
                    }
                }

                if (!typedObjManager.ExistsAction(actionName, controllerName))
                {
                    throw new Exception($"Action '{actionName}' not exists in controller '{controllerName}'");
                }

                return(request);
            }
            catch (Exception ex)
            {
                logger.WriteLog(ex.Message + "\n" + ex.StackTrace, controllerName, actionName, ServerLogType.ERROR);
                request.HasErrors            = true;
                request.InternalErrorMessage = ex.Message;
                return(request);
            }
        }
Exemple #27
0
    // EMIT_METHODS ---------------------------------------------------------------------------------------------------------------------------------------------------------


    #region EMIT_METHODS


    public void SendTopUpRequest(int coinsToAdd)
    {
        string requestStringData = "{\"userId\":\"" + PlayerManager.instance.GetPlayerGameData().userId + "\"," +
                                   "\"tableId\":\"" + TABLE_ID + "\"," +
                                   "\"coins\":\"" + coinsToAdd + "\"}";


        object requestObjectData = Json.Decode(requestStringData);

        SocketRequest request = new SocketRequest();

        request.emitEvent = "topUp";

        request.plainDataToBeSend    = null;
        request.jsonDataToBeSend     = requestObjectData;
        request.requestDataStructure = requestStringData;
        socketRequest.Add(request);
    }
Exemple #28
0
        /// <summary>
        /// Logs and saves an HTTP <see cref="SocketRequest"/>
        /// </summary>
        /// <param name="request">The <see cref="SocketRequest"/> to be traced, and logged.</param>
        public void TraceSocketRequest(SocketRequest request)
        {
            var httpTrace = new HttpTrace
            {
                ClientIPAddress = request.IPAddress,
                ContentSize     = request.ContentLength,
                HttpCommand     = request.HttpCommand,
                RemoteUri       = request.RemoteUri,
                RequestDate     = request.RequestDateTime,
                StatusCode      = request.StatusCode,
                Method          = request.Method
            };

            this.HttpTraceRepository.CreateTrace(httpTrace);
            this.HttpTraceRepository.SaveChanges();

            this.GUI.TraceViewModel.CurrentTrace = httpTrace;
        }
Exemple #29
0
    public void RequestForMatchHistory()
    {
        FoldData requestData = new FoldData();

        requestData.userId  = "" + PlayerManager.instance.GetPlayerGameData().userId;
        requestData.tableId = TABLE_ID;

        string requestStringData = JsonMapper.ToJson(requestData);
        object requestObjectData = Json.Decode(requestStringData);

        SocketRequest request = new SocketRequest();

        request.emitEvent            = "matchPlayLogs";
        request.plainDataToBeSend    = null;
        request.jsonDataToBeSend     = requestObjectData;
        request.requestDataStructure = requestStringData;
        socketRequest.Add(request);
    }
        public object RunAction(string receivedData, SocketRequest request)
        {
            SocketAppServerClient.RequestBody rb = JsonConvert.DeserializeObject <SocketAppServerClient.RequestBody>(receivedData,
                                                                                                                     AppServerConfigurator.SerializerSettings);

            if (rb.Controller.Equals("ServerInfoController") &&
                rb.Action.Equals("FullServerInfo"))
            {
                return(new ServerInfoController().FullServerInfo());
            }

            string    cacheResultKey = BuildCacheResultKey(rb);
            SubServer targetServer   = GetAvailableSubServer();

            if (targetServer == null)
            {
                CheckAllocateNewInstance();

                if (retried)
                {
                    return(ResolveResultOnUreachableServer(cacheResultKey));
                }
                else
                {
                    retried = true;
                    return(RunAction(receivedData, request));
                }
            }

            using (ISocketClientConnection client = BuildClient(targetServer))
            {
                client.SendRequest(rb);

                SocketAppServerClient.OperationResult result = client.GetResult();

                if (EnabledCachedResultsForUnreachableServers)
                {
                    CacheRepository <SocketAppServerClient.OperationResult> .Set(cacheResultKey, result, 380);
                }

                targetServer.RefreshLifetimeIfHas();
                return(ActionResult.Json(result));
            }
        }