public Response Login(string ecCode, string userId, string userPw, string sIp, int moduleId, int workId, string Ip, out IRemotingServer remotingObj) { remotingObj = null; Response response = this.ExecLogin(ecCode, userId, userPw, sIp, moduleId, workId, out remotingObj, true); CallContext.SetData("ClientIp", Ip); return response; }
/// <summary> /// Initializes the channel. /// </summary> /// <param name="server">CoreRemoting sever</param> public void Init(IRemotingServer server) { _server = server ?? throw new ArgumentNullException(nameof(server)); _webSocketServer = new WebSocketServer(_server.Config.NetworkPort, secure: false); _webSocketServer.AddWebSocketService( path: "/rpc", initializer: () => new RpcWebsocketSharpBehavior(_server)); }
public void Connect(object credentials) { object token; IRemotingServer server = (IRemotingServer)Activator.GetObject(typeof(IRemotingServer), _serviceUrl.ToString()); _connection = server.NewClient(credentials, out token); _token = token; _serverConnection = new RemotingMBeanServerConnection(_connection, _token); _fetcher = new NotificationFetcher(_fetcherConfig, _connection, _serverConnection); }
private bool GetExistRemotingServerObject(int workId, out IRemotingServer serverObj) { bool flag = true; OnlineUserManager manager = new OnlineUserManager(); serverObj = (RemotingServer)manager.GetExistRemotingServer(workId); if (serverObj == null) { manager.Remove(workId); flag = false; } return(flag); }
public Response Login(string ecCode, string userId, string userPw, string sIp, int moduleId, int workId, string Ip, string Port, out IRemotingServer remotingObj) { remotingObj = null; string data = Ip + ":" + Port; bool flag = true; if (!string.IsNullOrEmpty(Const.IsNeedPWDUpdate) && "0".Equals(Const.IsNeedPWDUpdate)) { flag = false; } Response response = this.ExecLogin(ecCode, userId, userPw, sIp, moduleId, workId, out remotingObj, !flag); CallContext.SetData("ClientIp", data); return response; }
private RemotingConnector(SerializationInfo info, StreamingContext context) { string connectionId = info.GetString("connectionId"); _serviceUrl = new Uri(info.GetString("serviceUrl")); string typeString = info.GetString("tokenType"); if (typeString != null) { Type tokenType = Type.GetType(typeString, true); _token = info.GetValue("token", tokenType); } _fetcherConfig = (NotificationFetcherConfig)info.GetValue("fetcherConfig", typeof(NotificationFetcherConfig)); if (connectionId != null) { IRemotingServer server = (IRemotingServer)Activator.GetObject(typeof(IRemotingServer), _serviceUrl.ToString()); _connection = server.Reconnect(connectionId); _serverConnection = new RemotingMBeanServerConnection(_connection, _token); _fetcher = new NotificationFetcher(_fetcherConfig, _connection, _serverConnection); } }
/// <summary> /// Creates a new session. /// </summary> /// <param name="clientPublicKey">Client's public key</param> /// <param name="server">Server instance</param> /// <param name="rawMessageTransport">Component that does the raw message transport</param> /// <returns>The newly created session</returns> public RemotingSession CreateSession(byte[] clientPublicKey, IRemotingServer server, IRawMessageTransport rawMessageTransport) { if (server == null) { throw new ArgumentException(nameof(server)); } if (rawMessageTransport == null) { throw new ArgumentNullException(nameof(rawMessageTransport)); } var session = new RemotingSession( KeySize, clientPublicKey, server, rawMessageTransport); _sessions.TryAdd(session.SessionId, session); return(session); }
public static void CutOff() { RemotingClient.app = null; }
public ServerHeartbeatProcessor(IRemotingServer remotingServer) { _remotingServer = remotingServer; }
/// <summary> /// Initializes the RPC service instance. /// </summary> /// <param name="server">Remoting server instance, which is hosting the service to call</param> public RpcWebsocketSharpBehavior(IRemotingServer server) { _server = server ?? throw new ArgumentException(nameof(server)); }
/// <summary> /// Frees managed resources. /// </summary> public void Dispose() { _server = null; }
public Response CheckSendMsgLogin(string ecCode, string userId, string userPw, string sIp, int moduleId, int workId, string Ip, string Port, out IRemotingServer remotingObj, string verfNum, string verfCode) { throw new NotImplementedException(); }
public Response Login(string userId, string userPw, string sIp, int moduleId, int workId, out IRemotingServer remotingObj) { return this.Login("", userId, userPw, sIp, moduleId, workId, out remotingObj); }
/// <summary> /// Creates a new instance of the RemotingSession class. /// </summary> /// <param name="keySize">Key size of the RSA keys for asymmetric encryption</param> /// <param name="clientPublicKey">Public key of this session's client</param> /// <param name="server">Server instance, that hosts this session</param> /// <param name="rawMessageTransport">Component, that does the raw message transport (send and receive)</param> internal RemotingSession(int keySize, byte[] clientPublicKey, IRemotingServer server, IRawMessageTransport rawMessageTransport) { _sessionId = Guid.NewGuid(); _lastActivityTimestamp = DateTime.Now; _isAuthenticated = false; _keyPair = new RsaKeyPair(keySize); CreatedOn = DateTime.Now; _remoteDelegateInvocationEventAggregator = new RemoteDelegateInvocationEventAggregator(); _server = server ?? throw new ArgumentNullException(nameof(server)); _delegateProxyFactory = _server.ServiceRegistry.GetService <IDelegateProxyFactory>(); _delegateProxyCache = new ConcurrentDictionary <Guid, IDelegateProxy>(); _rawMessageTransport = rawMessageTransport ?? throw new ArgumentNullException(nameof(rawMessageTransport)); _clientPublicKeyBlob = clientPublicKey; _rawMessageTransport.ReceiveMessage += OnReceiveMessage; _rawMessageTransport.ErrorOccured += OnErrorOccured; MessageEncryption = clientPublicKey != null; WireMessage completeHandshakeMessage; if (MessageEncryption) { var encryptedSessionId = RsaKeyExchange.EncryptSecret( keySize: _server.SessionRepository.KeySize, receiversPublicKeyBlob: clientPublicKey, secretToEncrypt: _sessionId.ToByteArray(), sendersPublicKeyBlob: _keyPair.PublicKey); var rawContent = _server.Serializer.Serialize(encryptedSessionId); var signedMessageData = new SignedMessageData() { MessageRawData = rawContent, Signature = RsaSignature.CreateSignature( keySize: keySize, sendersPrivateKeyBlob: _keyPair.PrivateKey, rawData: rawContent) }; var rawData = _server.Serializer.Serialize(typeof(SignedMessageData), signedMessageData); completeHandshakeMessage = new WireMessage { MessageType = "complete_handshake", Data = rawData }; } else { completeHandshakeMessage = new WireMessage { MessageType = "complete_handshake", Data = _sessionId.ToByteArray() }; } _remoteDelegateInvocationEventAggregator.RemoteDelegateInvocationNeeded += (delegateType, uniqueCallKey, handlerKey, arguments) => { var sharedSecret = MessageEncryption ? _sessionId.ToByteArray() : null; var remoteDelegateInvocationMessage = new RemoteDelegateInvocationMessage { UniqueCallKey = uniqueCallKey, HandlerKey = handlerKey, DelegateArguments = arguments }; var remoteDelegateInvocationWebsocketMessage = _server.MessageEncryptionManager .CreateWireMessage( serializedMessage: _server.Serializer.Serialize(remoteDelegateInvocationMessage), serializer: _server.Serializer, sharedSecret: sharedSecret, keyPair: _keyPair, messageType: "invoke"); // Invoke remote delegate on client _rawMessageTransport.SendMessage( _server.Serializer.Serialize(remoteDelegateInvocationWebsocketMessage)); return(null); }; _rawMessageTransport.SendMessage(_server.Serializer.Serialize(completeHandshakeMessage)); }
private bool GetExistRemotingServerObject(int workId, out IRemotingServer serverObj) { bool flag = true; OnlineUserManager manager = new OnlineUserManager(); serverObj = (RemotingServer) manager.GetExistRemotingServer(workId); if (serverObj == null) { manager.Remove(workId); flag = false; } return flag; }
public Response Login(string userId, string userPw, string sIp, int moduleId, int workId, out IRemotingServer remotingObj) { return(this.Login("", userId, userPw, sIp, moduleId, workId, out remotingObj)); }
public Response Login(string ecCode, string userId, string userPw, string sIp, int moduleId, int workId, string Ip, out IRemotingServer remotingObj) { remotingObj = null; Response response = this.ExecLogin(ecCode, userId, userPw, sIp, moduleId, workId, out remotingObj, true); CallContext.SetData("ClientIp", Ip); return(response); }
private Response ExecLogin(string ecCode, string userId, string userPw, string clientIp, int moduleId, int workId, out IRemotingServer remotingServerObject, bool isOldInterfaceFlag) { remotingServerObject = null; Response response = new Response(); string format = "{0}|{1}|{2}"; try { new LogHelper().WriteLog(new LogMsg("RemotingLogin", "ExecLogin", userId + "," + userPw + "," + clientIp)); string errorMessage = string.Empty; if (!this.CheckOnline(ref errorMessage)) { ErrorMsg msg = new ErrorMsg("RemotingLogin", "ExecLogin", errorMessage); new LogHelper().WriteError(msg); response.ErrorMsg = errorMessage; return(response); } if (!this.ADCCheck(workId, ecCode, userId, userPw, ref errorMessage)) { ErrorMsg msg2 = new ErrorMsg("RemotingLogin", "ExecLogin", errorMessage); new LogHelper().WriteError(msg2); response.ErrorMsg = errorMessage; return(response); } if (((workId == -1) || !this.GetExistRemotingServerObject(workId, out remotingServerObject)) || !this.IsDbExistUser(workId)) { new LogHelper().WriteLog(new LogMsg("RemotingLogin", "ExecLogin", "开始新的重登," + workId.ToString())); moduleId = this.ChangeModuleIdFromConfiger(moduleId); UserInfoEntity userInfoEntity = new UserInfoEntity(); if (!this.GetNewUser(userId, userPw, clientIp, moduleId, OnlineUserManager.MaxWorkId + 1, isOldInterfaceFlag, ref userInfoEntity, out errorMessage)) { ErrorMsg msg3 = new ErrorMsg("RemotingLogin", "ExecLogin", errorMessage); new LogHelper().WriteError(msg3); response.ErrorMsg = errorMessage; return(response); } response.ErrorMsg = errorMessage; remotingServerObject = this.CreateRemotingServer(userInfoEntity, userId, moduleId); response.ResultCode = 0L; response.SvcContext = string.Format(format, userInfoEntity.WorkId, userInfoEntity.UserName, SecurityHelper.Key); CarDataInfoBuffer.UpdateLoginUserCarInfo(userId); new LogHelper().WriteLog(new LogMsg("RemotingLogin", "ExecLogin", "结束新的重登," + userInfoEntity.WorkId.ToString())); return(response); } new LogHelper().WriteLog(new LogMsg("RemotingLogin", "ExecLogin", "开始原有还存在对象登入," + workId.ToString())); response.ResultCode = 0L; string userName = this.GetUserName(userId); response.SvcContext = string.Format(format, workId.ToString(), userName, SecurityHelper.Key); new LogHelper().WriteLog(new LogMsg("RemotingLogin", "ExecLogin", "结束原有还存在对象登入," + workId.ToString())); } catch (Exception exception) { ErrorMsg msg4 = new ErrorMsg("RemotingLogin", "ExecLogin", exception.Message + exception.StackTrace); new LogHelper().WriteError(msg4); response.ErrorMsg = exception.Message; } return(response); }
public Response SendMsgLogin(string ecCode, string userId, string userPw, string sIp, int moduleId, int workId, string Ip, string Port, out IRemotingServer remotingObj) { throw new NotImplementedException(); }
public Response Login(string ecCode, string userId, string userPw, string sIp, int moduleId, int workId, string Ip, string Port, out IRemotingServer remotingObj) { remotingObj = null; string data = Ip + ":" + Port; bool flag = true; if (!string.IsNullOrEmpty(Const.IsNeedPWDUpdate) && "0".Equals(Const.IsNeedPWDUpdate)) { flag = false; } Response response = this.ExecLogin(ecCode, userId, userPw, sIp, moduleId, workId, out remotingObj, !flag); CallContext.SetData("ClientIp", data); return(response); }
public RegTmProcessor(IRemotingServer remotingServer) { this.remotingServer = remotingServer; this.checkAuthHandler = EnhancedServiceLoader.Load <IRegisterCheckAuthHandler>(); }
private Response ExecLogin(string ecCode, string userId, string userPw, string clientIp, int moduleId, int workId, out IRemotingServer remotingServerObject, bool isOldInterfaceFlag) { remotingServerObject = null; Response response = new Response(); string format = "{0}|{1}|{2}"; try { new LogHelper().WriteLog(new LogMsg("RemotingLogin", "ExecLogin", userId + "," + userPw + "," + clientIp)); string errorMessage = string.Empty; if (!this.CheckOnline(ref errorMessage)) { ErrorMsg msg = new ErrorMsg("RemotingLogin", "ExecLogin", errorMessage); new LogHelper().WriteError(msg); response.ErrorMsg = errorMessage; return response; } if (!this.ADCCheck(workId, ecCode, userId, userPw, ref errorMessage)) { ErrorMsg msg2 = new ErrorMsg("RemotingLogin", "ExecLogin", errorMessage); new LogHelper().WriteError(msg2); response.ErrorMsg = errorMessage; return response; } if (((workId == -1) || !this.GetExistRemotingServerObject(workId, out remotingServerObject)) || !this.IsDbExistUser(workId)) { new LogHelper().WriteLog(new LogMsg("RemotingLogin", "ExecLogin", "开始新的重登," + workId.ToString())); moduleId = this.ChangeModuleIdFromConfiger(moduleId); UserInfoEntity userInfoEntity = new UserInfoEntity(); if (!this.GetNewUser(userId, userPw, clientIp, moduleId, OnlineUserManager.MaxWorkId + 1, isOldInterfaceFlag, ref userInfoEntity, out errorMessage)) { ErrorMsg msg3 = new ErrorMsg("RemotingLogin", "ExecLogin", errorMessage); new LogHelper().WriteError(msg3); response.ErrorMsg = errorMessage; return response; } response.ErrorMsg = errorMessage; remotingServerObject = this.CreateRemotingServer(userInfoEntity, userId, moduleId); response.ResultCode = 0L; response.SvcContext = string.Format(format, userInfoEntity.WorkId, userInfoEntity.UserName, SecurityHelper.Key); CarDataInfoBuffer.UpdateLoginUserCarInfo(userId); new LogHelper().WriteLog(new LogMsg("RemotingLogin", "ExecLogin", "结束新的重登," + userInfoEntity.WorkId.ToString())); return response; } new LogHelper().WriteLog(new LogMsg("RemotingLogin", "ExecLogin", "开始原有还存在对象登入," + workId.ToString())); response.ResultCode = 0L; string userName = this.GetUserName(userId); response.SvcContext = string.Format(format, workId.ToString(), userName, SecurityHelper.Key); new LogHelper().WriteLog(new LogMsg("RemotingLogin", "ExecLogin", "结束原有还存在对象登入," + workId.ToString())); } catch (Exception exception) { ErrorMsg msg4 = new ErrorMsg("RemotingLogin", "ExecLogin", exception.Message + exception.StackTrace); new LogHelper().WriteError(msg4); response.ErrorMsg = exception.Message; } return response; }
/// <summary> /// Stops listening and frees managed resources. /// </summary> public void Dispose() { StopListening(); _webSocketServer = null; _server = null; }
public ServerOnRequestProcessor(IRemotingServer remotingServer, ITransactionMessageHandler transactionMessageHandler) { _remotingServer = remotingServer; _transactionMessageHandler = transactionMessageHandler; }