void SetClientInfo(HubClient hubClient) { if (InvokeRequired) { Invoke(new Action <HubClient>(SetClientInfo), hubClient); } else { var seq = from HubClientEnvironment hce in m_ndxerClientEnv.Source.Enumerate() where hce.ClientID == hubClient.ID orderby hce.CreationTime descending select hce; HubClientEnvironment clEnv = seq.First(); var clStatus = m_ndxerStatus.Get(hubClient.ID) as ClientStatus; m_lblContact.Text = hubClient.ContactName; m_lblCreationTime.Text = GetComprehensiveTime(hubClient.CreationTime); m_lblEMail.Text = hubClient.ContaclEMail; m_lblHubArchitecture.Text = AppArchitectures.GetArchitectureName(clEnv.HubArchitecture); m_lblHubVersion.Text = clEnv.HubVersion; m_lblLastActivity.Text = GetComprehensiveTime(clStatus.LastSeen); m_lblMachineName.Text = clEnv.MachineName; m_lblOSArchitecture.Text = clEnv.Is64BitOperatingSystem ? "64 Bits" : "32 Bits"; m_lblOSVersion.Text = clEnv.OSVersion; m_lblPhone.Text = hubClient.ContactPhone; m_lblStatus.Text = ClientStatuses.GetStatusName(clStatus.Status); m_lblUserName.Text = clEnv.UserName; } }
/// <summary> /// Разрешает дальнейшую работу с подключением /// </summary> protected void StartConnection() { ClientStatus = ClientStatuses.Connected; ClientAction(new ClientEventArgs() { Command = ClientActions.Connected, Connection = this }); }
protected override string[] GetContent() { return(new[] { ID.ToString("X"), ClientStatuses.GetStatusName(Status), LastSeen.ToString(), SentMsgCount.ToString(), ReceivedMsgCount.ToString() }); }
public virtual void CleanUp() { ClientStatus = ClientStatuses.ClientFree; isPendingReceiveIO = false; //isPendingSendIO = false; isPendingCloseIO = false; mre_WaitLock.Set(); _socket = null; isPendingCloseIO = false; }
public void AddStatus(Enum.ClientStatus _status, int _value, long _timeout) { var timeout = _timeout > 0 ? Common.Clock + _timeout : 0; if (ClientStatuses.ContainsKey(_status)) { ClientStatuses[_status].Value = _value; ClientStatuses[_status].Timeout = timeout; } else { var status = new Structures.ClientStatus(_status, _value, timeout); ClientStatuses.TryAdd(_status, status); CombatStats.AddClientStatusStats(status); } }
/// <summary> /// Устанавливает точку подключения клиента /// </summary> /// <param name="AcceptedSocket">Сокет подключения клиента</param> internal void SetAcceptSocket(Socket AcceptedSocket) { if (ClientStatus != ClientStatuses.ClientFree) { throw new InvalidOperationException("Установка нового сокета подключения невозможно, т.к. текущее подключение занято другим клиентом"); } ClientStatus = ClientStatuses.Connecting; _socket = AcceptedSocket ?? throw new ArgumentNullException("AcceptedSocket"); ClientAction(new ClientEventArgs() { Command = ClientActions.Connecting, Connection = this }); }
public void RemoveStatus(Enum.ClientStatus _status) { Structures.ClientStatus status; ClientStatuses.TryRemove(_status, out status); if (status != null) { if (status.Type == Enum.ClientStatus.TransformationTimeout) { SetDisguise(null, 0); } else { CombatStats.RemoveClientStatusStats(status); } } }
/// <summary> /// Инциализирует объект класса /// </summary> protected OnConnection() { ClientStatus = ClientStatuses.ClientFree; _aOperation = AsyncOperationManager.CreateOperation(null); // Доступ из параллельного потока mre_WaitLock = new ManualResetEventSlim(true, 10); _sReceiveEventArgs = new SocketAsyncEventArgs(); _sReceiveEventArgs.Completed += ArgsHandler_Completed; _sSendEventArgs = new SocketAsyncEventArgs(); _sSendEventArgs.Completed += ArgsHandler_Completed; _sCloseArgs = new SocketAsyncEventArgs(); _sCloseArgs.Completed += ArgsHandler_Completed; }
private void ClientStatus_DatumReplaced(IDataRow datum) { if (InvokeRequired) { BeginInvoke(new Action <IDataRow>(ClientStatus_DatumReplaced), datum); } else { TreeNode selNode = m_tvClients.SelectedNode; if (selNode != null && selNode.Parent != null && (selNode.Tag as HubClient).ID == datum.ID) { var clStatus = datum as ClientStatus; UpdateStatusButtons(clStatus.Status); m_lblStatus.Text = ClientStatuses.GetStatusName(clStatus.Status); m_lblLastActivity.Text = GetComprehensiveTime(clStatus.LastSeen); } } }
public bool HasStatus(Enum.ClientStatus _status) { return(ClientStatuses.ContainsKey(_status)); }
void ProcessClientStatus(ClientStatus_t status) { Dbg.Assert(!InvokeRequired); var client = m_tvClients.SelectedNode.Tag as HubClient; ManagementMode_t prfMgmnt = AppContext.ClientsManager.GetProfileManagementMode(client.ProfileID); var prf = m_ndxerProfiles.Get(client.ProfileID) as UserProfile; if (prfMgmnt == ManagementMode_t.Auto) { if (MessageBox.Show(this, $"La gestion du profil {prf.Name} sera changée en mode 'manuel'. Poursuivre ?", Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } } AppContext.LogManager.LogUserActivity($"Action utilisateur: Changement du statut du client {ClientsManager.ClientStrID(client.ID)} en {ClientStatuses.GetStatusName(status)}"); AppContext.ClientsManager.SetProfileManagementMode(client.ProfileID, ManagementMode_t.Manual); //maj le status AppContext.ClientsManager.SetClientStatus(client, status); }
public void NetThread() { SessionIDRequest sessionID = new SessionIDRequest(Storage.Network.UserName, Storage.Network.Password); sessionID.SendRequest(); SharedSecretGenerator sharedSecret = new SharedSecretGenerator(); //random byte[16] gen Timer positionUpdater = new Timer(PositionSender, null, Timeout.Infinite, 50); //create position updater Socket networkSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); networkSocket.Connect(Storage.Network.Server, Storage.Network.Port); _stream = new EnhancedStream(networkSocket); Handshake handshake = new Handshake(_stream); handshake.Send(Storage.Network.UserName, Storage.Network.Server, Storage.Network.Port); // connect Storage.Network.IsConnected = true; while (Storage.Network.IsConnected) { switch (_packetIDbuffer = (byte)_stream.ReadByte()) { case 0x00: KeepAlive keepAlive = new KeepAlive(_stream); break; case 0x01: LoginRequest loginRequest = new LoginRequest(_stream); //positionUpdater.Change(0, 50); ClientSettings clientSettings = new ClientSettings(_stream); clientSettings.Send(); break; case 0x03: ChatMessage chatMessage = new ChatMessage(_stream); break; case 0x04: TimeUpdate timeUpdate = new TimeUpdate(_stream); break; case 0x05: EntityEquipment entityEquipment = new EntityEquipment(_stream); break; case 0x06: SpawnPosition spawnPosition = new SpawnPosition(_stream); break; case 0x08: UpdateHealth updateHealth = new UpdateHealth(_stream); break; case 0x09: RespawnPacket respawnPacket = new RespawnPacket(_stream); break; case 0x0D: _playerPositionLook = new PlayerPositionLook(_stream); break; case 0x10: HeldItemChange heldItemChange = new HeldItemChange(_stream); break; case 0x11: UseBed useBed = new UseBed(_stream); break; case 0x12: Animation animation = new Animation(_stream); break; case 0x14: SpawnNamedEntity spawnNamedEntity = new SpawnNamedEntity(_stream); break; case 0x16: CollectItem collectItem = new CollectItem(_stream); break; case 0x17: SpawnObjectVehicle spawnObjectVehicle = new SpawnObjectVehicle(_stream); break; case 0x18: SpawnMob spawnMob = new SpawnMob(_stream); break; case 0x19: SpawnPainting spawnPainting = new SpawnPainting(_stream); break; case 0x1A: SpawnExperienceOrb spawnExperienceOrb = new SpawnExperienceOrb(_stream); break; case 0x1C: EntityVelocity entityVelocity = new EntityVelocity(_stream); break; case 0x1D: DestroyEntity destroyEntity = new DestroyEntity(_stream); break; case 0x1E: Entity entity = new Entity(_stream); break; case 0x1F: EntityRelativeMove entityRelativeMove = new EntityRelativeMove(_stream); break; case 0x20: EntityLook entityLook = new EntityLook(_stream); break; case 0x21: EntityLookRelativeMove entityLookRelativeMove = new EntityLookRelativeMove(_stream); break; case 0x22: EntityTeleport entityTeleport = new EntityTeleport(_stream); break; case 0x23: EntityHeadLook entityHeadLook = new EntityHeadLook(_stream); break; case 0x26: EntityStatus entityStatus = new EntityStatus(_stream); break; case 0x27: AttachEntity attachEntity = new AttachEntity(_stream); break; case 0x28: EntityMetadata entityMetadata = new EntityMetadata(_stream); break; case 0x29: EntityEffect entityEffect = new EntityEffect(_stream); break; case 0x2A: RemoveEntityEffect removeEntityEffect = new RemoveEntityEffect(_stream); break; case 0x2B: SetExperience setExperience = new SetExperience(_stream); break; case 0x33: ChunkData mapChunk = new ChunkData(_stream); break; case 0x34: MultiBlockChange multiBlockChange = new MultiBlockChange(_stream); break; case 0x35: BlockChange blockChange = new BlockChange(_stream); break; case 0x36: BlockAction blockAction = new BlockAction(_stream); break; case 0x37: BlockBreakAnimation blockBreakAnimation = new BlockBreakAnimation(_stream); break; case 0x38: MapChunkBulk mapChunkBulk = new MapChunkBulk(_stream); break; case 0x3C: Explosion explosion = new Explosion(_stream); break; case 0x3D: SoundParticleEffect soundParticleEffect = new SoundParticleEffect(_stream); break; case 0x3E: NamedSoundEffect namedSoundEffect = new NamedSoundEffect(_stream); break; case 0x46: ChangeGameState changeGameState = new ChangeGameState(_stream); break; case 0x47: Thunderbolt thunderbolt = new Thunderbolt(_stream); break; case 0x64: OpenWindow openWindow = new OpenWindow(_stream); break; case 0x65: CloseWindow closeWindow = new CloseWindow(_stream); break; case 0x67: SetSlot setSlot = new SetSlot(_stream); break; case 0x68: SetWindowItems setWindowItems = new SetWindowItems(_stream); break; case 0x69: UpdateWindowProperty updateWindowProperty = new UpdateWindowProperty(_stream); break; case 0x6A: ConfirmTransaction confirmTransaction = new ConfirmTransaction(_stream); break; case 0x6B: CreativeInventoryAction creativeInventoryAction = new CreativeInventoryAction(_stream); break; case 0x6C: EnchantItem enchantItem = new EnchantItem(_stream); break; case 0x82: UpdateSign updateSign = new UpdateSign(_stream); break; case 0x83: ItemData itemData = new ItemData(_stream); break; case 0x84: UpdateTileEntity updateTileEntity = new UpdateTileEntity(_stream); break; case 0xC8: IncrementStatistic incrementStatistic = new IncrementStatistic(_stream); break; case 0xC9: PlayerListItem playerListItem = new PlayerListItem(_stream); break; case 0xCA: PlayerAbilities playerAbilities = new PlayerAbilities(_stream); break; case 0xCB: TabComplete tabcomplete = new TabComplete(_stream); break; case 0xFA: PluginMessage pluginMessage = new PluginMessage(_stream); break; case 0xFC: EncryptionKeyResponse encryptionKeyResponse = new EncryptionKeyResponse(_stream); encryptionKeyResponse.Get(); _stream = new AesStream(networkSocket, _stream, sharedSecret.Get); ClientStatuses clientStatuses = new ClientStatuses(_stream); clientStatuses.Send(0); break; case 0xFD: EncryptionKeyRequest encryptionKeyRequest = new EncryptionKeyRequest(_stream, sharedSecret.Get, sessionID.GetID(), Storage.Network.UserName); // encryptionKeyResponse = new EncryptionKeyResponse(_stream); encryptionKeyResponse.Send(encryptionKeyRequest.GetEncSharedSecret(), encryptionKeyRequest.GetEncToken()); break; case 0xFF: positionUpdater = null; DisconnectKick disconnectKick = new DisconnectKick(_stream); networkSocket.Disconnect(false); break; default: throw new Exception("We got a Unknown Packet (" + _packetIDbuffer + ")from the Server. This should not happen: Error in Packet parser"); } } }